cloud native continuous delivery

89
Cloud native Continuous Delivery Christian Deger, [email protected], @cdeger DevOpsCon Munich, 21.11.2017

Upload: christian-deger

Post on 22-Jan-2018

211 views

Category:

Software


8 download

TRANSCRIPT

Page 1: Cloud native Continuous Delivery

Cloud native

Continuous Delivery

Christian Deger, [email protected], @cdeger

DevOpsCon Munich, 21.11.2017

Page 2: Cloud native Continuous Delivery

Cloud native Continuous Delivery

• Cloud Native Computing Foundation

• Container packaged

• Dynamically managed

• Microservices oriented

• My opinion

• Serverless, FaaS

• Managed services

Page 3: Cloud native Continuous Delivery

Cloud native Continuous Delivery

• Bring changes into production

• Fast

• Reliable

• Repeatable

• Traceable

• In order to

• Get fast feedback

• Lower risk

Page 4: Cloud native Continuous Delivery

Microservices

Page 5: Cloud native Continuous Delivery

Microservices

Speed

Page 6: Cloud native Continuous Delivery

Microservices

SpeedScale the organization

Page 7: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisions

Scale the organization

Page 8: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisionsAutonomous teams

Scale the organization

Page 9: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisionsAutonomous teams

Scale the organization

Loosely coupled

Page 10: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisionsAutonomous teams

Strong boundaries

Scale the organization

Loosely coupled

Page 11: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisionsAutonomous teams

Strong boundaries

Scale the organization

Independent deployable

Loosely coupled

Page 12: Cloud native Continuous Delivery

Microservices

Speed

Fast local decisionsAutonomous teams

Strong boundaries

Technology diversity

Scale the organization

Independent deployable

Loosely coupled

Page 13: Cloud native Continuous Delivery

Development

“Change”

Dev

Page 14: Cloud native Continuous Delivery

Development

“Change”

Operations

”Stability”

Ops

Page 15: Cloud native Continuous Delivery

Development

“Change”

Operations

”Stability”

Dev and Ops silos

Page 16: Cloud native Continuous Delivery

Development

“Change”

Operations

”Stability”

Dev and Ops silos

Page 17: Cloud native Continuous Delivery

Cross-functional teams

Page 18: Cloud native Continuous Delivery

Science and Continuous Delivery

Forsgren, Nicole and Humble, Jez, The Role of Continuous Delivery in IT and Organizational Performance (October 27, 2015). Forsgren, N., J. Humble

(2016). "The Role of Continuous Delivery in IT and Organizational Performance." In the Proceedings of the Western Decision Sciences Institute (WDSI)

2016, Las Vegas, NV. . Available at SSRN: http://ssrn.com/abstract=2681909 or http://dx.doi.org/10.2139/ssrn.2681909

Page 19: Cloud native Continuous Delivery

Deployment Pipeline

Page 20: Cloud native Continuous Delivery

Simplified deployment pipeline

Application code in

one repository per

service.

Page 21: Cloud native Continuous Delivery

Simplified deployment pipeline

Application code in

one repository per

service.

CI

Deployment package

as artifact.

Page 22: Cloud native Continuous Delivery

Simplified deployment pipeline

Application code in

one repository per

service.

CI

Deployment package

as artifact.

CD

Deliver package to

production

Page 23: Cloud native Continuous Delivery

Code hosting is commodity

Application code in

one repository per

service.

CI

Deployment package

as artifact.

CD

Deliver package to

production

Page 24: Cloud native Continuous Delivery

• GitHub, GitLab, Bitbucket, …

• Increased developer productivity

• Ecosystem: Apps and integrations

• Security

• Account Management, SSO, MFA

• git-secrets

• Backup using clone/fetch

Code hosting: Managed over self-hosted

Page 25: Cloud native Continuous Delivery

One tool?

CI

CI/CD tool

with support for

deployment pipelines

CD

• Simpler

• Better overview

Page 26: Cloud native Continuous Delivery

Two tools?

CI

CI tool

CD

CD tool

Artifact as

trigger/ handover

• Best tool for the job

• More complex

Page 27: Cloud native Continuous Delivery

• Travis CI, CircleCI, GitLab CI, …

• Deploy agent needs access to production

• Use separate tools for CI and CD

• AWS Code*

• Definitely for OSS

• Not an option for AS24

Managed deployment pipelines?

Page 28: Cloud native Continuous Delivery

