Accelerate reliable, repeatable, traceable deployments across clouds and on-prem.

Stack Overflow and Octopus Deploy

stackoverflow.com

"“Octopus closed the gap for us, so we can now deploy to both our data center and cloud service providers."

- Chris Hunt, Staff Site Reliability Engineer

Download Octopus Convert to PDF

Their Story

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. Their team uses GitHub for source control, CircleCI handles their software builds, and Octopus Deploy deploys their enterprise solution and other projects. Stack Overflow deploys to Windows Virtual Machines in Microsoft’s Azure cloud, bare metal hosts in their datacenter, as well as Azure Kubernetes Service.

Challenge

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. They 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

Octopus was introduced in 2018 to support the delivery of Stack Overflow for Teams, and its use has expanded to support other teams and projects.

Stack Overflow selected Octopus because it includes support for the Microsoft Azure platform and built-in multi-tenancy. Using multi-tenancy, Stack Overflow can better manage infrastructure per customer and customer-specific deployment settings.

The team also takes advantage of the Octopus API. They have a custom dashboard that interacts with the Octopus UI to schedule and execute deployments. Stack Overflow also uses runbook automation in Octopus to help 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 is an early adopter of Configuration as Code in Octopus. Config as Code has become their standard approach with everything in a single GitHub repository.

  • Application code is in the software repo.
  • The build pipeline is in the software repo.
  • The deployment pipeline is in the software repo.

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 to 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. Teams can see the clear “diff” of changes in a GitHub pull request (PR) and they can review code changes, build pipeline changes, deployment process changes, and enforce branch protection rules.

Config as Code created their 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.”

Results

Octopus solved a number of issues for Stack Overflow:

  • Maturing their CI/CD pipeline: Stack Overflow is 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 feel 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.
  • Customize 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 as compared to other vendors. They had tried another solution but said getting support from them was difficult.

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.

Twitter user Alex Dent Alex Dent
@DevOpsDent

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 ❤

Twitter user Nicholas Blumhardt Nicholas Blumhardt
@nblumhardt

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.

Twitter user Niel Chalk Niel Chalk
@_neilch