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:
- Update goes to an "a2" tier which rolls update out to a small, random collection of users.
- 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.
- Head of release engineering issues command in terminal to begin deployment
- 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
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.