Stack Overflow standardizes on a version-controlled CI/CD pipeline for its enterprise solutionstackoverflow.com
"Octopus closed the gap for us, so we can now deploy to both our data center and cloud service providers."
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 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.
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 because it supports Microsoft Azure and built-in multi-tenancy. Using multi-tenancy, 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).
Chris Hunt, SRE on the Development Experience team said:
“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.”
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 multi-tenancy 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.
Are you ready to discover how Octopus can help your deployment strategy?
Shout out to @OctopusDeploy for making their software so easy to work with. Just upgraded a 2 year out of date instance and migrated it to a new server and it worked with no effort beyond what their documentation said to do.Alex Dent
We've been overhauling our internal infrastructure and back-end systems over the past month, including a move back to full @OctopusDeploy deployments; rediscovering how nice it is to have a platform-agnostic orchestrator that can deploy practically anything, anywhere ❤Nicholas Blumhardt
Tools like @OctopusDeploy can be great in enabling culture change, we've been able to scale and improve our configuration story since we started using it.Niel Chalk