Continuous Delivery in an Ephemeral World @johnchapin | - - PowerPoint PPT Presentation

continuous delivery in an ephemeral world
SMART_READER_LITE
LIVE PREVIEW

Continuous Delivery in an Ephemeral World @johnchapin | - - PowerPoint PPT Presentation

Continuous Delivery in an Ephemeral World @johnchapin | symphonia.io sacon@lists.symphonia.io john@symphonia.io sacon@lists.symphonia.io Agenda Continuous Delivery refresher Continuous Delivery on AWS The Challenges of Ephemeral


slide-1
SLIDE 1

Continuous Delivery in an Ephemeral World

@johnchapin | symphonia.io

slide-2
SLIDE 2

sacon@lists.symphonia.io john@symphonia.io

slide-3
SLIDE 3

sacon@lists.symphonia.io

slide-4
SLIDE 4

Agenda

  • Continuous Delivery refresher
  • Continuous Delivery on AWS
  • The Challenges of Ephemeral Continuous Delivery
  • Tutorial
  • Discussion and Questions
slide-5
SLIDE 5

AUDIENCE PARTICIPATION

slide-6
SLIDE 6

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

slide-7
SLIDE 7

Less than a month?

slide-8
SLIDE 8

Less than a week?

slide-9
SLIDE 9

Less than a day?

slide-10
SLIDE 10

Less than an hour?

slide-11
SLIDE 11

Less than a minute?

slide-12
SLIDE 12

Continuous Delivery

slide-13
SLIDE 13

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.

slide-14
SLIDE 14

Benefits

  • Lower risk
  • Faster time to market
  • Higher quality
  • Lower costs
  • Better products
  • Happier teams
slide-15
SLIDE 15

Deployment Pipelines

  • Automation of deployment from source control to any

environment

  • Early tools
  • Hudson
  • CruiseControl, CruiseControl.NET
slide-16
SLIDE 16

Continuous Integration/Delivery Tools

  • On-premise:
  • Jenkins
  • TeamCity
  • Bamboo

  • Hosted:
  • TravisCI
  • CircleCI
  • Semaphore
slide-17
SLIDE 17

Friends of Continuous Delivery

  • Modular, decoupled systems
  • Immutable infrastructure
  • Infrastructure-as-code
  • Monitoring
slide-18
SLIDE 18

Continuous Delivery on AWS

slide-19
SLIDE 19

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
slide-20
SLIDE 20

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
slide-21
SLIDE 21

Friends of Continuous Delivery on AWS

  • Serverless!
  • CloudFormation (infrastructure-as-code)
  • CloudWatch (monitoring)
slide-22
SLIDE 22

Benefits

  • Scalable
  • API-driven
  • CloudFormation-enabled
  • IAM security
  • Pay-as-you-go
  • CodePipeline billed per-pipeline
  • CodeBuild billed by time
slide-23
SLIDE 23

Rough edges

  • Web console
  • Missing integrations/features
  • CodePipeline -> BitBucket
  • Slack
  • CodePipeline "source" != CodeBuild "source"
  • Events aren't usefully enriched
slide-24
SLIDE 24

Ephemeral Continuous Delivery

slide-25
SLIDE 25

System Events

  • 1. 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
slide-26
SLIDE 26

Challenges

  • 1. All builds start from scratch

  • 2. Containers take time to instantiate and spin up

  • 3. Pipeline components don't share state

  • 4. Any state created during build is lost

slide-27
SLIDE 27

Mitigations

  • 1. All builds start from scratch


Yup.

  • 2. Containers take time to instantiate and spin up


Service-level caching

  • 3. Pipeline components don't share state


Yup.

  • 4. Any state created during build is lost


Build-level caching

slide-28
SLIDE 28

Questions?

slide-29
SLIDE 29

Tutorial

slide-30
SLIDE 30

Tutorial Architecture

Git CodeCommit

Source Action Build Action Deploy Action

CodePipeline CloudFormation CodeBuild

slide-31
SLIDE 31

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
slide-32
SLIDE 32

Logistics

  • https://github.com/symphoniacloud/symphonia-sacon-nyc-2018
  • Follow along, don't worry about keeping up
  • Meet your neighbors
  • Ask questions
slide-33
SLIDE 33

Phase 1

Introduction to CodeCommit Git and IAM, together at last...

slide-34
SLIDE 34

Phase 2

Introduction to CodeBuild Builds... can't someone else do it?

slide-35
SLIDE 35

Phase 3

Continuous Integration Extreme Programming, to the MAX!

slide-36
SLIDE 36

Phase 4

Continuous Delivery Like Continuous Integration, but for customer feedback.

slide-37
SLIDE 37

Phase 5

Speeding up CodeBuild Just press the Turbo button.

slide-38
SLIDE 38

Teardown

  • Delete all S3 buckets via the web console
  • Delete CodeCommit repository
  • Delete all CloudFormation stacks
slide-39
SLIDE 39

Discussion and Questions

slide-40
SLIDE 40

sacon@lists.symphonia.io john@symphonia.io