• CD infrastructure should be the first task in a new project

• CD should not become a snowflake itself

• For disaster recovery you will need your CD infrastructure

• Aim for “CD as a service”

Automate CD infrastructure

Page 29: Cloud native Continuous Delivery

• Containerized

• Isolated builds – bring your own agent

• Elastic agents

• Container as artifact

• Pipeline as code

• Declarative in service repository

• Fast and simple bootstrapping of new pipelines

• Avoid single, shared CI instance

New CI practices

Page 30: Cloud native Continuous Delivery

• Everything that used to be good practices

• No CI theatre

• Embrace deployment pipelines

• No smarts in the CI tool

Old CI practices – Recap

Page 31: Cloud native Continuous Delivery
Page 32: Cloud native Continuous Delivery

Pets?

Page 33: Cloud native Continuous Delivery

Cattle, not pets

Page 34: Cloud native Continuous Delivery

Burgers, not cattle

Page 35: Cloud native Continuous Delivery

Cloud native deployment pipeline

Application code and

infrastructure

specification in one

repository per service.

Page 36: Cloud native Continuous Delivery

Cloud native deployment pipeline

Application code and

infrastructure

specification in one

repository per service.

CI

Deployment package

and infrastructure

declaration as

artifact.

Page 37: Cloud native Continuous Delivery

Cloud native deployment pipeline

Application code and

infrastructure

specification in one

repository per service.

CI

Deployment package

and infrastructure

declaration as

artifact.

CD

1. Create or update

service infrastructure.

Page 38: Cloud native Continuous Delivery

Cloud native deployment pipeline

Application code and

infrastructure

specification in one

repository per service.

CI

Deployment package

and infrastructure

declaration as

artifact.

CD

1. Create or update

service infrastructure.

2. New instances pull

down package and

start application.

Page 39: Cloud native Continuous Delivery

No infrastructure monolith

Page 40: Cloud native Continuous Delivery

• Follow microservices boundaries

• At least one stack per microservice

Decompose into Micro-Infrastructures

Page 41: Cloud native Continuous Delivery

• Macro stack(s)

• Outputs parameters exported

• Keep it small, only things that don’t

change often

• No services

Macro-Infrastructure

• Network

• Security

• Bastion Host

Page 42: Cloud native Continuous Delivery

• Services share macro stack

• Service stacks import parameters

• Service teams own service stack

• All services are in service stacks

Shared stack and service stacks

Page 43: Cloud native Continuous Delivery

• Services have dependencies

• CD infrastructure

• Macro stack

• Base images (AMI, container)

• …

• But avoid explicit pipeline dependencies

• Try to reference pinned dependencies

Isolate deployment pipelines

Page 44: Cloud native Continuous Delivery

Deployment

Page 45: Cloud native Continuous Delivery

You build it,

you run it

Page 46: Cloud native Continuous Delivery

How many environments?

V2V3

V6 V5

V4

V7

V5

V8

Enginee

r

CI Dev Staging

V1

V4

Prod

Page 47: Cloud native Continuous Delivery

• Integrate in production

• Consumer contracts or CDCs

• Reduce impact of failures

• MTTR over MTBF

• Monitoring

• Canary releases

• Rollbacks

• Semantic monitoring

No staging environment

Page 48: Cloud native Continuous Delivery

• Separate code deployment from feature release

• Trunk-based development

• No long lived feature branches

Feature toggles

Page 49: Cloud native Continuous Delivery

Feature toggles – release and experiment

• Product is in charge of releasing a feature

• Canary releases

• A/B testing

Page 50: Cloud native Continuous Delivery

Immutable deployment patterns

Page 51: Cloud native Continuous Delivery

Function as a Service - FaaS

Page 52: Cloud native Continuous Delivery

Done

Function as a Service - FaaS

Page 53: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

Created

V3

Page 54: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

Created

V3

Healthcheck

ok

V3

Page 55: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

Created

V3

Healthcheck

ok

V3

Traffic from

load balancer

V3

Page 56: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

V3

Created

V3

Healthcheck

ok

V3

Traffic from

load balancer

V3

Connections

drained

Page 57: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

V3

Created

V3

Healthcheck

ok

V3

Traffic from

load balancer

V3

Terminated

V3

Connections

drained

Page 58: Cloud native Continuous Delivery

Lifecycle of immutable servers/containers

V3

Created

V3

Healthcheck

ok

V3

Traffic from

load balancer

V3

