Testing Cloud Native Applications Pini Reznik, @pini42 October 2016 - - PowerPoint PPT Presentation

testing cloud native applications
SMART_READER_LITE
LIVE PREVIEW

Testing Cloud Native Applications Pini Reznik, @pini42 October 2016 - - PowerPoint PPT Presentation

Testing Cloud Native Applications Pini Reznik, @pini42 October 2016 @pini42 www.container-solutions.com | info@container-solutions.com Some background... @pini42 www.container-solutions.com | info@container-solutions.com @pini42


slide-1
SLIDE 1

www.container-solutions.com | info@container-solutions.com

@pini42

Testing Cloud Native Applications

Pini Reznik, @pini42 October 2016

slide-2
SLIDE 2

www.container-solutions.com | info@container-solutions.com

@pini42

Some background...

slide-3
SLIDE 3

www.container-solutions.com | info@container-solutions.com

@pini42

slide-4
SLIDE 4

www.container-solutions.com | info@container-solutions.com

@pini42

slide-5
SLIDE 5

www.container-solutions.com | info@container-solutions.com

@pini42

slide-6
SLIDE 6

www.container-solutions.com | info@container-solutions.com

@pini42

slide-7
SLIDE 7

www.container-solutions.com | info@container-solutions.com

@pini42

slide-8
SLIDE 8

www.container-solutions.com | info@container-solutions.com

@pini42

What is Cloud Native then?

slide-9
SLIDE 9

www.container-solutions.com | info@container-solutions.com

@pini42

How CNCF defines its role?

The Cloud Native Computing Foundation (CNCF) will harmonize emerging technologies and foster innovation in container packaged, dynamically scheduled, and microservices based application development and operations. The mission of the CNCF is to create and drive the adoption of a new computing paradigm that is optimized for modern distributed systems environments capable of scaling to tens of thousands of self healing multi-tenant nodes.

slide-10
SLIDE 10

www.container-solutions.com | info@container-solutions.com

@pini42

Continuous Delivery pipelines

slide-11
SLIDE 11

www.container-solutions.com | info@container-solutions.com

@pini42

Pre-DevOps

slide-12
SLIDE 12

www.container-solutions.com | info@container-solutions.com

@pini42

DevOps

slide-13
SLIDE 13

www.container-solutions.com | info@container-solutions.com

@pini42

Post-DevOps

slide-14
SLIDE 14

www.container-solutions.com | info@container-solutions.com

@pini42

No manual testing as a principle!

slide-15
SLIDE 15

www.container-solutions.com | info@container-solutions.com

@pini42

Now our journey begins...

slide-16
SLIDE 16

www.container-solutions.com | info@container-solutions.com

@pini42

slide-17
SLIDE 17

www.container-solutions.com | info@container-solutions.com

@pini42

Building Elasticsearch framework for Mesos

slide-18
SLIDE 18

www.container-solutions.com | info@container-solutions.com

@pini42

Conclusion ...

Mesos Frameworks Development is difficult! We need a SDK

slide-19
SLIDE 19

www.container-solutions.com | info@container-solutions.com

@pini42

Possible Mesos Frameworks SDK

  • HTTP APIs
  • Framework template
  • Rapid development environment
  • Libraries with standard functionalities
  • Testing tools
  • Resilience/stress testing
  • Distributed debugging
  • Dependencies between frameworks (like Maven)
  • Built-in infra services (networking, storage, security, load balancing, etc)
  • Unified UI, including frameworks
  • Documentation
  • Workshops and online tutorials
slide-20
SLIDE 20

www.container-solutions.com | info@container-solutions.com

@pini42

Minimesos - First Steps

slide-21
SLIDE 21

www.container-solutions.com | info@container-solutions.com

@pini42

Minimesos - Java API

public class MesosClusterTest { @ClassRule public static MesosClusterTestRule testRule = MesosClusterTestRule.fromFile("src/test/resources/configFiles/testMinimesosFile"); public static MesosCluster cluster = testRule.getMesosCluster(); @Test public void mesosClusterCanBeStarted() throws Exception { JSONObject stateInfo = cluster.getStateInfoJSON(); Assert.assertEquals(3, stateInfo.getInt("activated_slaves")); Assert.assertTrue(cluster.getMesosMasterURL().contains(":5050")); } }

