Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service...

34
Continuous Delivery in an Ephemeral World @johnchapin | symphonia.io

Transcript of Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service...

Page 1: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Continuous Delivery in an Ephemeral World

@johnchapin | symphonia.io

Page 2: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

John Chapin• Currently Partner, Symphonia

• Former VP Engineering, Technical Lead

• Data Engineering and Data Science teams

• 20+ yrs experience in govt, healthcare, travel, and ad-tech

• Intent Media, RoomKey, Meddius, SAIC, Booz Allen

Page 3: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Agenda

• Continuous Delivery refresher

• Continuous Delivery on AWS

• The Challenges of Ephemeral Continuous Delivery

• Tutorial

• Discussion and Questions

Page 4: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Audience poll!

• How long does it take for your commit to be deployed to production?

• Less than a month

• Less than a day

• Less than an hour

• Less than a minute

Page 5: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Continuous Delivery

Page 6: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

In a nutshell...

Continuous Delivery is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.

Page 7: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Benefits

• Lower risk

• Faster time to market

• Higher quality

• Lower costs

• Better products

• Happier teams

Page 8: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Deployment Pipelines

• Automation of deployment from source control to any environment

• Early tools

• Hudson

• CruiseControl

• CruiseControl.NET

Page 9: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Continuous Integration/Delivery Tools

• On-premise

• Jenkins

• TeamCity

• Bamboo

• Hosted

• TravisCI

• CircleCI

• Semaphore

Page 10: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Friends of Continuous Delivery

• Modular, decoupled systems

• Immutable infrastructure

• Infrastructure-as-code

• Monitoring

Page 11: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Continuous Delivery on AWS

Page 12: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

AWS CodePipeline

• Continuous integration and delivery as a service

• Integrations with other AWS services (like CodeBuild)

• Custom actions via Lambda

• Declarative JSON (or YAML) templates

Page 13: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

AWS CodeBuild

• Software builds as a service

• First-class support for building Java, Python, Node.js, Ruby, Go, Android, and Docker projects

• Fully custom build environments via ECR / Docker images

• Declarative YAML specifications

Page 14: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Friends of Continuous Delivery on AWS

• Serverless!

• CloudFormation (infrastructure-as-code)

• CloudWatch (monitoring)

Page 15: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Benefits• Scalable

• API-driven

• CloudFormation-enabled

• IAM security

• Pay-as-you-go

• CodePipeline billed per-pipeline

• CodeBuild billed by time

Page 16: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Rough edges• Web console

• CodePipeline "source" != CodeBuild "source"

• Missing integrations/features

• CodePipeline -> BitBucket

• Slack

• CloudWatch events aren't usefully enriched

Page 17: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Ephemeral Continuous Delivery

Page 18: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

System Events1. Git commit pushed to source repository

2. Via polling or an event, pipeline is started

3. Pipeline receives or downloads source

4. Pipeline spins up containers for build/test/deploy

5. Build/test/deploy run, passing input/output as needed

6. Pipeline tears down containers

Page 19: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Challenges• All builds start from scratch

• Containers take time to instantiate and spin up

• Pipeline components don't share state

• Any state created during build is lost

Page 20: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Mitigations?• All builds start from scratch

Yup.

• Containers take time to instantiate and spin up Service-level caching

• Pipeline components don't share stateYup.

• Any state created during build is lostBuild-level caching

Page 21: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Questions?

Page 22: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Tutorial

Page 23: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Tutorial Architecture

Git CodeCommit

Source Action Build Action Deploy Action

CodePipeline

CloudFormationCodeBuild

Page 24: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Overview• Phase 1: Introduction to CodeCommit

• Phase 2: Introduction to CodeBuild

• Phase 3: Continuous Integration using CodePipeline

• Phase 4: Continuous Delivery using CloudFormation

• Phase 5: Speeding up CodeBuild

• Phase 6: Person in the Middle

Page 25: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Logistics

• https://github.com/symphoniacloud/sacon-san-jose-2019-continuous-delivery

• Follow along, don't worry about keeping up

• Meet your neighbors

• Ask questions

Page 26: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 1Introduction to CodeCommit

Git and IAM, together at last...

Page 27: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 2Introduction to CodeBuild

Builds... can't someone else do it?

Page 28: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 3Continuous Integration

Extreme Programming, to the MAX!

Page 29: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 4Continuous Delivery

Like Continuous Integration, but for customer feedback.

Page 30: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 5Speeding up CodeBuild

Just press the Turbo button.

Page 31: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Phase 6Person in the Middle!

Bringing rubber stamps to the cloud!

Page 32: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Teardown

• Delete all S3 buckets via the web console

• Delete CodeCommit repository

• Delete all CloudFormation stacks

Page 33: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Stay in touch!

[email protected]

@johnchapin

@symphoniacloud

symphonia.io/events

blog.symphonia.io

Page 34: Continuous Delivery in an Ephemeral World · • Continuous integration and delivery as a service ... Pipeline spins up containers for build/test/deploy 5. Build/test/deploy run,

Other resources• What is Serverless? Our 2017 report, published by O'Reilly.

• Programming AWS Lambda - Our upcoming full-length book with O'Reilly.

• Serverless Architectures - Mike's de facto industry primer on Serverless.

• Learning Lambda - A 9-part blog series to help new Lambda devs get started.

• Serverless Insights - Our email newsletter covering Serverless news, event, etc.

• The Symphonium - Our blog, featuring technical content and analysis.