Terminated

V3

Connections

drained

• No need for configuration management tools: Chef, Puppet, Ansible

• Patches/Security? Alert on base image age

• Simpler with stateless services

Page 59: Cloud native Continuous Delivery

Rolling update

V3 V3 V3

Page 60: Cloud native Continuous Delivery

Rolling update

V3 V3 V3 V4

Page 61: Cloud native Continuous Delivery

Rolling update

V3 V3 V3 V4

Page 62: Cloud native Continuous Delivery

Rolling update

V3 V3 V3 V4

Page 63: Cloud native Continuous Delivery

Rolling update

V3 V3 V4V3

Page 64: Cloud native Continuous Delivery

Rolling update

V3 V3 V4V3

Page 65: Cloud native Continuous Delivery

Rolling update

V3 V3 V4

Page 66: Cloud native Continuous Delivery

Rolling update

V3 V3 V4 V4

Page 67: Cloud native Continuous Delivery

Rolling update

V3 V4 V4

Page 68: Cloud native Continuous Delivery

Rolling update

V3 V4 V4 V4

Page 69: Cloud native Continuous Delivery

Rolling update

V4 V4 V4

Page 70: Cloud native Continuous Delivery

Rolling update

V4 V4 V4

• Only few additional resources required during deployment

• Takes some time

Page 71: Cloud native Continuous Delivery

Blue/green

V3 V3 V3

Page 72: Cloud native Continuous Delivery

Blue/green

V3 V3 V3 V4 V4 V4

Page 73: Cloud native Continuous Delivery

Blue/green

V3 V3 V3 V4 V4 V4

Page 74: Cloud native Continuous Delivery

Blue/green

V4 V4 V4V3 V3 V3

Page 75: Cloud native Continuous Delivery

Blue/green

V4 V4 V4V3V3V3

Page 76: Cloud native Continuous Delivery

Blue/green

V4 V4 V4V3V3V3

• Can keep drained instances for faster rollback

Page 77: Cloud native Continuous Delivery

Blue/green

V4 V4 V4V3V3V3

Page 78: Cloud native Continuous Delivery

Blue/green

V4 V4 V4

• Double the resources required during deployment

• Faster deployment

Page 79: Cloud native Continuous Delivery

Canary analysis

V3 V3 V3

Page 80: Cloud native Continuous Delivery

Canary analysis

V3 V3 V3 V4

• Make explicit, automated canary analysis

• Error rate

• Latency

• Load

• Alternative: Feature toggle based canaries

Page 81: Cloud native Continuous Delivery

• Existing service in production

Dark launches

Service

Client

Page 82: Cloud native Continuous Delivery

• New service to be launched

Dark launches

Old New

Client

Page 83: Cloud native Continuous Delivery

• Fork real traffic to new service and

discard response

• Monitor new service under real load

• Compare responses

• Fork on server or client side

Dark launches

Old New

Client

Page 84: Cloud native Continuous Delivery

Wrapping it up

Page 85: Cloud native Continuous Delivery

• Build isolation

• Independent pipelines

• Elasticity

• Everything as code

• Pipelines owned by teams

Recommendations for deployment pipeline

Page 86: Cloud native Continuous Delivery

• Time from commit to production – cycle time

• Time to bootstrap a new service including the deployment pipeline

Metrics

Page 87: Cloud native Continuous Delivery

• “You build it, you deploy it, you run it”

• Embrace immutability

• Infrastructure follows microservices architecture

• Failures happen

• Reduce impact

• Fast detection

• Fast recovery

Important

Page 88: Cloud native Continuous Delivery

Thank You!

Page 89: Cloud native Continuous Delivery

• Regent's Rowing 8 by Jmf3333 [CC BY 3.0]

https://en.wikipedia.org/wiki/File:Regents_rowing.JPG

• Aquapark Aquacolors by Pantharei.2017 (Own work) [CC BY-SA 4.0]

https://commons.wikimedia.org/wiki/File:Aquapark_Aquacolors.jpg

• The Key of a Chamberlain by Niklitov [CC BY-SA 4.0]

https://commons.wikimedia.org/wiki/File:The_Key_of_a_Chamberlain_at_Kingdom_of_P

russia_Kalinigrad_Blindage_museum.JPG

• Beziers Fonseranes by Dedounet [CC BY-SA 1.0]

https://commons.wikimedia.org/wiki/File:Beziers_Fonseranes.jpg

Image attribution