Slide 1

Slide 1 text

Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords Eberhard Wolff Fellow @ewolff

Slide 2

Slide 2 text

Microservices, DevOps, Continuous Delivery – How Do They Relate?

Slide 3

Slide 3 text

Microservices, DevOps, Continuous Delivery – How Do They Solve Problems?

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

http://microservices-buch.de/ http://microservices-book.com/

Slide 6

Slide 6 text

Microservices?

Slide 7

Slide 7 text

UNIX Philosophy > Write programs that do one thing and do it well > Write programs to work together > Write programs with a common interface

Slide 8

Slide 8 text

Definition Microservice > Independent deployment unit > Separate data handling & storage > Should include UI > Order process, Billing, Catalog… > Process > VM > Docker container Server Micro Service

Slide 9

Slide 9 text

Deployment Monolith > Might be well-structured inside. > But: Can only be deployed as a whole

Slide 10

Slide 10 text

Continuous Delivery: Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Deploy Deploy Deploy Deploy Automated Reproducible Fast

Slide 11

Slide 11 text

Continuous Delivery: Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Deploy Deploy Deploy Deploy Billing

Slide 12

Slide 12 text

Continuous Delivery Pipeline too complex or slow?

Slide 13

Slide 13 text

Continuous Delivery Pipeline too complex or slow? Consider changing the architecture!

Slide 14

Slide 14 text

Microservices: Challenges > 50 or 100 Microservices > Deployment? > Monitoring? > Log Analysis? > Need Automation > Need common foundation for operations > Small deployment units are not enough

Slide 15

Slide 15 text

Continuous Delivery Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Integration Test Microservice Complete System Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing

Slide 16

Slide 16 text

Integration Tests Tests Microservices Unit Tests

Slide 17

Slide 17 text

Microservices can only be deployed independently if tests are independent!

Slide 18

Slide 18 text

Microservices can only be deployed independently if your Continuous Delivery Pipeline works.

Slide 19

Slide 19 text

Microservices + Continuous Delivery!

Slide 20

Slide 20 text

Why all the hassle?

Slide 21

Slide 21 text

Conway‘s Law Architecture copies communication structures of the organization

Slide 22

Slide 22 text

Conway’s Law as a Limit > Organization drives architecture > Teams of experts > i.e. UI, logic & database team > Three technical artifacts

Slide 23

Slide 23 text

E Commerce Shop Change Order Process! UI Logic DB

Slide 24

Slide 24 text

time DB Team Sprint Logic Team Sprint GUI Team Sprint 3 sprints

Slide 25

Slide 25 text

Order Search Billing Team for each business feature Let architecture drive the organization Order Billing Search

Slide 26

Slide 26 text

Deployment Monolith + Conway’s Law Deployment Monolith Stories Technical Coordination Coordinating Releases Stories Stories Order Billing Search

Slide 27

Slide 27 text

Team can deploy without integration Changes can be deployed independently & quickly Strong & enforced modularization Technology stack per Microservice One or many Microservices per Team Synergy Microservices / Conway’s Law Order Search Billing Order Billing Search

Slide 28

Slide 28 text

Microservices Microservice Stories Technical Coordination Microservice Stories Technical Coordination Microservice Stories Technical Coordination Order Billing Search Release Release Release

Slide 29

Slide 29 text

Microservices: Challenges > Deployment? > Monitoring? > Log Analysis? Ops

Slide 30

Slide 30 text

Micro- and Macro- Architecture

Slide 31

Slide 31 text

Macro-Architecture > Global decision > Influence the whole system > i.e. all Microservices > Less Marco-Architecture – less coordination

Slide 32

Slide 32 text

Micro-Architecture > Local decisions > Per Microservice

Slide 33

Slide 33 text

Macro- and Micro- Architecture for Ops > Macro > Define Log Analysis, Monitoring, Deployment tools > Defined globally > Micro > Concrete deployment, monitoring, logging > Defined per team / Microservice

Slide 34

Slide 34 text

Microservices Teams need many technical skills.

Slide 35

Slide 35 text

Microservices Teams need Ops.

Slide 36

Slide 36 text

DevOps

Slide 37

Slide 37 text

DevOps / Microservices > Teams consist primarily of Devs > Devs interested in Docker, ELK ... > ... lots of experience in Ops > More Ops effort

Slide 38

Slide 38 text

Microservices = huge opportunity for Ops!

Slide 39

Slide 39 text

How Much DevOps is Needed? > Should all teams do full ops for their services? > IMHO optional > But: Organizational barriers might cause additional technical complexity

Slide 40

Slide 40 text

Continuous Delivery: Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Dev Ops Common Technologies Log, Monitoring, Deployment

Slide 41

Slide 41 text

DevOps = Collaboration not Organization

Slide 42

Slide 42 text

This changes software development fundamentally.

Slide 43

Slide 43 text

Maintainability

Slide 44

Slide 44 text

Maintainability: Classical Approach > Clear architecture > Good code quality > Many tests Dev

Slide 45

Slide 45 text

Maintainability: New Approach Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Fast und Reliable Fast Feedback

Slide 46

Slide 46 text

Maintainibility: New Approach > Continuous Delivery simplifies roll out > ...and test them > ...and monitor them > Microservices limit size and risk of changes DevOps

Slide 47

Slide 47 text

Scalability

Slide 48

Slide 48 text

Scalabilty: Classical Approach > Implement technical constraints > E.g. statelessness > Use appropiate technologies Dev

Slide 49

Slide 49 text

Performance Risk > Hard to really predict performance > Load test simulate user on a different environment

Slide 50

Slide 50 text

Scalability: Alternative Approach > Don‘t do anything stupid in the architecture > Identify bottleneck > Eliminate bottleneck > Common technique

Slide 51

Slide 51 text

Enable Alternative Approach > Monitoring to identify bottleneck > Fast deployment to eliminate bottleneck DevOps

Slide 52

Slide 52 text

Maintainability: New Approach Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Fast Monitor all relevant data

Slide 53

Slide 53 text

Conclusion

Slide 54

Slide 54 text

Conclusion > Synergy: Microservices and Continuous Delivery > Microservices and Continuous Delivery support and require DevOps > DevOps = Collaboration > Enable alternative approaches e.g. to maintainability and scalability

Slide 55

Slide 55 text

Thank You! @ewolff