42
Cloud Developer’s DHARMA… redefining ‘done’ for Cloud applica3ons Daniel Bryant CTO, Instant Access Technologies [email protected] @taidevcouk

BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Embed Size (px)

DESCRIPTION

This is a beta version of a talk I hope to present at a few Java / Software Development conferences this year. Comments are most welcome!

Citation preview

Page 1: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Cloud  Developer’s  DHARMA…    redefining  ‘done’  for  Cloud  applica3ons  

Daniel  Bryant  CTO,  Instant  Access  Technologies  

 [email protected]  

@taidevcouk    

Page 2: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

@taidevcouk  19/02/2014  

Page 3: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

epoints.com  2012/13  Upgrade…  

@taidevcouk  19/02/2014  

•  Increasing  traffic    – Scalability  being  stretched  

•  Increasingly  diverse  requirements  

•  Our  starPng  point  – Developers  creaPng  monolithic  applicaPon  – Manual  QA  – OperaPons  deploying  to  data  center  

Page 4: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Core  Changes…  

•  Service-­‐Oriented  Architecture  

•  Cloud-­‐based  deployments  

•  DevOps  Culture  

@taidevcouk  19/02/2014  

Page 5: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Core  Changes…  

•  Service-­‐Oriented  Architecture  – TwiTer’s  Story  (bit.ly/1j1WbmI)  

•  Cloud-­‐based  deployments  – Tonight!  

•  DevOps  Culture  – LJC  Event  March  13th  7pm  

@taidevcouk  19/02/2014  

Page 6: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Moving  to  the  Cloud  

•  IAT  chose  Amazon  Web  Services  (AWS)  IaaS  

•  Great  choice,  but…  – Made  a  few  mistakes    – Learnt  lots  of  lessons  

19/02/2014   @taidevcouk  

Page 7: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

   We’ve  created  a  “Cloud  Developer’s  DHARMA”  to  act  as  a  checklist  when  building  Cloud  apps  

19/02/2014   @taidevcouk  

Page 8: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

dharma  /ˈdɑːmə,ˈdəːmə/    noun    1.  Signifies  behaviors  that  are  considered  to  be  in  

accord  with  order  that  makes  life  and  universe  possible  (Hinduism)  

2.  "cosmic  law  and  order”,  but  is  also  applied  to  the  teachings  of  the  Buddha  (Buddhism)  

19/02/2014   @taidevcouk  

Page 9: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 10: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 11: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

19/02/2014   @taidevcouk  

Page 12: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Edge  DocumentaPon  is  Vital  

•  Swagger  – helloreverb.com/developers/swagger  

•  Mashery’s  IODocs  – www.mashery.com/product/io-­‐docs  

•  Google’s  Discovery  Documents  – developers.google.com/discovery/v1/using  

19/02/2014   @taidevcouk  

Page 13: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

19/02/2014   @taidevcouk  

Page 14: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

19/02/2014   @taidevcouk  

Page 15: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

19/02/2014   @taidevcouk  

Page 16: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 17: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

High  Cohesion  /  Loose  Coupling…  

…all  the  way  down    •  Public  API  – PayPal  (bit.ly/1hnZNly)  

•  Architecture  – Services  – Components  

19/02/2014   @taidevcouk  

Page 18: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

High  Cohesion  /  Loose  Coupling…  

•  Code  – SOLID  Principles  

•  Datastores  /  Caches  – Fault  tolerance  – Zero-­‐downPme  deployments  – MigraPon  and  upgrades  

19/02/2014   @taidevcouk  

Page 19: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 20: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Automated  from  Commit  to  Cloud  

19/02/2014   @taidevcouk  

•  ConPnuous  IntegraPon/Delivery  •  Jenkins  Build  Pipeline  Plugin  (bit.ly/1hq9XSN)  

Page 21: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Our  Build  Pipeline  

•  Component  Build    – Compile  – Unit  Tests  (surefire)  –  IntegraPon  Tests  (failsafe)  

•  Deployment  onto  QA  Cloud  – Python  Scripts  +  Chef  to  provision  – Verify  success  using  Python  

19/02/2014   @taidevcouk  

Page 22: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Our  Build  Pipeline  •  Acceptance  Tests  –  Cucumber  and  Selenium  – Work  in  progress…  

•  Performance  Tests  –  Jmeter  –  Jenkins  Jmeter  performance  plugin  

