All case studies / Stack Overflow
Stack Overflow uses Config as Code in Octopus for its enterprise solution
About Stack Overflow
Founded in 2008, Stack Overflow is best known for its public platform used by professional and enthusiast developers. It features questions and answers on a wide range of topics in computer programming to help people learn, share their knowledge, and collaborate.
The company’s private knowledge-sharing platform, Stack Overflow for Teams, helps thousands of organizations worldwide capture institutional knowledge, scale subject matter experts, and onboard new employees and technologies faster.
Stack Overflow’s tech stack includes Microsoft technologies and JavaScript. The team uses GitHub for source control, CircleCI for their software builds, and Octopus to deploy their enterprise solution and other projects. Stack Overflow deploys to Windows virtual machines in Microsoft’s Azure cloud, bare metal hosts in its data center, and Azure Kubernetes Service (AKS).
Octopus closed the gap for us, so we can now deploy to both our data center and cloud service providers.
Challenges
Stack Overflow needed to deploy software in the cloud
Stack Overflow introduced Octopus from the start for the Enterprise edition of its Teams product line. Previously, the team executed deployments with custom scripts from Jetbrains’ TeamCity. They hosted the Enterprise edition of Stack Overflow for Teams in Azure and provisioned separate infrastructure for each customer.
Stack Overflow needed to deploy software for different customers in the cloud. The team also required a clear separation between their public platform and the SaaS Stack Overflow for Teams platform. Octopus was an ideal fit for their needs.
Solution
Standardizing CI/CD pipelines with Octopus
Stack Overflow introduced Octopus in 2018 to support the delivery of Stack Overflow for Teams, and its use has expanded to support other business areas and projects.
Stack Overflow chose Octopus for its Microsoft Azure support and built-in Tenants feature. Using tenanted deployments, the team can better manage infrastructure per customer and customer-specific deployment settings.
The team also takes advantage of the Octopus API. Their custom dashboard interacts with the Octopus UI to schedule and execute deployments.
Runbook automation in Octopus also helps the team provision infrastructure and manage other operations tasks.
With the addition of Configuration as Code in Octopus, Stack Overflow is looking to add additional projects with a standardized CI/CD pipeline alongside application code in a software repo.
Configuration as Code
Stack Overflow was an early adopter of Configuration as Code in Octopus. Config as Code has become the team's standard approach, with everything in a single GitHub repository, including:
- Application code
- The build pipeline
- The deployment pipeline
Stack Overflow shared that Config as Code has improved its development workflow. The team can support multiple versions of their deployment process with branches. They can branch an application, make changes to the code and the build, and modify the deployment process. Teams test and change their CI/CD pipeline with confidence and independently of other changes. They also validate changes by creating a release from a branch and testing the entire process end-to-end.
Stack Overflow’s code review and approval process now considers an entire change. The team can now:
- See the clear “diff” of changes in a GitHub pull request (PR)
- Review code changes, build pipeline changes, and deployment process changes
- Enforce branch protection rules
Config as Code created the desired workflow for every kind of change that Stack Overflow makes. It brought to life the most valuable part of version-controlling deployments: the iteration process (via branching).
Stack Overflow's CI/CD pipeline
Value
How Octopus improves software delivery for Stack Overflow
Octopus solved issues and improved software delivery for Stack Overflow in multiple ways:
Maturing their CI/CD pipeline
The Stack Overflow team are standardizing on a CI/CD pipeline with their application source code in the same repo as their build configuration and deployment process. They’re using this approach for more projects.
Speed of deployments
Stack Overflow says that deployments in Octopus are faster to execute and manage.
Enabling better development experiences
Config as Code offers a better software development experience for teams. As Stack Overflow evolves its CI/CD pipelines, teams are shifting projects to have all source code and resources stored in a single software repo.
Time savings deploying to multiple customers
The team use Octopus's built-in Tenants feature to manage infrastructure and deployment settings per customer.
Customizing Octopus to suit their team
Stack Overflow customized its deployment dashboards to suit its needs using the Octopus API.
Getting the support they needed
Stack Overflow shared that the customer support offered by Octopus has been excellent compared to other vendors. The team had tried another solution but said getting support from them was difficult.
One PR allows you to run a parallel process (that is, you can do whatever you want in a branch) and you can change the software and how it’s deployed... I was able to quickly create a PR to test out the workflow and have a coworker review it (seeing the diff changes in GitHub) and merge it in.