How Facebook pushes updates to the site
11–20 of 43 posts
Re: How Facebook pushes updates to the site
#12It's interesting that their entire release architecture seems to be focused on never pushing bad things out to production, whereas given their traffic they could probably push things out much sooner (minutes after they're committed) to small parts of their overall traffic, and slowly increase the traffic on those pieces of code as they prove themselves to be stable, or quickly revert them if they're not. That would m…
The risk to user data is way too high.
This could have serious consequences. You could push client bugs with erroneous API calls, or server-side bugs that cause data loss. Rolling back isn't enough to fix the damage. The user's data has reached a permanent bad state that they didn't intentionally reach. You could roll back the data of every person who used the change, which would undo all of their work. You could analyze the data and try to fix it. This might work, or it might get the user data into a different bad state.
Plus, bugs in the view of the site might not cause errors that pop up in your error console, since it's hard to write tests for "looks wrong." Obvious errors - "when I click on my profile picture my name disappears" - are caught by external people instead of internal people, which adds a level of indirection between a problem appearing and a fix being written.
That being said, there are great uses for gradual rollouts. The video mentions that they do this for mature features with Gatekeeper - the developer can conditionally enable a Prod feature, and see what it does.
Re: How Facebook pushes updates to the site
#13It's interesting that their entire release architecture seems to be focused on never pushing bad things out to production, whereas given their traffic they could probably push things out much sooner (minutes after they're committed) to small parts of their overall traffic, and slowly increase the traffic on those pieces of code as they prove themselves to be stable, or quickly revert them if they're not. That would m…
Unless you mean to suggest continuously integrating developer commits to trunk into the live branch, in which case, no, that's a horrible idea. Not every bug manifests itself that quickly.
As for merging, my memory is pretty hazy but I believe pushing and merging went hand in hand, and stuff that conflicted meant someone wasn't communicating yet working on the same code as someone else. Code was often documented with its owner. The code review utility at the time would (I think) take that✝, and (I think) run a blame and automatically CC those people on the code review, so it could be caught before it went out.
✝ Unless that was just done by convention so you know who to ask about a bit of code you might need to revise. Sorry my memory is unreliable on that bit.
Re: How Facebook pushes updates to the site
#14Re: How Facebook pushes updates to the site
#15Re: How Facebook pushes updates to the site
#16Summarized some of the highlights here if you don't have time to watch:
http://agilewarrior.wordpress.com/2011/05/28/how-facebook-pu...
Re: How Facebook pushes updates to the site
#17So facebook is programed in PHP but everything on the server is in C++ thanks to "hiphop"? mind=blown
Re: How Facebook pushes updates to the site
#18I like how their entire development cycle revolves around people getting drunk on weekends.
Re: How Facebook pushes updates to the site
#19I loved this video. Gatekeeper blew me away. Summarized some of the highlights here if you don't have time to watch: http://agilewarrior.wordpress.com/2011/05/28/how-facebook-pu...
Re: How Facebook pushes updates to the site
#20I loved this video. Gatekeeper blew me away. Summarized some of the highlights here if you don't have time to watch: http://agilewarrior.wordpress.com/2011/05/28/how-facebook-pu...
I thought he said perforce and git, not subversion and git.