continuous delivery, devops, cloud - new requirements for new architectures

Post on 12-Apr-2017

1.434 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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“SupportDifferentMobile

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. 100developers

QA Operations

Software modules How totest?

ManualHandover

ManualHandover

How tooperate?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. 100developers

QA Operations

Software modules How totest?

ManualHandover

ManualHandover

How tooperate?

Architecture

Scalability

Availability

Changeability

ContinuousDelivery

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. 100developers

QA Operations

Software modules How totest?

ManualHandover

ManualHandover

How tooperate?Scalability

Availability

Changeability

ECommerce

Order Customer

Delivery

Ca. 100developers

QA Operations

Software modules How totest?

How tooperate?

Architecture

Scalability

Availability

Changeability

ContinuousDelivery

Need different skill set

DevOps=

DevOps= Development +

Operations collaborate

ECommerce

Order Customer

Delivery

Ca. 100developers

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. 100developers

QA Operations

Software modules How totest?

How tooperate?

Architecture

Scalability

Availability

Changeability

ContinuousDelivery

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. 100developers

QA Operations

Software modules How totest?

How tooperate?

Architecture

Scalability

Availability

Changeability

ContinuousDelivery

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

top related