application deployment on aws - startup talks june 2015

of 58/58
Application Deployment on AWS [email protected] @IanMmmm Ian Massingham — Technical Evangelist

Post on 29-Jul-2015

465 views

Category:

Technology

2 download

Embed Size (px)

TRANSCRIPT

1. Application Deployment on AWS [email protected] @IanMmmm Ian Massingham Technical Evangelist 2. Before we start Id love your feedback @IanMmmm 3. What will we cover? Options for Application Deployment on AWS Resources you can use to learn more Some Background1 2 3 4. Some Background 5. Startups on AWS http://aws.amazon.com/solutions/case-studies/ Meerkat 6. 400,000 people are hosted on any given night 7. Up by Over 10 Million in One Year Total 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 8. 0 350 700 1,050 1,400 2010 2014 24 48 432 1,300 Total Number of EC2 instances 9. Why AWS? 10. EC2 Servers, Production Traffic, Hive, Hadoop RDSAll Relational Databases S3Storage, User Generated Content DynamoDBRollups, Metadata ElastiCacheMemcache Route 53DNS, Inventory 11. We have a 5 person operations team. AWS allows us to devote our resources and mindshare to the core business. 12. Deployment Options 13. Deployment & Management Containers Dev/ops Tools Resource Templates Usage Tracking Monitoring and Logs 14. 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. 15. 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. 16. DEMO: AWS ELASTIC BEANSTALK 17. Elastic Beanstalk: Deploy Applications with 7 Popular Containers 18. Alert Log Mon AppELB AZ http://your-app.elasticbeanstalk.com Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment 19. Alert Log Mon App AZ ELB http://your-app.elasticbeanstalk.com Elastic Beanstalk Deploy your app to a load balanced, auto scaled Environment 20. 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 21. 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. 22. AWS CodeDeploy Scale from 1 instance to thousands Deploy without downtime Centralize deployment control and monitoring On-Premises support Staging CodeDeployv1, v2, v3 Production Dev Coordinate automated deployments, just like Amazon Application Revisions Deployment Groups 23. DEMO: AWS CODEDEPLOY 24. 1) Package your application (with an AppSpec) version: 0.0 os: linux files: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webapps hooks: 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 25. 1) Package your application (with an AppSpec) version: 0.0 os: linux files: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webapps hooks: 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 26. 1) Package your application (with an AppSpec) Start BeforeInstall ApplicationStart ApplicationStop Install ValidateService DownloadBundle AfterInstall End 27. 1) Package your application (with an AppSpec) version: 0.0 os: linux files: - source: chef/ destination: /etc/chef/codedeploy - source: target/hello.war destination: /var/lib/tomcat6/webapps hooks: 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 28. 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 29. 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 30. Deployment Cong 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 31. Rolling Update Deploy without downtime v1v1 v1 Load Balancer 32. Rolling Update Deploy without downtime v1v2 v1 Load Balancer 33. Rolling Update Deploy without downtime v2v2 v1 Load Balancer 34. Rolling Update Deploy without downtime v2v2 v2 Load Balancer 35. Rolling Update Deploy without downtime v2v2 v2 Load Balancer 36. Health Tracking Catch deployment problems v3 v2 v2Stop Load Balancer 37. Health Tracking Catch deployment problems v2v2 v2 Load Balancer Rollback 38. Health Tracking Catch deployment problems v2v2 v2 Load Balancer 39. AWS CodePipeline Inspired by Pipelines Flexible workflow engine Extensible, plugin based architecture Continuous delivery and release automation, just like Amazon Build 1) Build 2) Unit test 1) Deploy 2) UI test Source Beta Production 1) Deploy 2) Load test Gamma 1) Deploy region1 2) Deploy region2 3) Deploy region3 40. AWS CodeCommit Data redundancy across AZs Data at rest encryption Integrated with AWS Identity and Access Management No repo size limit gitpush CodeCommit Git objects in S3 Git index in DynamoDB Encryption key in KMS SSH or HTTPS Secure, scalable, and managed Git source control 41. 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. 42. 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 43. https://youtu.be/6R44BADNJA8 44. Building With Smaller Blocks Quicker to build Lower costEasier to adapt and update > >> 45. Containers, the Cloud & Application Architecture Application portability Environment delity Continuous deployment High availability & scale 46. The Four Horsemen of Container-Based Applications Application components Resource description Capacity pool Placement & management 1 2 3 4 47. Launch and terminate Docker containers Across a cluster of EC2 instances Mount persistent volumes at launch Private Docker repositories Amazon EC2 Container Service 48. EC2 Container Service Is Now Generally Available Available to all customers New Management console New Geographic expansion US East, US West, EU West and Japan New CloudTrail integration New aws.amazon.com/ecs 49. AWS Lambda An event-driven computing service for dynamic applications 50. A Focus on Functions, Data and Events AutomaticCloud FunctionsEvents from AWS services 51. RESOURCES YOU CAN USE TO LEARN MORE 52. aws.amazon.com/elasticbeanstalk aws.amazon.com/codedeploy aws.amazon.com/cloudformation 53. aws.amazon.com/ecs 54. Follow us for m ore events & w ebinars @AWScloud for Global AWS News & Announcements @AWS_UKI for local AWS events & news @IanMmmm Ian Massingham Technical Evangelist