Slide 1

Slide 1 text

Continuous Delivery, DevOps, Cloud - New Requirements for New Architectures Eberhard Wolff Fellow, innoQ @ewolff

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Architecture? Modularization Quality Attributes

Slide 5

Slide 5 text

Scenario “Support Different Mobile platform” Scenario “Search faster than 5s” Efficency Latency Cost Security Data privacy Secrecy Integrity Maintainability Understandability Changeability Portability Changeability Availability User error Hardware failure Recovery time Usability Time to learn

Slide 6

Slide 6 text

Know the needed quality attributes! Find technical solutions for them!

Slide 7

Slide 7 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? Manual Hand over Manual Hand over How to operate? Scalability Availability Changeability Architecture

Slide 8

Slide 8 text

Continuous Delivery (CD)

Slide 9

Slide 9 text

Continuous Delivery (CD) Pipeline >  Better Time-to-Market >  Reproducible tests and deployments >  More tests >  Deployment = natural part of the process Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release

Slide 10

Slide 10 text

Software more reliable and easier to change.

Slide 11

Slide 11 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? Manual Hand over Manual Hand over How to operate? Architecture Scalability Availability Changeability Continuous Delivery

Slide 12

Slide 12 text

That will never work with my (legacy) system! Was it built with CD in mind?

Slide 13

Slide 13 text

Quality Attributes for Continuous Delivery >  Simple Deployment >  …simplifies automation >  Easy testing >  …for acceptance tests, too >  ...probably API, not UI-based >  Hexagonal Architecture: Tests = another client

Slide 14

Slide 14 text

Quality Attributes for Continuous Delivery >  Make deployment less risky >  Resilience >  i.e. failure of one module should not make other modules fail >  Bulkhead

Slide 15

Slide 15 text

Continuous Delivery >  Supports Quality Attributes >  Changeability >  Demand Quality Attributes >  Simple Deployment >  Good testability >  Resilience

Slide 16

Slide 16 text

Size Matters! >  Large applications hard to deploy >  Hard to test >  Lots of regression testing >  Hard to roll back / safeguard deployments

Slide 17

Slide 17 text

Small and independent deployment units Microservices

Slide 18

Slide 18 text

Microservices solve all problems? >  Probably not >  But: Software Architecture was about modules and development >  It should be about testing, deployment and operations, too!

Slide 19

Slide 19 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? Manual Hand over Manual Hand over How to operate? Scalability Availability Changeability

Slide 20

Slide 20 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? How to operate? Architecture Scalability Availability Changeability Continuous Delivery

Slide 21

Slide 21 text

Need different skill set

Slide 22

Slide 22 text

DevOps=

Slide 23

Slide 23 text

DevOps= Development + Operations collaborate

Slide 24

Slide 24 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations JVM ClassLoader App Server No visibility in production App-specific metrics Kernel I/Os CPU Monitoring, alarms

Slide 25

Slide 25 text

DevOps Architecture >  Broadens scope of architecture >  What are relevant metrics? App or OS >  How to monitor? >  Alarm if? >  Provide access to full team

Slide 26

Slide 26 text

Cloud

Slide 27

Slide 27 text

Cloud… >  …is an inexpensive environment for applications >  …in particular for elastic scaling

Slide 28

Slide 28 text

Efficency Latency Cost Security Data privacy Secrecy Integrity Maintainability Understandability Changeability Portabiity Changeability Availability User error Hardware failure Recovery time Usability Time to learn

Slide 29

Slide 29 text

Cloud… >  …is an inexpensive environment for applications >  …in particular for elastic scaline

Slide 30

Slide 30 text

Why Did Amazon Build a Cloud?

Slide 31

Slide 31 text

Significant investment

Slide 32

Slide 32 text

No enterprise grade free virtualization

Slide 33

Slide 33 text

Cost?

Slide 34

Slide 34 text

Optimize resource utilization?

Slide 35

Slide 35 text

