delivery at scale

53
Delivery at Scale

Upload: agilar

Post on 12-Jul-2015

45 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Delivery at Scale

Delivery at Scale

Page 2: Delivery at Scale

Manu Cupcic and Adrian Perreau

Page 3: Delivery at Scale

Scale

● > 38 PB on our HDFS

● > 1 billion ad impressions per day

● > 5000 servers world wide

Page 4: Delivery at Scale

cost of change

number of devs

The problem

Page 5: Delivery at Scale

Once upon a time

Page 6: Delivery at Scale

Single C# Repository

Page 7: Delivery at Scale

Build on local machines

Page 8: Delivery at Scale

Build on local machines

Page 9: Delivery at Scale

Build on local machines

Page 10: Delivery at Scale

Continuous Integration??

Page 11: Delivery at Scale

Running applications

Page 12: Delivery at Scale

No Testing Culture

Page 13: Delivery at Scale

Weekly Merges

20 engineers

50 engineers

Page 14: Delivery at Scale

Weekly Merges: Disaster!

140 engineers

Page 15: Delivery at Scale
Page 16: Delivery at Scale

First attempt at fixing

Page 17: Delivery at Scale

Bring in the horse power

Page 18: Delivery at Scale

Internal Open Source Model

Page 19: Delivery at Scale

Splitting the Repository

Page 20: Delivery at Scale

Hmmmm… NuGets!

Page 21: Delivery at Scale

Problems

Page 22: Delivery at Scale

Repositories everywhere

2012 => 33 repositories2013 => 160+ repositories

Page 23: Delivery at Scale

Spaghetti and NuGetscriteo.frontend

criteo.display

criteo.cookies

common.utils

criteo.display

criteo.urlscriteo.objectscriteo.rendering

criteo.bidding

criteo.serve

criteo.sql

criteo.data

criteo.banners

criteo.memcache

flash

criteo.biere

Page 24: Delivery at Scale

Repository OwnershipAll repos to be owned by a teamMerge requests for repos you don’t own

Page 25: Delivery at Scale

Component Teams

Page 26: Delivery at Scale

Conway’s Vengeance“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”

Teams dealt with unclear interfaces, animosity grew stronger.

Page 27: Delivery at Scale

Propagating changes

Page 28: Delivery at Scale

SOX compliance (an example)Required updating the SDK (lowest level repository)Program Manager full time for over one monthSome TLAs were 5 SDK versions behind

Page 29: Delivery at Scale

Release problem

Code Freeze during peak season:Development continued

When code unfroze:One month worth of code to integrateTook 5 months to release again

Page 30: Delivery at Scale

It wasn’t scaling!Team had almost doubled

TLAs could take over ayear to release next time

We could lose our abilityto release forever

Page 31: Delivery at Scale

So why did we fail ?

developers owners of application

ae64ca3

57d21a9

4567a81

9aad4cb

f478ff347ac58171da3b5

Page 32: Delivery at Scale
Page 33: Delivery at Scale

Integrate early

developers

57d21a94567a81 9aad4cbf478ff3 47ac58171da3b5

Page 34: Delivery at Scale

Trunk based development

Page 35: Delivery at Scale

Trunk based development

Page 36: Delivery at Scale

TBD is a real pain...

“Branch by Abstraction" is a technique for making a large-

scale change to a software system in gradual way that

allows you to release the system regularly while the

change is still in-progress.

Martin Fowler

Page 37: Delivery at Scale

But we love it

Page 38: Delivery at Scale

What did it take ?

Page 39: Delivery at Scale

Build infrastructure

Virtual team for 6 months.

Afterwards, team became

permanent.

Page 40: Delivery at Scale

Killing the NuGet lag

● Move every git repository to the new code review tool

● Revert to the last version in production

● Build master continuously and show progress

● Deploy in preproduction then production

Page 41: Delivery at Scale

Test plans progress

Page 42: Delivery at Scale

Our setupin great (technical) details

Page 43: Delivery at Scale

Code reviews with gerritMOAB

Page 44: Delivery at Scale

...

...

...

Building and publishing project 70783/70784 : XXX ... [OK]

Building and publishing project 70784/70784 : XXX.UTest... [OK]

70784 projects successfully built (100.0 %).

10:09:12 cbs assembly-set update --moabId 13998

assemblyset.json written.

10:09:20 cbs export

Build 6a306a43dd147cd6a6fcacbf40e20b25f3f69845 exported.

10:10:23 cbs assembly-set upload

Assemblyset pushed to [email protected]:qa/moab.git

10:10:31 cbs tag HEAD build/current

The MOAB

Page 45: Delivery at Scale

The MOAB pipeline

Page 46: Delivery at Scale

The sandboxesa datacenter

a sandbox

Page 47: Delivery at Scale

How we deploydatacenter

1. scp

2. bittorrent

Page 48: Delivery at Scale

How we deploy

Page 49: Delivery at Scale

Automatic metrics checks

Page 50: Delivery at Scale

cost of change

number of devs *

Conclusion

* including 5% working full time on engineering tools

Page 51: Delivery at Scale

We’re not the only ones

Page 52: Delivery at Scale

Mandatory “we’re hiring” slide

Page 53: Delivery at Scale

Questions ?