aws codedeploy getting started

36
AWS CodeDeploy Getting Started Ian Massingham AWS Technical Evangelist @IanMmmm

Upload: amazon-web-services

Post on 07-Jan-2017

3.073 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: AWS CodeDeploy Getting Started

AWS CodeDeploy Getting Started

Ian Massingham AWS Technical Evangelist

@IanMmmm

Page 2: AWS CodeDeploy Getting Started

Deployment Options

Page 3: AWS CodeDeploy Getting Started

AWS Elastic Beanstalk AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

AWS CodeDeploy AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

AWS CloudFormation AWS CloudFormation gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.

Page 4: AWS CodeDeploy Getting Started

AWS Elastic Beanstalk AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

AWS CodeDeploy AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

AWS CloudFormation AWS CloudFormation gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.

Page 5: AWS CodeDeploy Getting Started

Elastic Beanstalk: Deploy Applications with 7 Popular Containers

Page 6: AWS CodeDeploy Getting Started

Alert

Log

Mon

App

E

LB

AZ

http://your-app.elasticbeanstalk.com

Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment

Page 7: AWS CodeDeploy Getting Started

Alert

Log

Mon

App

AZ

ELB

http://your-app.elasticbeanstalk.com

Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment

Page 8: AWS CodeDeploy Getting Started

Alert

DB

Log

Mon

App

AZ

AZ

ELB

http://your-app.elasticbeanstalk.com

Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment

Page 9: AWS CodeDeploy Getting Started

AWS Elastic Beanstalk AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

AWS CodeDeploy AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

AWS CloudFormation AWS CloudFormation gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.

Page 10: AWS CodeDeploy Getting Started
Page 11: AWS CodeDeploy Getting Started
Page 12: AWS CodeDeploy Getting Started

AWS CodeDeploy

• Scale from 1 instance to thousands • Deploy without downtime • Centralize deployment control and monitoring • On-Premises support

StagingCodeDeployv1, v2, v3

Production

Dev

Coordinate automated deployments, just like Amazon

Application Revisions

Deployment Groups

Page 13: AWS CodeDeploy Getting Started

DEMO: AWS CODEDEPLOY

Page 14: AWS CodeDeploy Getting Started

1) Package your application (with an AppSpec)version: 0.0os: linuxfiles: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webappshooks: ApplicationStop: - location: deploy_hooks/stop-tomcat.sh BeforeInstall: - location: deploy_hooks/install-chef.sh AfterInstall: - location: deploy_hooks/knife-install.sh ApplicationStart: - location: deploy_hooks/chef-solo.sh ValidateService: - location: deploy_hooks/verify_service.sh

Page 15: AWS CodeDeploy Getting Started

1) Package your application (with an AppSpec)version: 0.0os: linuxfiles: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webappshooks: ApplicationStop: - location: deploy_hooks/stop-tomcat.sh BeforeInstall: - location: deploy_hooks/install-chef.sh AfterInstall: - location: deploy_hooks/knife-install.sh ApplicationStart: - location: deploy_hooks/chef-solo.sh ValidateService: - location: deploy_hooks/verify_service.sh

Page 16: AWS CodeDeploy Getting Started

1) Package your application (with an AppSpec)

Start

BeforeInstall

ApplicationStart

ApplicationStop

Install

ValidateService

DownloadBundle

AfterInstall

End

Page 17: AWS CodeDeploy Getting Started

1) Package your application (with an AppSpec)version: 0.0os: linuxfiles: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webappshooks: ApplicationStop: - location: deploy_hooks/stop-tomcat.sh BeforeInstall: - location: deploy_hooks/install-chef.sh AfterInstall: - location: deploy_hooks/knife-install.sh ApplicationStart: - location: deploy_hooks/chef-solo.sh ValidateService: - location: deploy_hooks/verify_service.sh

Page 18: AWS CodeDeploy Getting Started

2) Set up your target environments

Agent Agent Agent

