getting started with continuous delivery on aws - aws april 2016 webinar series

64
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. © 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Chris Munns, Business Development Manager - DevOps April 27 2016 DevOps on AWS: Getting Started with Continuous Delivery on AWS

Upload: amazon-web-services

Post on 16-Apr-2017

2.018 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Chris Munns, Business Development Manager - DevOpsApril 27 2016

DevOps on AWS:Getting Started with Continuous Delivery on AWS

Page 2: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

https://secure.flickr.com/photos/mgifford/4525333972

Why are we here today?

Page 3: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Software moves faster today

Software creation and distribution is easier and faster than ever:• Startups can now take on giants with little to

no funding ahead of time• Getting your software into the hands of

millions is a download away• Your ability to move fast is paramount to your

ability to fight off disruption

Page 4: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Old software delivery model

The software delivery model has drastically changed

New software delivery model

Page 5: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

What tools do you need to move fast?

Releasing software in this new software driven world requires a number of things:• Tools to manage the flow of your software development

release process• Tools to properly test and inspect your code for defects

and potential issues• Tools to deploy your applications

Page 6: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

First, we need to understand a little bit about software release processes

https://www.flickr.com/photos/jurvetson/5201796697/

Page 7: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

• Integration tests with other systems

• Load testing• UI tests• Penetration

testing

Release processes have four major phases

Source Build Test Production

• Check-in source code such as .java files.

• Peer review new code

• Compile code• Unit tests• Style checkers • Code metrics• Create

container images

• Deployment to production environments

Page 8: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Release processes levels

Source Build Test Production

Continuous integration

Continuous delivery

Continuous deployment

Page 9: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Release Processes levels

Source Build Test Production

Continuous integration

Continuous deployment

Our focus todayContinuous delivery

Page 10: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Continuous Delivery Benefits

Improve developer productivity

Find and address bugs quickly

Deliver updates fasterAutomate the software release process

Page 11: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

A look back at development at Amazon..

https://secure.flickr.com/photos/pixelthing/15806918992/

Page 12: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

2001

Development transformation at Amazon: 2001-2009

2009

monolithic application + teams

microservices + 2 pizza teams

Page 13: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Things went much better under this

model and teams were developing

features faster than ever, but we felt that

we could still improve.

Page 14: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

In 2009, we ran a study to find out where inefficiencies might still exist

Page 15: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We were just waiting.

WaitWrite Code WaitBuild

Code WaitDeploy to Test

Deploy to

Prod

Page 16: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We were just waiting.

WaitWrite Code WaitBuild

Code WaitDeploy to Test

Deploy to

Prod

Mins Days Mins Days Mins Days Mins

Page 17: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We were just waiting.

WaitWrite Code WaitBuild

Code WaitDeploy to Test

Deploy to

Prod

Weeks

Mins Days Mins Days Mins Days Mins

Page 18: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We were just waiting.

WaitWrite Code WaitBuild

Code WaitDeploy to Test

Deploy to

Prod

Weeks

Mins Days Mins Days Mins Days Mins

Hours

Page 19: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We built tools to automate our software release process

https://secure.flickr.com/photos/lindseygee/5894617854/

Page 20: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Automated actions and transitions; from check-in to production

Development benefits:• Faster• Safer• Consistent &

Standardized• Visualization of the

process

Pipelines

Page 21: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Continuous delivery service for fast and reliable application updates

Model and visualize your software release process

Builds, tests, and deploys your code every time there is a code change

Integrates with 3rd party tools and AWS

AWS CodePipeline

Page 22: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

AWS CodePipeline Benefits

Configurable workflow Easy to integrate Improved quality

Rapid delivery Get started fast

Page 23: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic Beanstalk

PipelineStage

Action

Transition

CodePipelineMyApplication

Page 24: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic Beanstalk

NotifyDevelopersLambda

CodePipelineMyApplication

Parallel actions

Page 25: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic Beanstalk

NotifyDevelopersLambda

TestAPIRunscope

CodePipelineMyApplication

Sequential actions

Page 26: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

8. Retrieve build artifact

EC2 instance

CodePipeline

2. Store source artifact

Source

SourceGitHub

Build

JenkinsOnEC2Jenkins

Deploy

JavaAppElastic Beanstalk

Source Artifact

S3

Build Artifact

S3

5. Get source artifact

1. Get Changes

6. Store build artifact

3. Poll for Job

4. Acknowledge Job

7. Put Success

9. Deploy build artifact

Elastic BeanstalkWeb container

Java App

MyApplication

Page 27: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

We have a strong partner list, and it’s growingSource Build Test Deploy

Page 28: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

AWS service integrations

Source Invoke Logic Deploy

AWS Elastic BeanstalkAmazon S3

AWS CodeDeploy

AWS Lambda

AWS CodeCommit

Page 29: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Building your application development release pipeline

https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/

