A Crash Course on AWS for App Developers

1,128 views

Published on

Talk give by Flux7's CEO, Aater Suleman, at the Bleeding Edge Web Meetup, Austin on May 28th 2014. The talk covers the following:

1. Quick introduction to Cloud Computing
2. Why AWS? How a traditional web-app can be run on AWS - the services and changes needed
3. A walk-through of AWS services
4. Web Developer Productivity
5. Lessons Learnt

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,128
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

A Crash Course on AWS for App Developers

  1. 1. Preamble: Intro to Cloud Computing Presented by: Aater Suleman, PhD Bleeding Edge Web Meetup, Austin: May 28th, 2014
  2. 2. Cloud Computing has turned computing into a Utility. Changes to Computer Thinking - Stephen Fry Explains Cloud Computing - A Must Watch!
  3. 3. Pay-per-use Dynamically scale processing, storage and memory No more guessing work on the hardware requirements
  4. 4. Compliance Security Reliability Scalability is as a package available to any business - irrespective of its type and size!
  5. 5. “Friends don't let their friends build data centers” -Charles Phillips, CEO of Infor AWS Summit 2014
  6. 6. Largest of the providers Most streamlined interface Most mature automation Lots of features Amazon Web Services Photo by Cacakian | CC BY
  7. 7. A Crash Course on AWS for App Developers
  8. 8. Who am I? Aater Suleman Geek, Architect, Developer, Ops ⇒ DevOps Co-founder & CEO Flux7 Part-time UT Austin Professor Flux7: Cloud and DevOps Solutions Cloud and Devops for Web teams Enterprise DevOps management Clients:
  9. 9. ★ Front-end HTML/JS developers ★ Backend developers ★ Operations folks ★ DevOps ★ Managers/executives Quick Poll HOW MANY?
  10. 10. ★ Enterprise ( > 1B in cap ) ★ Mid-tier ★ SMBs Quick Poll HOW MANY?
  11. 11. AWS (or any cloud) changes How to architect? How to develop? How to manage?
  12. 12. Architecting for AWS
  13. 13. AWS Evolution in 3-steps
  14. 14. Sample Web-app DB App Web Mem Cache Varnish Static storage DNSQueue NoSQL DB
  15. 15. Worry List DB backup Assets backup Uptime of Web Uptime of App Uptime of DB Uptime of static hosting Traffic spikes DoS attacks Security breaches
  16. 16. 0. Get AWS servers and setup DB App Web Mem Cache Varnish Static storage DNSQueue NoSQL DB
  17. 17. DB backup Assets backup Uptime of Web Uptime of App Uptime of DB Uptime of static hosting Traffic spikes DoS attacks Security breaches Worry List
  18. 18. 1. Replace tiers with AWS Services DB App Web Mem Cache Varnish Static storage DNSQueue NoSQL DB Queue
  19. 19. 1. Replace tiers with AWS Services DNS App Web DynamoDB SQS RDS Elasticache CloudFront S3
  20. 20. Servers aka. Instances Amazon EC2 AMIs aka. Images Volumes and Snapshots
  21. 21. Traditional DB as a service. Amazon RDS
  22. 22. Fast Geographically distributed Ability to cache static and dynamic content Amazon CloudFront Caching layer (Think Varnish!)
  23. 23. In-memory caching tier for your application Spin up with a single click and start using Redis and Memcached are available Amazon Elasticache
  24. 24. Object storage: High Availability (99.99%) High Durability (99.999999999%) Fast Amazon S3
  25. 25. Amazon DynamoDB NoSQL DB as a service Create a new Column-based NoSQL in minutes
  26. 26. Other Services Route53 : Amazon’s DNS servers SNS : For server-to-server and server-to- man communication SQS : On-demand queuing service SWF : Simple Workflow
  27. 27. DB backup Assets backup Uptime of Web Uptime of App Uptime of DB Uptime of static hosting Traffic spikes DoS attacks Security breaches Worry List
  28. 28. Whether or not to replace a tier What is the availability requirement? Can i achieve the uptime using EC2 servers? Will it be cheaper? Will I save in terms of code changes?
  29. 29. 2. Secure DNS App Web DynamoDB SQS RDS Elasticache CloudFront S3
  30. 30. Security Groups Security Group VPC Security Services
  31. 31. 2. Secure DNS App Web DynamoDB SQS RDS Elasticache CloudFront S3 VPC Subnet Subnet Subnet Subnet
  32. 32. 3. Leverage Elasticity DNS App Web DynamoDB SQS RDS Elasticache CloudFront S3 VPC Subnet Subnet Subnet Subnet AppApp Web Web
  33. 33. Auto-scaling Groups Scaling Services Elastic BeanStalk OpsWorks
  34. 34. Separate stateful services from stateless services Do not rely on server IP addresses being fixed Bake your server’s images Auto-scaling Checklist
  35. 35. DB backup Assets backup Uptime of Web Uptime of App Uptime of DB Uptime static hosting Traffic spikes DoS attacks Security breaches Worry List
  36. 36. DNS App Web DynamoDB SQS RDS Elasticache CloudFront S3 VPC Subnet Subnet Subnet Subnet AppApp Web Web
  37. 37. How to code?
  38. 38. Cattle, not pets! Have numbers assigned Are usually identical Replaced when not in good health You need more, you buy more Has a personalized name Unique, Special and Cared for Taken care when ill Src: Gavin McCance from CERN
  39. 39. Servers are cattle, don’t use IP addresses and host name in code Use an existing service whenever possible Don’t mix stateful and stateless services Script application deployment or use configuration management Setup local developer environments Five Take Aways
  40. 40. How to code? Developer Local Test QA Production Least expensive but most executed Most expensive but least executed
  41. 41. AppWeb DB LogStash Mem $ HTTP SSH Virtualbox VM App Code and Logs Laptop devenv.sh for interacting with the setup Docker Containers Redis Src: Using Docker to Improve Web Developer Productivity
  42. 42. How to manage?
  43. 43. How to manage? How to deploy code to an auto-scaling group? How to configure the servers in this dynamic environment? How to create/re-create environments on failure?
  44. 44. How to deploy code to an auto scaling group ? Don’t deploy new code to a server Make a new server and replace the old one with it Read More on the 6 deployment methods here
  45. 45. How do I manage and patch my servers? Don’t. Create deployment scripts and just create a new image
  46. 46. How to create/re-create environments on failure? Automate the process of creating the entire environment using AWS CloudFormation templates. Create a new environment with one click.
  47. 47. Other Lessons Configuration management Setup CI/CD
  48. 48. Thank You! Twitter: @Flux7Labs Website: www.flux7.com

×