From planet tw…
This weekend at Hackernews I stumbled across a great video showing how Facebook pushes new code live.
It’s the most advanced push deployment system I have seen.
The video is excellent. If you are into software, looking for advanced build and deploy techniques, or just looking for ammunition to improve your own build and deploy process, watch this video.
Here are some of the highlights.
Culture
We operate at ludicrous speed and massive scale.
Tools are not going to solve your problem.
It’s about culture.
No big fat layer of QA, managers and adult supervision.
500 core engineers.
As a developer you will shepherd your changes out from the time you check it into trunk, to the time you release it out to your mom.
There is no army of people who are going to vet it and check it.
You are accountable.
Subversion and git are used for version control.
UI tests are Watir and Selenium.
Oncall duties are serious. When you are on call, you are the guy.
Branching

Generally don’t branch. All work done off trunk. You work. You checking. Bam. You’re done.
Cut one week release branches.
Your change can go out with the weekly deploy, or you can bump it up into the daily deploy.

Testing
Everyone tests at Facebook all the time.
Anyone can open a bug – there is a Facebook group internally anyone can go to to see the latest bugs, and open any new ones they find.
Everything is automated. Here are few of the tools Facebook uses internally to do pushes.
IRC bots
These bots are there to tell you the state of your push.
Don’t bug a deployment engineer asking where you code is.
Ask the bot.
When you push is going live, the bot will ping you and ask you if you are here.
You are to respond, and let support know that you are here to help if needed.
You are on standby.
For a daily push, if you don’t do this, your rev doesn’t go out.
Test Console
Built there own test console to show the state of there tests.
Use Watir, Selenium, + bug suite of unit tests.
Console will not only show which tests are broken, they will sh…