The Evolution of Code Deploys at Reddit
redditblog.com
redditblog.com
I've seen many projects in the 1-2 server range become messy nightmares as people obsessed with 2017-reddit style deployments.
I built a tool for the team to coordinate deploy locks at my last job, similar to the IRC bot described here. People seemed to like it a lot over the previous system of just shouting at the rest of the room that they're taking prod.
Neat. It reminds me of the method used in gaming nowadays, which is to just write a "savepoint" marker in to the message stream instead of pausing the entire game to save state.
[1]: https://www.reddit.com/r/beta/comments/6eyoy4/beta_bug_list_...
[2]: https://www.reddit.com/r/beta/comments/6eyqse/feedback_profi...
When you are an employee of Reddit you obviously spend a lot of time on Reddit.
1. How does this affect your life outside of work. Do you find yourself browsing Reddit in your spare time or do you avoid it?
2. Do you ever find yourself spending whole days at work without being on the site because you don't want to be distracted while working on something?
I personally still spend plenty of time reading stuff on the site, both educational (r/askhistorians, various programming subreddits) and entertainment (r/popular). I'll definitely tend to avoid the more meta subreddits when not in a work mood though.
> Do you ever find yourself spending whole days at work without being on the site because you don't want to be distracted while working on something?
Oh yeah, it definitely happens: heads down in code, doing a complex series of deploys, or just in a bunch of meetings.
There's also the times where I go to check on the site to check on something I deployed and instead get distracted by something on the front page and forget what I was doing. Oops.
It's excellent, I use it daily.
I've been doing an eval for a new environmental auditing tool at work, and I've found that most of the pre-built solutions out there (e.g. Ansible Tower, Chef Server, some tools that we have written internally) will mostly meet our needs with some coercion, but I decided we should write our own anyway because it gives us the flexibility to only use and maintain the features we're actually going to use.
It's very possible (likely, even) that the Reddit guys looked at fabric or capistrano, and decided either:
1) the tool didn't map to their model of deployments, or 2) the tool did too much and would require more maintenance than a dead-simple solution they wrote themselves.
It's all a matter of perspective.
And, how do/did you provision new servers? By hand, or did you use something like Chef/Puppet?
Each step along the way was basically just a small modification on the system before. AFAIK Jenkins doesn't come with the ability to safely deploy code to hundreds of servers out of the box, so building out the systems to make that the case would've been more work than just adding to what existed and for unknown benefit.
> And, how do/did you provision new servers? By hand, or did you use something like Chef/Puppet?
We use puppet for configuration management. That's been the case for most stuff since early 2011 for context. There's a lot more detail in our semi-recent infra/ops AMA: https://www.reddit.com/r/sysadmin/comments/57ien6/were_reddi...
On the other hand, since you weren't already using it for builds/running tests, it would have added some overhead.
With the quality of the article, I really wonder why most of reddit open source mentioned in the article are not popular?
Is that because of the lacking of marketing?