aws codedeploy getting started
TRANSCRIPT
AWS CodeDeploy Getting Started
Ian Massingham AWS Technical Evangelist
@IanMmmm
Deployment Options
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.
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.
Elastic Beanstalk: Deploy Applications with 7 Popular Containers
Alert
Log
Mon
App
E
LB
AZ
http://your-app.elasticbeanstalk.com
Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment
Alert
Log
Mon
App
AZ
ELB
http://your-app.elasticbeanstalk.com
Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment
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
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.
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
DEMO: AWS CODEDEPLOY
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
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
1) Package your application (with an AppSpec)
Start
BeforeInstall
ApplicationStart
ApplicationStop
Install
ValidateService
DownloadBundle
AfterInstall
End
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
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
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
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
Rolling Update – Deploy without downtime
v1v1 v1
Load Balancer
Rolling Update – Deploy without downtime
v1v2 v1
Load Balancer
Rolling Update – Deploy without downtime
v2v2 v1
Load Balancer
Rolling Update – Deploy without downtime
v2v2 v2
Load Balancer
Rolling Update – Deploy without downtime
v2v2 v2
Load Balancer
Health Tracking – Catch deployment problems
v3 v2 v2Stop
Load Balancer
Health Tracking – Catch deployment problems
v2v2 v2
Load Balancer
Rollback
Health Tracking – Catch deployment problems
v2v2 v2
Load Balancer
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
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
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.
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
https://youtu.be/6R44BADNJA8
RESOURCES YOU CAN USETO LEARN MORE
aws.amazon.com/elasticbeanstalk
aws.amazon.com/codedeploy
aws.amazon.com/cloudformation
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