Page 30: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 31: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 32: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 33: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 34: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Build & test your application

https://secure.flickr.com/photos/spenceyc/7481166880

Page 35: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Building Your Code

“Building” code typically refers to languages that require compiled binaries:• .NET languages: C#, F#, VB.net, etc.• Java and JVM languages: Java, Scala,

JRuby• Go• iOS languages: Swift, Objective-CWe also refer to the process of creating Docker container images as “building” the image.

EC2

Page 36: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

No Building Required!

Many languages don’t require building. These are considered interpreted languages:• PHP• Ruby• Python• Node.js

You can just deploy your code!

EC2

Page 37: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Testing Your Code

Testing is both a science and an art form!Goals for testing your code:• Want to confirm desired functionality• Catch programming syntax errors• Standardize code patterns and format• Reduce bugs due to non-desired application

usage and logic failures• Make applications more secure

Page 38: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 39: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Deploying your applications

https://secure.flickr.com/photos/simononly/15386966677

Page 40: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Automates code deployments to any instance

Handles the complexity of updating your applications

Avoid downtime during application deployment

Deploy to Amazon EC2 or on-premises servers, in any language and on any operating system

Integrates with 3rd party tools and AWS

AWS CodeDeploy

Page 41: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

appspec.yml Exampleversion: 0.0os: linuxfiles: - source: / destination: /var/www/htmlpermissions: - object: /var/www/html pattern: “*.html” owner: root group: root mode: 755hooks: ApplicationStop: - location: scripts/deregister_from_elb.sh BeforeInstall: - location: scripts/install_dependencies.sh ApplicationStart: - location: scripts/start_httpd.sh ValidateService: - location: scripts/test_site.sh - location: scripts/register_with_elb.sh

Page 42: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

appspec.yml Exampleversion: 0.0os: linuxfiles: - source: / destination: /var/www/htmlpermissions: - object: /var/www/html pattern: “*.html” owner: root group: root mode: 755hooks: ApplicationStop: - location: scripts/deregister_from_elb.sh BeforeInstall: - location: scripts/install_dependencies.sh ApplicationStart: - location: scripts/start_httpd.sh ValidateService: - location: scripts/test_site.sh - location: scripts/register_with_elb.sh

• Remove/add instance to ELB• Install dependency packages• Start Apache• Confirm successful deploy• More!

• Send application files to one directory and configuration files to another

• Set specific permissions on specific directories & files

Page 43: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

v2 v2 v2 v2 v2 v2

one at a time

half at a time

all at once

v2 v2 v2 v1 v1 v1

v2 v1 v1 v1 v1 v1 Agent Agent

Dev Deployment group

ORProd Deployment group

Agent

AgentAgent

Agent Agent

Agent

Choose Deployment Speed and Group

Page 44: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 45: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 46: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 47: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 48: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 49: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 50: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

https://www.flickr.com/photos/spacex/16510243060/

Launching to Production

Page 51: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Launching to Production

After you’ve built and tested your code and hopefully gone through a few pre-production deploys, its time for the real thing!You’ll want think about:• Impact to customers• Impact to infrastructure• Impact to business

How can we track these and communicate deploys?

Page 52: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Extend AWS CodePipeline Using Custom Actions

Update tickets Provision resources

Update dashboards

Mobile testing

Send notifications Security scan

Page 53: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

What Extension Method Should I Use?

Lambda Custom Action

Short-running tasks are easy to build Can perform any type of workload

Long-running tasks need more work Control over links displayed in console

Node.js, Python, and Java support Any language support

Runs on AWS Can run on-premises

No servers to provision or manage Requires compute resources

Page 54: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 55: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 56: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 57: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 58: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 59: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 60: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Page 61: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

FIN, ACKWe’ve seen a quick run through today of the benefits of continuous delivery on our software release process:• Continuous integration (build/test) helps shrink our

feedback loop greatly• We can get our software out in front of our users much

more rapidly• By moving faster we can actually ensure better quality• CodePipeline allows for integration with almost any

service or tool you can think of!• Plus visualization of what’s going on!

Page 62: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Try it out todayTest out CodePipeline and spin up a full continuous delivery pipeline using the Starter Kit

bit.ly/AWSCodeStarterKit

Page 63: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Resources to learn more:• Continuous integration: https://aws.amazon.com/devops/continuous-integration/• Continuous delivery: https://aws.amazon.com/devops/continuous-delivery/

• CodePipeline• https://aws.amazon.com/codepipeline/• https://aws.amazon.com/documentation/codepipeline/

• CodeDeploy• https://aws.amazon.com/codedeploy/• https://aws.amazon.com/documentation/codedeploy/• https://github.com/awslabs/aws-codedeploy-samples

• Code Services Starter Kit: http://bit.ly/AWSCodeStarterKit

But wait, there’s more!

Page 64: Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series

Thank you!

Happy Deploying!