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?

closed as too broad by Gepser, Tensibai, Aurora0001, Sathyajith Bhat, avi Feb 28 '17 at 18:08

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    This question is too broad to be answered in a couple of phrases, so, here is the broad answer: You need to automate the way you build, test and deliver software. So, what is stopping other companies to do the same? They don't have that level of automation. – Gepser Feb 28 '17 at 17:59
  • The main thing that those companies have are hundreds of employees who are able to push code because the deployment process is automated. If you only have 20 developers, you won't be deploying thousands of times a day. So it's not really a devops question, just a math question. – avi Feb 28 '17 at 18:06
  • I'm voting to close this question as off-topic because it's more a question about how development groups inside of large cooperations work than it is about DevOps itself. – avi Feb 28 '17 at 18:08
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.

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

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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.