Upload
anton-babenko
View
401
Download
1
Embed Size (px)
Citation preview
Designing For Elasticity On AWS
May 26th, 2015 - AWS User Group Norway
Who am I?
Anton Babenko
Sr. Software Engineer at Telenor DigitalOrganizer of AWS User Group Norway
Before:Web-developer, consultant and tech lead for the last 10 years. Using AWS since 2010.Betajob AS, Zoozoo.com, mCash, imagepush.to, SnappOrder, and many more.
E-mail: [email protected]: https://www.linkedin.com/in/antonbabenko Github: http://github.com/antonbabenko
Agenda:
1) AWS and Elasticity2) Application3) AWS Services
What is AWS?
What is AWS?
• Low infrastructure cost• No guesses and planning upfront• Unlimited Scalability• Highly reliable
What is AWS?
Scalability, Security, High-availability, Testability, Fault-tolerance and Elasticity are configurable properties of the AWS platform on which application is running.
What does elasticity mean?
How designing for cloud is different?
The cloud changes several processes, patterns, practices, philosophies and reinforces some traditional service-oriented architectural principles that you have learnt as they are even more important than before.
How designing for cloud is different?
Reinforce SOA principles:• Service loose coupling• Service abstraction• Service reusability• Service autonomy• Service statelessness• Service discoverability• ...
How designing for cloud is different?
The cloud brings some new philosophies:• Building scalable architectures• Understanding elasticity• Not fearing constraints
How designing for AWS is different?
• Not fearing constraints = “be creative in AWS-way”• “Design for failure and nothing fails”
SOA principles reinforced:• Service loose coupling - all• Service reusability - EC2, S3, Route53• Service discoverability - AS, tagging• ...
How to make app to get most of AWS in term of elasticity?
App should be scalable to be able to utilize cloud advantages fully.
What about web app ?
Web applications must be:1) Stateless2) Loosely coupled3) Able to scale horizontally
Advices:• Think parallel• Leverage different storage options• Automate everything
Read 12factor by Heroku.
How to implement elasticity on AWS?
How to implement elasticity on AWS?
Use Elastic Load Balancer:• Not free, but cheaper than your managed HAProxy (ELB
costs $0.028 pr. hour = $245 pr year)
https://aws.amazon.com/elasticloadbalancing/
How to implement elasticity on AWS?
Use Auto Scaling:• Free• Optionally combine with ELB
https://aws.amazon.com/autoscaling/
How to implement elasticity on AWS?
Monitor what is going on using standard Cloudwatch metricsor add custom metrics.
https://aws.amazon.com/cloudwatch/
How to implement elasticity on AWS?
Use dynamic configuration to bootstrap instances:• SimpleDB or DynamoDB can keep configurations, for example
https://aws.amazon.com/simpledb/ https://aws.amazon.com/dynamodb/
How to implement elasticity on AWS?
Automate everything:• Cloudformation• AWS CLI• …
https://aws.amazon.com/cloudformation/https://aws.amazon.com/cli/
How to get most of AWS?
1) Use free tier2) Use Route533) Use Cloudfront4) Experiment with instance types5) Decide which pricing model fits your needs best6) Use latest AMI and latest instance types7) Read
A Comprehensive Guide to Building a Scalable Web App on Amazon Web Services
8) Browse Cloud Design Pattern
Questions ?
We are hiring, come and talk to me.
Credits:
https://sdqweb.ipd.kit.edu/publications/pdfs/HeKoRe2013-ICAC-Elasticity.pdfhttp://en.wikipedia.org/wiki/Service-oriented_architecturehttps://www.airpair.com/aws/posts/building-a-scalable-web-app-on-amazon-web-services-p1http://en.clouddesignpattern.org/ http://aws.amazon.com/architecture/