$30 off During Our Annual Pro Sale. View Details »

Designing Cloud-Aware Applications

Designing Cloud-Aware Applications

We can’t keep building applications the same way we’ve always done and expect them to work well on cloud platforms. We’ve got to let go of WORA (write once, run anywhere). Clouds offer different features and fail in different ways. Systems need to be engineered to be aware of these peculiarities.

In this presentation, Richard urges developers to think about abandoning existing and comfortable patterns and guides them towards new ones that will allow their applications to be more awesome on their chosen cloud.

Avatar for Richard Watson

Richard Watson

August 10, 2013
Tweet

Other Decks in Technology

Transcript

  1. 2

  2. 5

  3. 9

  4. “We’d  point  fingers,     but  we  wouldn’t  be  

      where  we  are  today     without  EC2”  
  5. 13

  6. 14

  7. 15 Reason  2.  Because   architecture   decisions  translate  

    directly  to  cost  in   the  cloud  
  8. $ Processing   data   $ Sending   emails   $ Moving  

    data   $ Storing   data     $ Load   balancing   $ Managing  IP     addresses   $ Monitoring   WTF?  
  9. 18

  10. 20

  11. Remind  me:  Why  Cloud  anyway?     Uses  shared  

    and  dynamic   infrastructure   On-­‐demand   as  a  service   Elas4c  and   scalable   Meters   consump4on   Available  across  common  networks  
  12. 24

  13. 25 “The future is already here — it's just not

    very evenly distributed.”! - William Gibson, 1993. "
  14. 30

  15. 31

  16. 33

  17. 34

  18. 35

  19. 36

  20. 38

  21. Characteristics Principles and Constraints Patterns Goals Anti- patterns App Structure

    and organization Cost-effective Peak-load- capacity Scales Elastically and Uses Shared Infrastructure Parallelizable and Resource Consumption Aware Stateless; Data Partitioning ACID Transactions, Hardware Affinity
  22. Latency   Tolerant   Instrumented   Failure   Aware  

    Parallelizable   Automated   Resource   Consump4on   Aware  
  23. 41

  24. 42

  25. 43

  26. 44

  27. • Hardware  will  fail   • So^ware  will  have  bugs   • Operators

     will  make   mistakes   Mo4va4on   • Stateless  services   • Redundancy   • Idempotent  opera4ons   Pa_erns   • Stateful  services   • Single  point  of  failure   An4-­‐ pa_erns   Failure  Aware  
  28. 48

  29. • Easily  re-­‐created   and  installed,   expendable   Mo4va4on  

    • Restartable   • Recipe  driven   Pa_erns   • Complex   dependencies   • Hardware  affinity   • Eager  loading   An4-­‐ pa_erns   Automated  
  30. • Efficient  resource   usage  (aka  Pay  less!)   Mo4va4on  

    • Fine-­‐grained  modular   services   • Mul4tenancy   Pa_erns   • Monolithic  design  and   deployment   • Single  tenancy   An4-­‐ pa_erns   Resource  Consump4on   Aware  
  31. •  Can't  debug   •  Understand   design  impact  

    Mo4va4on   •  APIs   •  Media4on   points   Pa_erns   •  Direct  code-­‐ to-­‐container   •  Monolithic   code  design   An4-­‐ pa_erns   Instrumented  
  32. 58

  33. • Horizontal   scalability   Mo4va4on   • Stateless   • RESTful  

    • Workload   decomposi4on   Pa_erns   • Single  Point  of   Bo_leneck   • Synchronous   An4-­‐ pa_erns   Parallelizable  
  34. 63 Latency numbers everyone should know 
 (by Jeff Dean

    / Peter Norvig) " https://gist.github.com/jboner/2841832
  35. • Shared  and  virtual   infrastructure   • Accessed  across   Internet

      Mo4va4on   • Asynchronous,  Event-­‐ driven   • In-­‐memory   processing,  CDN   Pa_erns   • Synchronous,  cha_y   interac4ons   • Latency  guarantees   An4-­‐ pa_erns   Latency  Tolerant  
  36. IaaS   Developer   PaaS   Asynchronous   Data  caching

      Fine  grained  &     modular  services   Redundancy   Workload   decomposi>on   Pa?erns   Who     Implements?   =  Implements   =  Par>ally  implements  
  37. 68