Modern Applications – Modern ALMJeffrey S. Hammond, Vice President & Principal Analyst@jhammondMarch 26th, 2013
The best way to have a good idea…Source: Flickr (http://profiles.nlm.nih.gov/ps/retrieve/Narrative/MM/p-nid/55/p-visuals/true)
Software innovation used to be expensive…“When I built my first company in 1999 it cost $2.5 million in infrastructure just to get started and another $2.5 million in team costs to code, launch, manage, market and sell our software. So it’s not surprising that typical “A rounds” of venture capital were $5 to $10 million.” Mark Suster, GRP Partners …but what if innovation with software now cost 90% less than it used to?
The way we develop is changing… 7 Traits of Modern Applications 1. Omni-channel clients 2. Deployed on elastic infrastructure 3. Aggregate discrete services 4. Use managed APIs 5. Integrate open source software 6. Employ dev-ops techniques 7. Focus on measurable feedbackSource: Flickr http://upload.wikimedia.org/wikipedia/commons/6/65/HP_garage_front.JPG)
Building Modern Applications is hard! Are you Agile enough? Do you collect (and incorporate) rapid feedback? Can you design useful, usable, desirable experiences? Does your infrastructure evolve? Can you build high quality, multichannel, 5 star apps?Source: Flickr (http://www.flickr.com/photos/kaz25/2444344463/sizes/o/in/photostream//)
Modern Applications shift ALM focus Lifecycle Focus Systems of Time to Feedback Engagement Systems of Time to Certainty Record Systems of Time to Safety Operation
Adapting Agile principles› Use personas to drive insight› Create journey maps› Wireframes and prototypes build backlog› Feedback not requirements documents› Kanban boards to manage atomic demand› Analytics built into applications
Personas Jeremiah is 52 years old and has a lot of experience as sales representative working for Acme. His typical day is driving and visiting different clients. He knows a lot about Acme products and is glad to share this information with everybody he meet in his visits. As he is always on the road he needs to be very organized with his schedule and sensitive to time when he is at a specific clinic or hospital. He’s focused on accomplishing his sales goals for the month and wants to be home ASAP to enjoy the end of his day with his family. He is online most of the time, often through his 3G phone or his iPad and notebook, but sometimes inside clinics or hospitals the signal is very low or even non-existent. A big part of his job is to visit doctors and see if they need to replace any specific contact lens in their drawers. Acme expect him to be more a brand advocate than just an order taker. They expect him to talk about products, answer questions, offer new products and be very proactive in his visits to always try to sell more product.
IdentifyA Multi-channel journey map customer and stages of journey Persona: James Awareness Consideration Research Purchase Engagement Wow Describe each step in the journey, the customer’s 7 needs and 8Enjoyable 3 6 perceptions 2Functional 1 11 Indicate significant 5 steps 4 10 Neutral Missed It 9 Indicate primary (and secondary ) devices forFrustrating each step
Modern applications are complex systems Using the Cynefin framework Established Practices Complex Complicated Unknowable KnowableFeedback Probe, sense, respond Sense, analyze, respond Disorder Chaos Simple Turbulent and unconnected Known Act, sense, respond Sense, categorize, respond
We don’t how to make Modern Applications Established Practices Complex Systems of Complicated Unknowable Operation KnowableFeedback Systems Disorder of Record Systems of Engagement Chaos Simple Turbulent and unconnected Known
Modern applications evolve Amazon deployment stats (May -2012) › Mean time between deployments – 11.6 seconds › Max # deployment/hour – 1079 › Mean # of hosts simultaneously receiving a deployment – 10K › Max # of hosts simultaneously receiving a deployment – 30KSource: O’Reilly (http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf)Pictures: http://www.flickr.com/photos/blueridgekitties/4423381216/sizes/l/
A move toward different ALM processes› Fewer branches in SCM – evolve toward DVCS› Developers test› CI becomes decentralized, more atomic, and critical› You must run and consume beta› Mocks and mocking tools help manage multi layer complexity
How do you test? In production! › Test like you deploy – the last mile is beyond your control › Issues are hard to replicate in isolation › Big data requires storage › You need to harden your services › Delivered via a new generation of testing tools Not Quite A Simian ArmyPictures: http://www.flickr.com/photos/dyanna/3202542828/sizes/l/
Continuous Delivery Capability Is Key Level Focus Characteristics Results 5 Hypothesis- Requirements include testable metrics Delivery enables Frequent use of A/B testing business driven Services designed for CD delivery innovation DBMS changed decoupled from system changes 4 Release on Teams organized around services Service always in Deployment pipeline rejects bad changes a releasable state demand Work delivered in small batches Capability >= Need Comprehensive test + release automation 3 Regular CI and trunk-based development Regular release Automating provisioning and testing cadence releases w/ “Done” = tested and deployed milestones Capability < Need 2 Time-boxed Clear product ownership Planned releases Change management controls Capability < Need releases <1 mo. cycles Some testing, release automation 1 Heroic Manual testing Ad-hoc releases Integration explosion individuals Manual provisioninghttp://bit.ly/10hUmK3
You need to rethink your approach1. ALM that’s fit to purpose2. Revitalize architecture3. Horizontal, not vertical4. Support hi-perf teams5. “Done” is DONE6. Federate and collaborate7. Make it fun and rewarding!