Upload
daniel-bryant
View
164
Download
0
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
Cloud Developer’s DHARMA… redefining ‘done’ for Cloud applica3ons
Daniel Bryant CTO, Instant Access Technologies
@taidevcouk
@taidevcouk 19/02/2014
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
Core Changes…
• Service-‐Oriented Architecture
• Cloud-‐based deployments
• DevOps Culture
@taidevcouk 19/02/2014
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
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
We’ve created a “Cloud Developer’s DHARMA” to act as a checklist when building Cloud apps
19/02/2014 @taidevcouk
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
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
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
19/02/2014 @taidevcouk
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
19/02/2014 @taidevcouk
19/02/2014 @taidevcouk
19/02/2014 @taidevcouk
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
High Cohesion / Loose Coupling…
…all the way down • Public API – PayPal (bit.ly/1hnZNly)
• Architecture – Services – Components
19/02/2014 @taidevcouk
High Cohesion / Loose Coupling…
• Code – SOLID Principles
• Datastores / Caches – Fault tolerance – Zero-‐downPme deployments – MigraPon and upgrades
19/02/2014 @taidevcouk
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
Automated from Commit to Cloud
19/02/2014 @taidevcouk
• ConPnuous IntegraPon/Delivery • Jenkins Build Pipeline Plugin (bit.ly/1hq9XSN)
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
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
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
Deployment Planorm: What you’ve got…
19/02/2014 @taidevcouk
What you think you want…
19/02/2014 @taidevcouk
What you get…
19/02/2014 @taidevcouk
Fact: 9 out of 10 cheetahs prefer the taste of an Ops team over Enned food
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
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
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
Monitor All The Things!
• Infrastructure monitoring – Nagios – Zabbix – Splunk – AppDynamics
19/02/2014 @taidevcouk
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
Gauges, Counters, Meters, Timers…
19/02/2014 @taidevcouk
Health Checks
19/02/2014 @taidevcouk
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
AnPfragile
19/02/2014 @taidevcouk
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
AnPfragile
• The opposite of fragile? – Robust… – AnPfragile…
• Nenlix are best-‐in-‐class – bit.ly/1gs5n3q
• System must be robust first!
19/02/2014 @taidevcouk
Design for Failure
• Design paTerns – Timeouts / retries – Bulkheads / circuit-‐breakers
• InspiraPon – Chris Richardson (slidesha.re/1t3vsg) – Nenlix (bit.ly/1h5GMid)
19/02/2014 @taidevcouk
Real AnPfragility
• Autoscaling
19/02/2014 @taidevcouk
AnPfragile PaTerns
• Stateless components
• Distributed data stores / caches
• Eventual consistency
• Asynchronous communicaPon – Message / event driven
19/02/2014 @taidevcouk
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…
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