Staging

Agent Agent

Agent Agent

Agent

Agent

Production

Deployment GroupDeployment Group

• Group instances by: • Auto Scaling group • EC2 tag • On-premises tag

Page 19: AWS CodeDeploy Getting Started

3) Deploy!

aws deploy create-deployment \

--application-name MyApp \

--deployment-group-name TargetGroup \

--s3-location bucket=MyBucket,key=MyApp.zip

AWS CLI & SDKs AWS Console CI / CD Partners GitHub

Page 20: AWS CodeDeploy Getting Started

Deployment Config – Choose speed

v2 v1 v1 v1 v1 v1 v1 v1

v2 v2 v2 v2 v1 v1 v1 v1

v2 v2 v2 v2 v2 v2 v2 v2

One-at-a-Time

Half-at-a-Time

All-at-Once

Page 21: AWS CodeDeploy Getting Started

Rolling Update – Deploy without downtime

v1v1 v1

Load Balancer

Page 22: AWS CodeDeploy Getting Started

Rolling Update – Deploy without downtime

v1v2 v1

Load Balancer

Page 23: AWS CodeDeploy Getting Started

Rolling Update – Deploy without downtime

v2v2 v1

Load Balancer

Page 24: AWS CodeDeploy Getting Started

Rolling Update – Deploy without downtime

v2v2 v2

Load Balancer

Page 25: AWS CodeDeploy Getting Started

Rolling Update – Deploy without downtime

v2v2 v2

Load Balancer

Page 26: AWS CodeDeploy Getting Started

Health Tracking – Catch deployment problems

v3 v2 v2Stop

Load Balancer

Page 27: AWS CodeDeploy Getting Started

Health Tracking – Catch deployment problems

v2v2 v2

Load Balancer

Rollback

Page 28: AWS CodeDeploy Getting Started

Health Tracking – Catch deployment problems

v2v2 v2

Load Balancer

Page 29: AWS CodeDeploy Getting Started

AWS CodePipeline

• Inspired by Pipelines • Flexible workflow engine • Extensible, plugin based architecture

Continuous delivery and release automation, just like Amazon

Build1) Build 2) Unit test

1) Deploy 2) UI test

Source Beta Production1) Deploy 2) Load test

Gamma1) Deploy region1 2) Deploy region2 3) Deploy region3

Page 30: AWS CodeDeploy Getting Started

AWS CodeCommit

• Data redundancy across AZs • Data at rest encryption • Integrated with AWS Identity and Access Management • No repo size limit

git  push CodeCommit

Git objects in S3

Git index in DynamoDB

Encryption key in KMS

SSH or HTTPS

Secure, scalable, and managed Git source control

Page 31: AWS CodeDeploy Getting Started

AWS Elastic Beanstalk AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.

AWS CodeDeploy AWS CodeDeploy makes it easier for you to rapidly release new features, helps you avoid downtime during deployment, and handles the complexity of updating your applications.

AWS CloudFormation AWS CloudFormation gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.

Page 32: AWS CodeDeploy Getting Started

AWS CloudFormation

An easy way to create & manage a collection of AWS resources Allows orderly and predictable provisioning and updating of resources

Allows you to version control your AWS infrastructure Deploy and update stacks using console, command line or API

You only pay for the resources you create

Page 33: AWS CodeDeploy Getting Started

https://youtu.be/6R44BADNJA8

Page 34: AWS CodeDeploy Getting Started

RESOURCES YOU CAN USETO LEARN MORE

Page 35: AWS CodeDeploy Getting Started

aws.amazon.com/elasticbeanstalk

aws.amazon.com/codedeploy

aws.amazon.com/cloudformation

Page 36: AWS CodeDeploy Getting Started

Follow us fo

r more

events

& webina

rs

@AWScloud for Global AWS News & Announcements

@AWS_UKI for local AWS events & news

@IanMmmmIan Massingham — Technical Evangelist