Scalable Java Application Development on AWS

8,036 views

Published on

Presentation from JEEConf conference (Kiev, May 2011) about best practices in scalable Java application development on AWS.

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,036
On SlideShare
0
From Embeds
0
Number of Embeds
3,211
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Scalable Java Application Development on AWS

  1. 1. Scalable Java Application Development on AWS<br />Mikalai Alimenkou<br />http://xpinjection.com<br />21.05.2011<br />
  2. 2. Background<br />Java Technical Lead/Scrum Master at Zoral Labs<br />6+ years in software development<br />4+ years of working by Agile methodologies<br />Expert in Agile engineering practices<br />Founder and coachat XP Injection (http://xpinjection.com)<br />Organizer of Selenium Camp and JEEConf conferences <br />
  3. 3. No<br />Future!<br />
  4. 4. Cloud Computing<br />Scalecapacityondemand<br />Turnfixedcostsintovariablecosts<br />CleanAPIsandconceptualmodels<br />Alwaysavailable<br />Cost-effective<br />Reducedtimetomarket<br />Focusonproduct<br />
  5. 5. Interesting startup<br />Completely in Java<br />Customer wants to use AWS<br />New Project Arrived<br />
  6. 6. AWS Structure<br />
  7. 7. Why Java?<br />Runs everywhere<br />Full technological stack<br />Lots of tools for scalability<br />Many frameworks for cloud development<br />
  8. 8. EC2 Quick Introduction<br />
  9. 9. Everything on AWS<br />Infrastructure<br />Testing<br />Staging<br />Production<br />Monitoring<br />
  10. 10. Easy and reliable server configuration with AMI<br />No work for system administrator<br />Any number of servers available<br />No waits for hardware<br />More experimenting and testing<br />Easy security model<br />Happiness…<br />
  11. 11. Look Ma, No Hands!<br />
  12. 12. What about money?<br />
  13. 13. EC2 Charging Model<br />
  14. 14.
  15. 15. What I Have for Such Money?<br />Testing Server<br />DB Server<br />Production Server<br />
  16. 16. Ways to Save Money<br />Good and responsible team <br />Reuse instances when possible rounding usage time<br />Release instances when not more needed<br />Monitor and control running instances<br />Use reserved instances for continuously running jobs<br />
  17. 17. EC2 Physical Distribution<br />
  18. 18. Elasticfox – my superhero!<br />
  19. 19. <ul><li>Hourly payment is invisible
  20. 20. Instances are virtual
  21. 21. Same type of machine, but different performance
  22. 22. Instance not immediately available
  23. 23. Images creation require “magical” skills
  24. 24. No multicast messaging</li></li></ul><li>Retry policies everywhere<br />Timeouts for all operations<br />Automatic recovery<br />Everything is Unreliable<br />
  25. 25. EBS Quick Introduction<br />Raw data volumes from 1GB to 1TB<br />Replicated automatically<br />Snapshots to S3<br />May be used with different instances<br />
  26. 26. EBS Architecture<br />
  27. 27. EBS Fault Tolerance<br />
  28. 28. EBS Cost Model<br />Not so cheap<br />Additional costs for snapshots in S3<br />
  29. 29. EBS != Hard Drive<br />Slow for time critical tasks<br />Bottleneck for Lucene indexing and DB<br />Use parallel EBS volumes<br />Separate data storage between EC2 instances<br />Don’t use RDS<br />Limited to 1TB<br />Virtual RAID<br />Data distribution<br />
  30. 30. S3 Quick Introduction<br />
  31. 31. Load Balancing with JMS<br />JMS is very scalable and flexible<br />JMS costs are less than SQS (Simple Queue Service)<br />Configurable load balancing<br />
  32. 32. Deployment Options<br />
  33. 33. Self-Distributed System<br /><ul><li>Host manager works via Java AWS API
  34. 34. Centralized deployment with
  35. 35. Code distribution to EC2 hosts</li></li></ul><li>Reduce Coupling to AWS<br />
  36. 36. Conclusions<br />AWS is great for startups or research projects<br />AWS increases development speed in times<br />It is easy to create scalable and highly available Java application on AWS<br />Development, testing and production may be done on AWS<br />AWS save development costs<br />AWS support Agile developmernt approaches<br />
  37. 37. Any questions?<br />

×