The back-end of the social network Facebook.com is complex. Facebook’s servers run on a LAMP stack with Memcache. They also use MySQL databases and PHP, C++, Java, Python, and Erlang programming languages. So how does Facebook’s 2,000+ employees manage all the code?
The two biggest teams at Facebook are the engineer and operations teams. Each of these teams have about 400-500 people. The product manager to engineer ratio is about 1:7 or 1:10. Every engineer has to go through a 4-6 week boot camp where they also listen to lectures from senior engineers.
Any Facebook engineer can modify Facebook’s code base and check in at will. The company is very engineer-driven. The engineers can modify the specs in the middle of the process and come up with new feature ideas. The engineers present progress reports and product management at the meetings.
Engineers generally want to work on the infrastructure and scalability instead of the front-end. Engineers also want to work on news feed algorithms, ad-targeting algorithms, and memcache optimization.
Every Tuesday there is a code release where all engineers who committed code in that week’s release candidate must be on-site. The engineers have to be in a specific IRC channel for a roll call before the release otherwise they will be shamed publicly. To keep Facebook online for their 500 million+ users, they are using about 60,000 servers.