56
Replacing a Jet Engine Mid-flight Or, how we launched new architecture for planet-scale distributed system at Google Aysylu Greenberg August 22, 2016

: Replacing a Jet Engine Mid-Flight

Embed Size (px)

Citation preview

Page 1: : Replacing a Jet Engine Mid-Flight

Replacing a Jet Engine Mid-flight

Or, how we launched new architecture for

planet-scale distributed system at Google

Aysylu GreenbergAugust 22, 2016

Page 2: : Replacing a Jet Engine Mid-Flight

Aysylu Greenberg

@aysylu22

Page 4: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 5: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 6: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 7: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 8: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 9: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 10: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 11: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 12: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 13: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 14: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 15: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 16: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 17: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 18: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 19: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 20: : Replacing a Jet Engine Mid-Flight

Towards Distributed Build System

Page 24: : Replacing a Jet Engine Mid-Flight

From Push to Pull: Client / Server

Client for

User

BuildRabbit

Scheduler

BuildRabbit

Worker

Page 25: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

From Push to Pull: Build Service

Page 26: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

From Push to Pull: Build Service

Page 27: : Replacing a Jet Engine Mid-Flight

Client

for

User

BuildRabbit

Scheduler

BuildRabbit

Worker

Page 28: : Replacing a Jet Engine Mid-Flight

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Client

for

User

BuildRabbit

Scheduler

BuildRabbit

Worker

Page 29: : Replacing a Jet Engine Mid-Flight

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Client

for

User

BuildRabbit

Scheduler

BuildRabbit

Worker

RESILIENCE

LOGIC

RESILIENCE LOGIC

Page 31: : Replacing a Jet Engine Mid-Flight

Continuous

integration

system

BuildRabbit Blaze

Source

System

Google

engineers &

teams

Release

infrastructure

Integration

testing

infrastructure

Build

artifact

storage

Page 32: : Replacing a Jet Engine Mid-Flight

Continuous

integration

system

BuildRabbit

Source

System

Google

engineers &

teams

Release

infrastructure

Integration

testing

infrastructure

Build

artifact

storage

IN THE

CLOUD

Page 33: : Replacing a Jet Engine Mid-Flight

REPLACING A JET ENGINE MID-FLIGHT

Page 34: : Replacing a Jet Engine Mid-Flight

Confidential + Proprietary

Page 35: : Replacing a Jet Engine Mid-Flight

Photo by moonjazz / CC BY SA

Migration with Zero Downtime

Page 36: : Replacing a Jet Engine Mid-Flight

MIGRATE BACKENDS FIRST

Page 37: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 38: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 39: : Replacing a Jet Engine Mid-Flight

LOTS OF THROWAWAY CODE

MIGRATE BACKENDS FIRST

Page 41: : Replacing a Jet Engine Mid-Flight

FOCUS ON MIXED MODE

LOTS OF THROWAWAY CODE

MIGRATE BACKENDS FIRST

Page 42: : Replacing a Jet Engine Mid-Flight

FOCUS ON MIXED MODE

LOTS OF THROWAWAY CODE

MIGRATE BACKENDS FIRST

>>> Compatibility window is several months

Page 43: : Replacing a Jet Engine Mid-Flight

TARGET LAUNCH-FRIENDLY CLIENTS

FOCUS ON MIXED MODE

LOTS OF THROWAWAY CODE

MIGRATE BACKENDS FIRST

Page 44: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 45: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 46: : Replacing a Jet Engine Mid-Flight

DECOUPLE LAUNCH OF SERVICES

TARGET LAUNCH-FRIENDLY CLIENTS

FOCUS ON MIXED MODE

LOTS OF THROWAWAY CODE

MIGRATE BACKENDS FIRST

Page 47: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 48: : Replacing a Jet Engine Mid-Flight

RPCeventstream

User

Persistent

Queue

BuildRabbit

Worker

Build Artifacts

Build Progress

Info

Page 49: : Replacing a Jet Engine Mid-Flight

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICES

TARGET LAUNCH-FRIENDLY CLIENTS

FOCUS ON MIXED MODE

LOTS OF THROWAWAY CODEMIGRATE BACKENDS FIRST

Page 50: : Replacing a Jet Engine Mid-Flight

MAXIMUM VISIBILITY INTO SYSTEM STATE

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICES

TARGET LAUNCH-FRIENDLY CLIENTS

FOCUS ON MIXED MODELOTS OF THROWAWAY CODE

Page 51: : Replacing a Jet Engine Mid-Flight

GRADUAL ROLLOUT

MAXIMUM VISIBILITY INTO SYSTEM STATE

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICES

TARGET LAUNCH-FRIENDLY CLIENTSFOCUS ON MIXED MODE

Page 52: : Replacing a Jet Engine Mid-Flight

PRACTICE BEFORE LAUNCH

GRADUAL ROLLOUT

MAXIMUM VISIBILITY INTO SYSTEM STATE

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICESTARGET LAUNCH-FRIENDLY CLIENTS

Page 53: : Replacing a Jet Engine Mid-Flight

PRACTICE BEFORE LAUNCH

GRADUAL ROLLOUT

MAXIMUM VISIBILITY INTO SYSTEM STATE

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICESTARGET LAUNCH-FRIENDLY CLIENTS

Page 54: : Replacing a Jet Engine Mid-Flight

PRACTICE BEFORE LAUNCH, A LOT

GRADUAL ROLLOUT

MAXIMUM VISIBILITY INTO SYSTEM STATE

HAVE A SOLID ROLLBACK PLAN

DECOUPLE LAUNCH OF SERVICESTARGET LAUNCH-FRIENDLY CLIENTS

Page 55: : Replacing a Jet Engine Mid-Flight

Photo by moonjazz / CC BY SA

Migration with Zero Downtime

Page 56: : Replacing a Jet Engine Mid-Flight

Replacing a Jet Engine Mid-flight

Or, how we launched new architecture for

planet-scale distributed system at Google

Aysylu Greenberg@aysylu22