slide-22
SLIDE 22

www.container-solutions.com | info@container-solutions.com

@pini42

Minimesos - Integrations

  • 1. Configuration file
  • 2. CLI
  • 3. Maven plugin
  • 4. Integration with TravisCI, Jenkins, etc.
slide-23
SLIDE 23

www.container-solutions.com | info@container-solutions.com

@pini42

Building ELK Mesos Frameworks

slide-24
SLIDE 24

www.container-solutions.com | info@container-solutions.com

@pini42

ELK (Logstash)

slide-25
SLIDE 25

www.container-solutions.com | info@container-solutions.com

@pini42

ELK (Kibana)

slide-26
SLIDE 26

www.container-solutions.com | info@container-solutions.com

@pini42

Mesos Monkey

Mesos Monkey is a project to test and monitor the applications that are running on your Mesos infrastructure. It exposes a flexible REST based framework to kill, monitor and stress test your applications

slide-27
SLIDE 27

www.container-solutions.com | info@container-solutions.com

@pini42

Mesos Monkey

  • Kill tasks
  • Stress test services
  • Monitor performance
  • Fully customisable,

completely overwritable

  • Start Mesos Monkey
  • Write a JSON file to

define a Monkey “Job”

  • Submit the “job” to an

API

  • Observe and monitor

results

slide-28
SLIDE 28

www.container-solutions.com | info@container-solutions.com

@pini42

Next big project

slide-29
SLIDE 29

www.container-solutions.com | info@container-solutions.com

@pini42

Microservices Demo - Weave Socks

slide-30
SLIDE 30

www.container-solutions.com | info@container-solutions.com

@pini42

Weave Socks Architecture

slide-31
SLIDE 31

www.container-solutions.com | info@container-solutions.com

@pini42

Weave Socks Containers View

slide-32
SLIDE 32

www.container-solutions.com | info@container-solutions.com

@pini42

How do we test the Socks Shop?

  • Unit
  • Component
  • Container
  • APIs
  • Integration
  • Advanced
slide-33
SLIDE 33

www.container-solutions.com | info@container-solutions.com

@pini42

Unit test

  • Same as before microservices
slide-34
SLIDE 34

www.container-solutions.com | info@container-solutions.com

@pini42

Component test

  • Test the service without external dependencies. Use

data fixtures.

slide-35
SLIDE 35

www.container-solutions.com | info@container-solutions.com

@pini42

Container test

  • Controlled injection of (mocked) dependencies.
  • Testing the behaviour under different circumstances.
slide-36
SLIDE 36

www.container-solutions.com | info@container-solutions.com

@pini42

APIs

  • Create API specification to establish a contract between

the producer and an API consumer(we use Swagger )

  • Validate API specification against the endpoints (we

use Dredd)

Dredd is a language-agnostic command-line tool for validating API description document against backend implementation of the API.

slide-37
SLIDE 37

www.container-solutions.com | info@container-solutions.com

@pini42

Integration

  • Private test environments to allow e2e testing (like

minimesos, minukube, docker compose, etc.)

  • Collaborative test environments to test combinations

and groups of services

slide-38
SLIDE 38

www.container-solutions.com | info@container-solutions.com

@pini42

Advanced

  • Stress, performance and other advanced tests
  • Chaos Monkeys
  • Services oriented logging, monitoring, tracing and

debugging

  • A/B testing and Blue/Green or Canary deployments
slide-39
SLIDE 39

www.container-solutions.com | info@container-solutions.com

@pini42

Summary

Two most important recommendations for testing Cloud Native Apps:

  • Build private testing environments
  • Test the API producer/consumer contracts
slide-40
SLIDE 40

www.container-solutions.com | info@container-solutions.com

Demo

slide-41
SLIDE 41

www.container-solutions.com | info@container-solutions.com

Questions?