What is meta? ×
Meta Stack Exchange is where users like you discuss bugs, features, and support issues that affect the software powering all 131 Stack Exchange communities.

I'm looking for some insight into how Stack Overflow releases are deployed and managed.

  • What software/tooling is used?
  • What time are releases generally performed?
  • How many and what steps are involved?

I'm assuming it's not too stringent given the light team working on the codebase. But considering the high rate of change, I could see some kind of tooling and automation becoming increasingly relevant, so I'm curious to learn what kind of decisions are being made to deal with the changes in scale and feature set over time.

Is this information available somewhere?

share|improve this question
    
3  
@Kop, that question is in the process of being closed as a dupe of this one. –  Pops Dec 8 '10 at 13:18
1  
I'd love to see an article or blog post about this –  Greg B Sep 6 '11 at 12:37

1 Answer 1

Here are the answers to the specific questions with respect to the Q&A websites...there are many other builds in play at Stack Exchange, so limiting this answer to what I think you're interested in:

What software/tooling is used?

We are using TeamCity for our builds, the builds themselves are a combination of MSBuild, PowerShell and custom apps (DB Migrations and what was the CDN purger). For other systems like puppet, they're bash scripts on the linux build agents.

What time are releases generally performed?

Whenever someone says "hey, wanna build?". No, really...we deploy throughout the day with no one noticing usually, other than the build number in the footer incrementing. Maybe we deploy riskier changes in the morning before peak traffic...or that could just be Marc on UTC time having the craziest changes, your call.

How many and what steps are involved?

We may not deploy in a given day (typically only weekends) or we may deploy 20 times a day. I'd say the typical deployments per weekday is somewhere in the 3-8 neighborhood. As for steps it's:

  1. Check-in code
  2. Dev builds (continuous integration build)
  3. Sanity check it works in dev, maybe - we're follow a cowboy deployment model with small changes.
  4. Build "meta", which is really web servers 10 and 11, but for most purposes it's meta.stackoverflow.com
  5. Build "prod" which is really ny-web01 to 09, these host everything except meta, and internal requests (private API) to meta
  6. If it didn't go well, start drink heavily

This is of course a high level overview...if you have more specific followups I can answer those, or if there's enough interest I'll take some time a blog it. Blogging may be delayed a bit, Pete and I a bit busy with another small project at the moment.

share|improve this answer
7  
I think this would be a great subject to blog about, when you have time. –  George Duckett Apr 24 '13 at 11:47
1  
Excellent, it only took four years but I got an answer! I bet the answers wouldn't have been the same if you'd answered back then, though. ;-) –  Rahul Apr 24 '13 at 15:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .