Upload
amazon-web-services
View
466
Download
2
Tags:
Embed Size (px)
Citation preview
What will we cover?
Options for Application Deployment on AWS
Resources you can use to learn more
Some Background123
Startups on AWS
http://aws.amazon.com/solutions/case-studies/
Meerkat
Up by Over 10 Million in One YearTotal Number of Guests
Sep 2008 Mar 2009 Sep 2013Sep 2009 Mar 2013Sep 2012Mar 2012Sep 2011Mar 2011Mar 2010 Sep 2010
June 2014 15 Million
3M
Mar 2014 Jun 2014
6M
9M
12M
15M
June 2015 25 Million
EC2 Servers, Production Traffic,
Hive, Hadoop
RDSAll Relational Databases
S3Storage, User Generated
Content
DynamoDBRollups, Metadata
ElastiCacheMemcache
Route 53DNS, Inventory
We have a 5 person operations team.
AWS allows us to devote our resources and mindshare to the core business.
“”
Deployment & ManagementContainers
Dev/ops Tools
Resource Templates
Usage Tracking
Monitoring and Logs
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.
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
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
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
Containers, the Cloud & Application Architecture
Applicationportability
Environmentfidelity
Continuousdeployment
High availability& scale
The Four Horsemen of Container-Based Applications
Applicationcomponents
Resourcedescription
Capacitypool
Placement& management
1 2 3 4
Launch and terminate Docker containers
Across a cluster of EC2 instances
Mount persistent volumes at launch
Private Docker repositories
Amazon EC2 Container Service
EC2 Container Service Is Now Generally Available
Available to all customers
New
Managementconsole
New
Geographic expansion
US East, US West, EU West and Japan
New
CloudTrailintegration
New
aws.amazon.com/ecs
aws.amazon.com/elasticbeanstalk
aws.amazon.com/codedeploy
aws.amazon.com/cloudformation