Continuous Delivery,
DevOps, Cloud
- New Requirements for
New Architectures
Eberhard Wolff
Fellow, innoQ
@ewolff
http://microservices-buch.de/ http://microservices-book.com/
Architecture?
Modularization
Quality Attributes
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
Know the needed
quality attributes!
Find technical
solutions for them!
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
Continuous Delivery
(CD)
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
Software more
reliable and easier to
change.
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
That will never work
with my (legacy)
system!
Was it built with CD in
mind?
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
Quality Attributes for
Continuous Delivery
>  Make deployment less risky
>  Resilience
>  i.e. failure of one module should not make
other modules fail
>  Bulkhead
Continuous Delivery
>  Supports Quality Attributes
>  Changeability
>  Demand Quality Attributes
>  Simple Deployment
>  Good testability
>  Resilience
Size Matters!
>  Large applications hard to deploy
>  Hard to test
>  Lots of regression testing
>  Hard to roll back / safeguard deployments
Small and
independent
deployment units
Microservices
Microservices solve
all problems?
>  Probably not
>  But: Software Architecture was about
modules and development
>  It should be about testing, deployment and
operations, too!
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
ECommerce
Order Customer
Delivery
Ca. 100
developers
QA Operations
Software modules How to
test?
How to
operate?
Architecture
Scalability
Availability
Changeability
Continuous
Delivery
Need different
skill set
DevOps=
DevOps=
Development +
Operations
collaborate
ECommerce
Order Customer
Delivery
Ca. 100
developers
QA Operations
JVM ClassLoader App Server
No visibility in production
App-specific metrics
KernelI/Os
CPU
Monitoring, alarms
DevOps Architecture
>  Broadens scope of architecture
>  What are relevant metrics? App or OS
>  How to monitor?
>  Alarm if?
>  Provide access to full team
Cloud
Cloud…
>  …is an inexpensive environment for
applications
>  …in particular for elastic scaling
Efficency
Latency
Cost
Security
Data privacy
Secrecy
Integrity
Maintainability
Understandability
Changeability
Portabiity
 Changeability
Availability
User error
Hardware failure
Recovery time
Usability
 Time to learn
Cloud…
>  …is an inexpensive environment for
applications
>  …in particular for elastic scaline
Why Did Amazon
Build a Cloud?
Significant investment
No enterprise grade
free virtualization
Cost?
Optimize
resource utilization?
Lots of server used
only for the holiday
season.
Lots of server used
only for the holiday
season.
Developers spent
more time on scaling
than on features.
Cloud = universal
scalable
infrastructure
ECommerce
Order Customer
Delivery
Ca. 100
developers
QA Operations
Software modules How to
test?
How to
operate?
Architecture
Scalability
Availability
Changeability
Continuous
Delivery
Scaling
>  Traditional: Architecture will solve it
>  Cloud: Start more server
>  …if load increases
>  Pay-as-you-go
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
ECommerce
Order Customer
Delivery
Ca. 100
developers
QA Operations
Software modules How to
test?
How to
operate?
Architecture
Scalability
Availability
Changeability
Continuous
Delivery
There is more to
Cloud…
Oracle instance =
One click
Why should a
Software Engineer
care??
Cloud =
Components
Instagram
>  Global photo sharing
>  S3 storage
>  Cloudfront Content Delivery Network
>  Custom code
>  3 engineers (Dev and Ops)
>  10 mio user
>  100 mio photos
Efficency
Latency
Cost
Security
Data privacy
Secrecy
Integrity
Maintainability
Understandability
Changeability
Portabiity
 Changeability
Availability
User error
Hardware failure
Recovery time
Usability
 Time to learn
Enabler Continuous
Delivery / DevOps
>  Much easier deployment
>  Create server, deploy software – via API
>  Integrated Monitoring
All for free???
Amazon SLAs on
One Slide
>  If one of our data centers fails…
>  Well, that’s your problem
>  And we do reboot your server randomly.
#SRSLY?
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
Global redundancy
across data centers
Efficency
Latency
Cost
Security
Data privacy
Secrecy
Integrity
Maintainability
Understandability
Changeability
Portabiity
 Changeability
Availability
User error
Hardware failure
Recovery time
Usability
 Time to learn
Dynamic Scaling &
Availability
>  Start more server
>  …if servers crash
>  Architecture must be stateless
>  Servers must handle load from the
beginning
Resilience
>  Systems might reboot or crash
>  …so client fail
>  Deal with failure
The Cloud Paradox
>  Unreliable hardware
>  …and not too powerful hardware
>  …are the ideal foundation for reliable &
scalable software.
Deal with failure –
don’t try to fight it.
Cloud
>  Supports Quality Attributes
>  Scaling
>  Time-to-Market
>  Availability
>  Demand Quality Attributes
>  Resilience
Conclusion
Conclusion
>  Know the desired quality attributes!
Know the desired
quality attributes!
Conclusion
>  Know the desired quality attributes!
>  Continuous Delivery
>  Demands smaller, easier to deploy units
>  Demands testability
>  Offers changeability
Conclusion
>  DevOps enables CD architectures
>  …brings other experts to the teams
>  Scalability = Monitoring + fast deployment?
Conclusion
>  Cloud: Scaling
>  …and fast time-to-market
>  ...and availability

Continuous Delivery, DevOps, Cloud - New Requirements for New Architectures