•  Staging  /  Live  Deployment  – Human-­‐based  condiPonal  operaPon    

19/02/2014   @taidevcouk  

Page 23: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 24: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Deployment  Planorm:  What  you’ve  got…  

19/02/2014   @taidevcouk  

Page 25: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

What  you  think  you  want…  

19/02/2014   @taidevcouk  

Page 26: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

What  you  get…  

19/02/2014   @taidevcouk  

Fact:  9  out  of  10  cheetahs  prefer  the  taste  of  an  Ops  team  over  Enned  food    

Page 27: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Thou  Shalt  Know  thy  Cloud…  

•  AWS  EBS  100  IOPS  (by  default)    – My  Mac  SSD  does  49K  IOPS  

•  1000Mbps  network  max  transfer  ~125Mb/s  –  My  Mac  does  400+  Mb/s  SequenPal  Write  to  SSD  

 Reference  for  Mac  staPsPcs:  bit.ly/1tJZH8  

19/02/2014   @taidevcouk  

Page 28: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Thou  Shalt  Know  thy  Cloud…  

•  “Noisy  [virtual]  Neighbours”  – My  Mac  only  deals  with  noisy  colleagues  

•  “Things  fail  all  the  Pme  [in  the  Cloud]”  – My  Mac  is  quite  reliable…  

   

19/02/2014   @taidevcouk  

Page 29: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 30: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Monitor  All  The  Things!  

•  Infrastructure  monitoring  – Nagios  – Zabbix  – Splunk  – AppDynamics  

19/02/2014   @taidevcouk  

Page 31: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Component  Metrics  

19/02/2014   @taidevcouk  

•  Dropwizard’s  Metrics  – metrics.codahale.com  

•  Nenlix’s  Servo  – github.com/Nenlix/servo  

•  Etsy’s  StatsD  – github.com/etsy/statsd/wiki  

Page 32: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Gauges,  Counters,  Meters,  Timers…  

19/02/2014   @taidevcouk  

Page 33: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Health  Checks  

19/02/2014   @taidevcouk  

Page 34: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  

19/02/2014   @taidevcouk  

Page 35: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

AnPfragile  

19/02/2014   @taidevcouk  

Page 36: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Black  Swan  Theory    

“…is  a  metaphor  that  describes  an  event  that  comes  as  a  surprise,  has  a  major  effect,  and  is  oten  inappropriately  raPonalized  ater  the  fact  with  the  benefit  of  hindsight”    

 Nassim  Nicholas  Taleb,  The  Black  Swan  

19/02/2014   @taidevcouk  

Page 37: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

AnPfragile  

•  The  opposite  of  fragile?  – Robust…  – AnPfragile…  

•  Nenlix  are  best-­‐in-­‐class  – bit.ly/1gs5n3q  

•  System  must  be  robust  first!  

19/02/2014   @taidevcouk  

Page 38: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Design  for  Failure  

•  Design  paTerns  – Timeouts  /  retries  – Bulkheads  /  circuit-­‐breakers  

•  InspiraPon  – Chris  Richardson  (slidesha.re/1t3vsg)  – Nenlix  (bit.ly/1h5GMid)  

19/02/2014   @taidevcouk  

Page 39: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Real  AnPfragility  

•  Autoscaling  

19/02/2014   @taidevcouk  

Page 40: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

AnPfragile  PaTerns  

•  Stateless  components  

•  Distributed  data  stores  /  caches  

•  Eventual  consistency  

•  Asynchronous  communicaPon  – Message  /  event  driven  

19/02/2014   @taidevcouk  

Page 41: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Documented  (at  the  edge)  

Highly  cohesive/loosely  coupled  (all  the  way  down)  

Automated  from  commit  to  Cloud  

Resource  aware  Monitored  thoroughly  

AnPfragile  19/02/2014   @taidevcouk  

So,  Cloud  Apps  are  ‘done’  when…  

Page 42: BETA: "Cloud Developers DHARMA: Redefining 'done' for Cloud applications"

Thanks  For  Listening  

•  Massive  thanks  to  all  the  IAT  team!  

•  This  is  a  beta  version  talk    – Feedback  is  most  appreciated!  

•  QuesPons  /  comments?  – [email protected]  – @taidevcouk  

19/02/2014   @taidevcouk