Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevOpsCon Cloud Workshop

551 views

Published on

Slide deck for DevOpsCon Cloud Workshop

Published in: Internet
  • Be the first to comment

DevOpsCon Cloud Workshop

  1. 1. Sascha Möllering | zanox AG Cloud Workshop
  2. 2. About me Sascha Möllering sascha@autoscaling.io Lead Engineer / DevOps Hipster zanox AG http://autoscaling.io @sascha242
  3. 3. About me Java Magazin 11.14 Architektur im Kontext der Cloud: Patterns und Best Practices AWS Virtual Cloud Summit Continuous delivery in AWS using Docker http://aws-summit.de/ Entwickler Spezial: Docker Über den Wolken: Ein Erfahrungsbericht zum Docker-Einsatz in der Amazon Cloud
  4. 4. Agenda • AWS Overview • Creating a cloud service • Real World example • Cloud deployment • Q&A
  5. 5. How can we scale?
  6. 6. RegionUS-WEST (N. California) EU-WEST (Ireland) ASIA PAC (Tokyo) ASIA PAC (Singapore) US-WEST (Oregon) SOUTH AMERICA (Sao Paulo) US-EAST (Virginia) GOV CLOUD ASIA PAC (Sydney) Regions Regions EU-CENTRAL (Frankfurt) AWS Overview
  7. 7. Zones Zones Availability Zone AWS Overview
  8. 8. AWS Overview EC2: Resizable compute capacity AutoScaling: scale up or down Route 53: Domain Name System ELB: Load Balancing Elastic IP: Static IP address
  9. 9. AWS Overview RDS: Managed database service DynamoDB: NoSQL implementation Redshift: data warehouse solution ElastiCache: Managed cache Kinesis: Service for streaming data
  10. 10. AWS Overview S3: Highly-scalable object storage CloudFront: CDN implementation CloudWatch: Monitoring service IAM: Identity and Access Management EMR: Managed Hadoop CloudFormation: Configuration Mgmt
  11. 11. Starting point • How can we leverage the Cloud? • Our application: – Simple Java based web application – One application – One database – Runs in our own DC
  12. 12. Creating a cloud service • Initial setup: – Route53 for DNS – One Elastic IP (static IPs for the Cloud) – One EC2 instance • Web Application • Database – One AZ
  13. 13. Creating a cloud service Availability Zone
  14. 14. Creating a cloud service • Simple approach to scale: – Different EC2 instance type • More RAM • More CPU power • More IOPS • Approach will hit a barrier
  15. 15. Creating a cloud service • Problems: – No failover – No redundancy – Database and application on one instance – Does not scale very well
  16. 16. Creating a cloud service • Separate Web Application from DB – One EC2 instance for the Web Application – One EC2 instance for the DB – Or: Managed DB service (RDS) • One AZ
  17. 17. Creating a cloud service Availability Zone Database
  18. 18. Creating a cloud service • Problems: – No failover – No redundancy – Does still not scale very well
  19. 19. Creating a cloud service • Add an ELB • Add EC2 instance for Web Application • Different AZs • Standby DB instance – Multi AZ setup in RDS
  20. 20. Creating a cloud service
  21. 21. Creating a cloud service Availability Zone Database Availability Zone Database
  22. 22. Creating a cloud service • Problems: – Still limited scaling capabilities – If one EC2 instance crashes, 50% less capability
  23. 23. Creating a cloud service • Add additional EC2 instances • Add read replicas in RDS
  24. 24. Creating a cloud service Availability Zone Database Availability Zone Database
  25. 25. Creating a cloud service • Problems: – Naive implementation – Does not leverage AWS services – Limited scaling – Can be quite expensive
  26. 26. Creating a cloud service • Refactoring • Introduce caches to take load from DB • Use S3 and CloudFront to ship static content • Store session data in DynamoDB • Add Autoscaling
  27. 27. Creating a cloud service • Autoscaling – Automatic resizing of compute clusters based on demand – Integrated to Amazon CloudWatch – Maximum and minimum pool sizes – Autoscaling policies triggered by CloudWatch alarms
  28. 28. Creating a cloud service Requests Elastic Load Balancing Latency Metrics CPU Metrics Amazon CloudWatch Metric Monitoring Alarm Notification Scale up/down
  29. 29. Creating a cloud service Availability Zone Auto Scaling group
  30. 30. Creating a cloud service • Started with a simple web application • Added several Amazon services • Managed to shift load from application to services • Added caches and CDN • Added Autoscaling
  31. 31. Creating a cloud service • Next steps: – SOA/Microservices – Loose coupling: decouple interactions – Amazon services, don‘t reinvent the wheel – Database federation – Database sharding
  32. 32. Docker Deployment • Amazon Services with Docker support: –Amazon OpsWorks* –Elastic Beanstalk –EC2 Container Service *by adding a custom Docker Layer
  33. 33. Docker Deployment • On EC2 level: – Using the Docker remote API – EC2 User Data
  34. 34. Docker Deployment • Remote API – API to access Docker daemon – Can be bound to specific host/port – E.g. Jenkins can trigger deployments – GET /containers/json
  35. 35. Docker Deployment • EC2 User Data – Data to configure instance during launch • Install Docker • Start Daemon • Run Docker container
  36. 36. Demo • Elastic architecture that grows and shrinks • Multiple AZs • Use case: simple web app • Elastic Beanstalk and Docker • Postgres RDS DB
  37. 37. Demo
  38. 38. • JHipster – Yeoman generator – Yeoman is a scaffolding tool for webapps – Creates Spring Boot/AngularJS projects Demo
  39. 39. • Support for: – Maven/Gradle – Spring Security – Spring Data JPA – Elasticsearch – MongoDB – Cassandra – ... Demo
  40. 40. Demo
  41. 41. Elastic Beanstalk • Docker support: – Dockerrun.aws.json specifies runtime – Dockerfile is an alternative • EC2 instances using Docker 1.6 • No direct port mapping • Local nginx reverse proxy • Connects to IP of Docker container
  42. 42. Elastic Beanstalk • Dockerrun.aws.json: – Specifies Docker image (support for private registries as well) – Defines port for local nginx – Support for volumes and logging as well
  43. 43. Elastic Beanstalk
  44. 44. Elastic Beanstalk But … we didn’t specify RDS connection strings in our Container?
  45. 45. • RDS specific values are exposed as ENV-variables • Mapped into the Docker container • Used by the application to connect to Postgres Elastic Beanstalk
  46. 46. Elastic Beanstalk
  47. 47. Elastic Beanstalk • nginx local proxy • Config in sites-enabled and conf.d • proxy-pass is http://docker • Maps to container-ip
  48. 48. Elastic Beanstalk
  49. 49. Elastic Beanstalk
  50. 50. Elastic Beanstalk
  51. 51. Q&A

×