Lots of server used only for the holiday season.

Slide 36

Slide 36 text

Lots of server used only for the holiday season.

Slide 37

Slide 37 text

Developers spent more time on scaling than on features.

Slide 38

Slide 38 text

Cloud = universal scalable infrastructure

Slide 39

Slide 39 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? How to operate? Architecture Scalability Availability Changeability Continuous Delivery

Slide 40

Slide 40 text

Scaling >  Traditional: Architecture will solve it >  Cloud: Start more server >  …if load increases >  Pay-as-you-go

Slide 41

Slide 41 text

Scaling >  Traditional: Architecture enables scaling >  There will be bottlenecks >  But: Hard to know bottleneck >  Monitoring to identify bottleneck >  Continuous Delivery to deploy fixes for bottleneck

Slide 42

Slide 42 text

ECommerce Order Customer Delivery Ca. 100 developers QA Operations Software modules How to test? How to operate? Architecture Scalability Availability Changeability Continuous Delivery

Slide 43

Slide 43 text

There is more to Cloud…

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

Oracle instance = One click

Slide 46

Slide 46 text

Why should a Software Engineer care??

Slide 47

Slide 47 text

Cloud = Components

Slide 48

Slide 48 text

Instagram >  Global photo sharing >  S3 storage >  Cloudfront Content Delivery Network >  Custom code >  3 engineers (Dev and Ops) >  10 mio user >  100 mio photos

Slide 49

Slide 49 text

Efficency Latency Cost Security Data privacy Secrecy Integrity Maintainability Understandability Changeability Portabiity Changeability Availability User error Hardware failure Recovery time Usability Time to learn

Slide 50

Slide 50 text

Enabler Continuous Delivery / DevOps >  Much easier deployment >  Create server, deploy software – via API >  Integrated Monitoring

Slide 51

Slide 51 text

All for free???

Slide 52

Slide 52 text

Amazon SLAs on One Slide >  If one of our data centers fails… >  Well, that’s your problem >  And we do reboot your server randomly.

Slide 53

Slide 53 text

#SRSLY?

Slide 54

Slide 54 text

Amazon SLAs on One Slide >  If a data center fails >  Well, that’s your problem >  And we do reboot your server randomly. >  But you can always start new servers >  …in other data centers >  ...or regions

Slide 55

Slide 55 text

Global redundancy across data centers

Slide 56

Slide 56 text

Efficency Latency Cost Security Data privacy Secrecy Integrity Maintainability Understandability Changeability Portabiity Changeability Availability User error Hardware failure Recovery time Usability Time to learn

Slide 57

Slide 57 text

Dynamic Scaling & Availability >  Start more server >  …if servers crash >  Architecture must be stateless >  Servers must handle load from the beginning

Slide 58

Slide 58 text

Resilience >  Systems might reboot or crash >  …so client fail >  Deal with failure

Slide 59

Slide 59 text

The Cloud Paradox >  Unreliable hardware >  …and not too powerful hardware >  …are the ideal foundation for reliable & scalable software.

Slide 60

Slide 60 text

Deal with failure – don’t try to fight it.

Slide 61

Slide 61 text

Cloud >  Supports Quality Attributes >  Scaling >  Time-to-Market >  Availability >  Demand Quality Attributes >  Resilience

Slide 62

Slide 62 text

Conclusion

Slide 63

Slide 63 text

Conclusion >  Know the desired quality attributes!

Slide 64

Slide 64 text

Know the desired quality attributes!

Slide 65

Slide 65 text

Conclusion >  Know the desired quality attributes! >  Continuous Delivery >  Demands smaller, easier to deploy units >  Demands testability >  Offers changeability

Slide 66

Slide 66 text

Conclusion >  DevOps enables CD architectures >  …brings other experts to the teams >  Scalability = Monitoring + fast deployment?

Slide 67

Slide 67 text

Conclusion >  Cloud: Scaling >  …and fast time-to-market >  ...and availability