architecting for continuous delivery
play

Architecting for Continuous Delivery Russ Barnett, Chief Architect - PowerPoint PPT Presentation

Architecting for Continuous Delivery Russ Barnett, Chief Architect John Esser, Director of Engineering Productivity Ancestry.com Background 2 Growth at Ancestry.com Subscribers have doubled in the past 3 years (~1M to > 2M)


  1. Architecting for Continuous Delivery Russ Barnett, Chief Architect John Esser, Director of Engineering Productivity Ancestry.com

  2. Background 2

  3. Growth at Ancestry.com • Subscribers have doubled in the past 3 years – (~1M to > 2M) • Page views have doubled in the past 3 years – (~25M/day to ~50M/day) • Development head count has tripled – (100 to 300) • Feature throughput has dramatically increased 3

  4. Continuous Delivery is consistently and reliably releasing business value increments fast through automated build, test, configuration and deployment. What is the value of going fast? A LOT!

  5. Evolution to Continuous Delivery Two year period (2010 – present) Future – “Agile v2” Continuous Delivery Adoption Agile Architecture Standards Enterprise Agile Framework Agile Boot Up (Scrum)

  6. Typical Impediments to Continuous Delivery • Cultural • Technical practices • Quality ownership • Infrastructure • Architectural

  7. Limiting Factors • Pipeline serialized at integration Team A Team B Team C – Errors that occurred in this stage stalled the pipeline Source Control • Stalls in integration induced Build additional problems Unit Testing • Increasing frequency of stalls error – As number of development Integration causes teams grew, frequency of stalls stall increased System Testing Deployment 7

  8. Everything was coupled! (Aka, large batch size) (It became known as the “big blob!”) 8

  9. 9

  10. Little’s Law 𝑅𝑣𝑓𝑣𝑓 𝑡𝑗𝑨𝑓 𝑋𝑏𝑗𝑢 𝑈𝑗𝑛𝑓 = 𝑄𝑠𝑝𝑑𝑓𝑡𝑡𝑗𝑜𝑕 𝑆𝑏𝑢𝑓 𝑅𝑣𝑓𝑣𝑓 𝑡𝑗𝑨𝑓 ∝ 𝐶𝑏𝑢𝑑ℎ 𝑡𝑗𝑨𝑓 We can reduce wait time (cycle time) by reducing batch size without changing demand or capacity . 10

  11. Problems with Large Batches • Increases cycle time • Increases variability non-linearly as 2 n • Increases risk • Reduces efficiency • Limited by its worst element. from Principles of Product Development Flow , Don Reinertsen 11

  12. Answer? Utilize small batches. 12

  13. Fluidity Principle Loose coupling between product systems enables small batches “Once a product developer realizes that small batches are desirable, they start adopting product architectures that permit work to flow in small, decoupled batches.” from Principles of Product Development Flow , Don Reinertsen 13

  14. Fluidity Principle Loose coupling between product systems enables small batches “Once a product developer realizes that small batches are desirable, they start adopting product architectures that permit work to flow in small, decoupled batches.” from Principles of Product Development Flow , Don Reinertsen 14

  15. Creating an Architecture for Agility 15

  16. Architectural Impediments • Cross-Component Coupling – Creates groups of systems that must be deployed together • Insufficient Rollback Capability – Causes teams to resort to cascading rollback • Poor Testing and Monitoring – Requires a long testing period – Lengthens feedback cycle – Allows quality problems to escape to and affect customers 16

  17. Architectural Methods for Removing Impediments • Partition into small single-responsibility components “ There should only be one reason for a [component] to change ” - Robert Martin • Decouple deployment of components – Separately deploy components – Remove order dependent deployment • Support Independent Rollback – Enforce strict backward and forward compatibility 17

  18. Backward and Forward Compatibility • Server Backward Compatibility – Newer servers work with clients Deployment Client Client written to old interface Version 1 Version 2 • Server Forward Compatibility Rollback Forward Backward – Existing servers work with clients Compatibility Compatibility written to newer interface – Supports early client deployment • Client Backward Compatibility – Newer clients work with servers Forward Backward Compatibility Compatibility that implement old interface – Supports server rollback Deployment Service Service • Client Forward Compatibility Version 1 Version 2 Rollback – Old clients work with servers that implement new interface

  19. Enforcing Decoupled Components • Implementing standards is insufficient – Independent deployment forces some decoupling – High rate of deployment issues indicate remaining coupling • Improve integration testing – Verify backward and forward compatibility – Identify breaking changes quickly – Make writing integration tests easier 19

  20. Improving Interface Verification • Remember when you could run your Client entire application in one process? Server Google In Process Protocol Buffers In Process SOAP/WSDL Verifiable Thrift Client REST Decoupled Server • How do we get better interface Client/Server verification with services? 20

  21. Interface Verification using Proxies and Stubs • Verifies interface at compile time Client • Isolates code from versioning issues Proxy • Easier to provide mock implementations Stub • Can test backward and forward Server compatibility Client/Server with Proxy/Stub 21

  22. Managing a Complex Network of Services • Ancestry Scale – About 40 different teams – Over 300 separate application or service systems – Stack is 5+ levels deep • Historical Diagnostics – Presented a client centric or top down view – Insufficient for identifying problems in a network of services • Solution: Deep Status Check – Components provide dynamic status information for each client and dependency – Report traverses dependencies up to a given depth 22

  23. Ancestry Deep Status Check Monitor App 1 Level 1 App 2 GetStatus Service Service Connection Error Level 2 1 2 Service Service Level 3 A C File Service Level 4 Database System B Unregistered Unidentified Client Client 23

  24. Service Level Agreements • Understand Business Expectations – Each application and service establishes a contract with each client specifying the expected performance characteristics • Methodology SLA fail – Use percentile 99.9% < 4 s buckets rather than 95% an average – Performance is a component of < 2 s availability 24

  25. Service Level Agreement System Verify Client Identity Incoming Requests Check Circuit Breaker Track Each Incoming Request Report Compliance Service Check Circuit Breaker Outgoing Requests Provide Fallback Mechanism Track Each Outgoing Request Report Compliance • Compare incoming and outgoing SLA compliance

  26. Conclusion • Architecture affects agility and continuous delivery capability as much or more than other factors. • Process and tool improvements alone are insufficient. • Good architecture techniques enable effective continuous delivery at large scale. – Partition to single-responsibility components. – Decouple deployment – Support independent rollback – Improve testing and monitoring infrastructure 26

  27. • Questions? Contact info: jesser@ancestry.com. rbarnett@ancestry.com. Ancestry is hiring in San Francisco and Utah 27

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend