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

architecting for continuous delivery
SMART_READER_LITE
LIVE PREVIEW

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)


slide-1
SLIDE 1

Architecting for Continuous Delivery

Russ Barnett, Chief Architect John Esser, Director of Engineering Productivity Ancestry.com

slide-2
SLIDE 2

Background

2

slide-3
SLIDE 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

slide-4
SLIDE 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!

slide-5
SLIDE 5

Evolution to Continuous Delivery

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

slide-6
SLIDE 6

Typical Impediments to Continuous Delivery

  • Cultural
  • Technical practices
  • Quality ownership
  • Infrastructure
  • Architectural
slide-7
SLIDE 7

Limiting Factors

  • Pipeline serialized at integration

– Errors that occurred in this stage stalled the pipeline

  • Stalls in integration induced

additional problems

  • Increasing frequency of stalls

– As number of development teams grew, frequency of stalls increased

7

Integration Source Control Build Unit Testing System Testing Deployment Team A Team B Team C

error causes stall

slide-8
SLIDE 8

Everything was coupled! (Aka, large batch size)

(It became known as the “big blob!”)

8

slide-9
SLIDE 9

9

slide-10
SLIDE 10

Little’s Law

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

10

slide-11
SLIDE 11

Problems with Large Batches

  • Increases cycle time
  • Increases variability non-linearly as 2n
  • Increases risk
  • Reduces efficiency
  • Limited by its worst element.

from Principles of Product Development Flow, Don Reinertsen

11

slide-12
SLIDE 12

Answer?

Utilize small batches.

12

slide-13
SLIDE 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

slide-14
SLIDE 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

slide-15
SLIDE 15

Creating an Architecture for Agility

15

slide-16
SLIDE 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

slide-17
SLIDE 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

slide-18
SLIDE 18

Backward and Forward Compatibility

Client Version 1 Service Version 1 Service Version 2 Client Version 2 Deployment Rollback Deployment Rollback Backward Compatibility Backward Compatibility Forward Compatibility Forward Compatibility

  • Server Backward Compatibility

– Newer servers work with clients written to old interface

  • Server Forward Compatibility

– Existing servers work with clients written to newer interface – Supports early client deployment

  • Client Backward Compatibility

– Newer clients work with servers that implement old interface – Supports server rollback

  • Client Forward Compatibility

– Old clients work with servers that implement new interface

slide-19
SLIDE 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

slide-20
SLIDE 20

Improving Interface Verification

20

Server Client

In Process Client/Server

Server Client

  • Remember when you could run your

entire application in one process?

  • How do we get better interface

verification with services?

In Process Thrift SOAP/WSDL REST

Verifiable Decoupled

Google Protocol Buffers

slide-21
SLIDE 21

Interface Verification using Proxies and Stubs

21

Stub Proxy Client Server

Client/Server with Proxy/Stub

  • Verifies interface at compile time
  • Isolates code from versioning issues
  • Easier to provide mock implementations
  • Can test backward and forward

compatibility

slide-22
SLIDE 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

slide-23
SLIDE 23

Ancestry Deep Status Check

23

Service 1 Service A Service C Service B App 2 Service 2 GetStatus Monitor App 1

Unidentified Client Unregistered Client Connection Error

Database

File System Level 1 Level 2 Level 3 Level 4

slide-24
SLIDE 24

< 2 s 95% < 4 s fail 99.9% SLA

Service Level Agreements

  • Understand Business Expectations

– Each application and service establishes a contract with each client specifying the expected performance characteristics

24

  • Methodology

– Use percentile buckets rather than an average – Performance is a component of availability

slide-25
SLIDE 25

Verify Client Identity Check Circuit Breaker Track Each Incoming Request Report Compliance

Incoming Requests

Check Circuit Breaker Provide Fallback Mechanism Track Each Outgoing Request Report Compliance

Outgoing Requests

Service Level Agreement System

  • Compare incoming and outgoing SLA compliance

Service

slide-26
SLIDE 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

slide-27
SLIDE 27
  • Questions?

Contact info: jesser@ancestry.com. rbarnett@ancestry.com.

Ancestry is hiring in San Francisco and Utah

27