# Stack Overflow: How We Do Deployment - 2016 Edition

DevFeed: [Stack Overflow: How We Do Deployment - 2016 Edition](<https://devfeed.tech/articles/stack-overflow-how-we-do-deployment-2016-edition-21592.md>)

Original publisher: [Read original article](<https://nickcraver.com/blog/2016/05/03/stack-overflow-how-we-do-deployment-2016-edition/>)

Published: 2016-05-03T00:00:00Z

Content type: article

Language: en

Sources: [Nick Craver](<https://devfeed.tech/sources/nick-craver.md>)

Topics: [Deployment](<https://devfeed.tech/topics/deployment.md>), [Stack Overflow](<https://devfeed.tech/topics/stackoverflow.md>), [Development](<https://devfeed.tech/topics/development.md>), [Git](<https://devfeed.tech/topics/git.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [ci](<https://devfeed.tech/topics/ci.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Localization (l10n)](<https://devfeed.tech/topics/localization.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [ci](<https://devfeed.tech/tags/ci.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [deployment](<https://devfeed.tech/tags/deployment.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>)

## AI overview

This article explains how Stack Overflow deployed code in 2016, covering the repository, human workflow, branches, Git, build steps, database migrations, localization, deployment tiers, and techniques for building without breaking production. It reports roughly 25 daily deployments to development, 5-10 daily production deployments, and a full deployment time of under nine minutes.

## Source excerpt

This is #3 in a very long series of posts on Stack Overflow's architecture. Previous post (#2): Stack Overflow: The Hardware - 2016 Edition We've talked about Stack Overflow's architecture and the hardware behind it. The next most requested topic was Deployment. How do we get code a developer (or some random stranger) writes into production? Let's break it down. Keep in mind that we're talking about deploying Stack Overflow for the example, but most of our projects follow almost an identical pattern to deploy a website or a service. I'm going ahead and inserting a set of section links here because this post got a bit long with all of the bits that need an explanation: Source & Context The Human Steps Branches Git On-Premises The Build System What's In The Build? Steps 1 & 2: Migrations Step 3: Finding Moonspeak (Translation) Step 4: Translation Dump (JavaScript Edition) Step 5: MSBuild Step 6: Translation Dump (C# Edition) Step 7: Importing English Strings Step 8: Deploy Website Step 9: New Strings Hook Tiers Database Migrations Localization/Translations (Moonspeak) Building Without Breaking Extra resources because I love you all GitHub Gist (scripts) GitHub Gist (logs) Source This is our starting point for this article. We have the Stack Overflow repository on a developer's machine. For the sake of discussing the process, let's say they added a column to a database table and the corresponding property to the C# object -- that way we can dig into how database migrations work along the way. A Little Context We deploy roughly 25 times per day to development (our CI build) just for Stack Overflow Q&A. Other projects also push many times. We deploy to production about 5-10 times on a typical day. A deploy from first push to full deploy is under 9 minutes (2:15 for dev, 2:40 for meta, and 3:20 for all sites). We have roughly 15 people pushing to the repository used in this post. The repo contains the code for these applications: Stack Overflow (every single Q&A site), sta