0

Companies such as Amazon, Etsy, Google, Facebook and others are publicly saying they deploy software thousands time per day.

What are they doing that is so different from other companies? How can other software companies deploy software thousands times per day, what is stopping them from doing so today?

030
  • 13,383
  • 17
  • 76
  • 178
Evgeny Zislis
  • 9,023
  • 5
  • 39
  • 72

3 Answers3

3

The "how" of extremely high-frequency deployment is all about very mature engineering practices and tooling. The "unicorns" (Gene Kim's term for the type of company you list) have some of the best talent in the industry, and invest in the best technology.

One of several key practical differences between these unicorns and most other orgs is the level of automation they employ. It is very difficult to automate the quality checks needed to maintain a constant flow of work from DEV, through testing environments, to Production. Development and Operations must maintain high service levels internally. Ops must provide self-service resources so developers aren't waiting on tickets to get new infrastructure.

Dave Swersky
  • 4,068
  • 2
  • 21
  • 33
2

These big companies are using unconventional solutions, such as the BitTorrent deployment system and geographically distributed content delivery networks (CDNs). When Facebook updates its code or generates a new build, the binary files needs be pushed to all of the company's servers (~1.5GB), so they created its own custom BitTorrent tracker designed to obtain data slices from other servers that are on the same node/rack which reduces total latency.

Source: Exclusive: a behind-the-scenes look at Facebook release engineering

Facebook deployment takes the following steps:

  1. Update goes to an "a2" tier which rolls update out to a small, random collection of users.
  2. Check-in procedure on company IRC where all developers who submitted code for the update have confirm that they are ready to respond if there is a problem when the update goes out.
  3. Head of release engineering issues command in terminal to begin deployment
  4. Watch web-based monitoring dashboards as the update rolls out.

Frequency of deployments is one minor update on most business days, one major update on a weekly basis.

Source: How Facebook Does Deployment

kenorb
  • 8,011
  • 14
  • 43
  • 80
1

Not exactly a full answer, but you need mostly three things:

  • Automation of the delivery pipeline (Continuous Delivery)
  • A very, very strong test system (including canary release)
  • Good coding practices to ensure versions can run concurrently on the same environment.

This usually include tooling for code review, code linting, unit testing, orchestration, configuration management, integration testing and a strong culture for the change.

Tensibai
  • 11,416
  • 2
  • 37
  • 63