Hello everyone! After a brief hiatus, during which I've been circling the globe and diving deep into the tech world, I'm back to share some exciting insights. My travels have taken me down a very exciting new path: Octopus Deploy. Paired with Flyway, it's changing the game in CI/CD, and it's certainly changing the way I look at CI/CD deployments and how easy it can be for our end user. The goal of this post is to get you as excited about Octopus Deploy and Flyway as I am, with something very exciting coming very soon from both of us at Redgate Software and Octopus Deploy.
Discovering Octopus Deploy in Brisbane:
I have been all over the globe this year, but my real adventure began in Brisbane, Australia. It was here that I really discovered Octopus Deploy and had the opportunity to interact with its talented developers and solution engineers. Spoiler alert: both the team and the tool are as impressive as each other! I spent a lot of time looking at Octopus Deploy objectively, weighing the pros and cons of this slightly different approach than the code based YAML deployments which I am used too. After some time, it became clear that this is the way forward if you don’t have the experience or prior setup with more complicated CI/CD tools like Azure DevOps (ADO) which can take time, and experience to get working. If you’re not already locked in with these giants, then a more user-friendly platform like Octopus has huge upsides, and truthfully, I've yet to find the downsides?!
The Octopus Edge:
I haven’t lost my love for Azure DevOps or code-based deployments. If you are like me and enjoy YAML, then ADO can be amazing, and definitely has advantages we will speak about in another blog post. But a big part of my job is offering the most seamless, easy-to-adopt route to end-to-end automation, and that’s where Octopus gained its edge for me.
Octopus Deploy stands out as a specialized, robust tool for automating deployment. Its unique strength lies in its ability to manage complex deployment scenarios with ease. Unlike Azure DevOps, which offers a broad suite of end-to-end DevOps tools covering the entire software development lifecycle, Octopus Deploy focuses primarily on the deployment phase, providing more advanced features in this area with much more support and UI-based configuration, with the option for configuration as code. This specialization enables it to offer a more streamlined, user-friendly interface for setting up and managing deployments, which can be particularly advantageous for teams that require sophisticated deployment strategies like blue-green, canary, or rolling deployments. The other obvious huge advantage to this is the significant amount of time saved and risk mitigated. Most people I meet every day don’t know how to go about these kinds of deployments, so having a tool that offers all these features whilst understanding it can take a huge amount of the burden. By allowing community integration and UI-based configuration you don’t have to spend days, sometimes weeks, wondering why your code-based templates and configurations are not compiling, running, or deploying what was needed. Let alone getting it to a level of confidence that you will rely on it for Production deployments.
Furthermore, Octopus Deploy's ability to integrate seamlessly with a wide range of CI/CD tools, including Azure DevOps, allows it to fit into various existing workflows without replacing the entire toolchain. This interoperability is a significant advantage for teams looking to enhance their deployment processes without overhauling their existing infrastructure. While some platforms can be “all us, or nothing at all”, Octopus allows you to take advantage where needed and scale slowly. Additionally, Octopus Deploy’s emphasis on release management and automation, including advanced features like variable management and environment-specific configurations, makes it a more powerful tool for teams with complex deployment needs. While Azure DevOps provides a more integrated approach for the entire DevOps lifecycle, Octopus Deploy excels in offering a more focused, detailed, and powerful solution for the deployment phase of software development.
Octopus Deploy isn't just another CI/CD tool; it's a game-changer. So here’s what makes it stand out to me:
Build Once, Deploy Everywhere: Octopus pushes the idea of building out a single deployment process with every step customised and then deploying to every environment off that template. In ADO for comparison, I would have to script out my deployment for a test environment as well as a production environment. Even if both do fundamentally the same thing, and yes of course I can do some fancy templatization but I’m still doing that manually, and if I want to change or scale, I’m back to coding it out.
Advanced Variable Management: Both Azure DevOps and Octopus Deploy support variable management for deployments. However, Octopus offers more powerful scoping options for variables, allowing them to be applied to individual targets, steps, and shared across projects, whereas Azure DevOps' scope is limited to environments. Essentially, single configuration/templates can be given to each team, that have been checked/tested and approved, and the teams can simply answer some questions to fill in these configurations, and they will then have their own separate release management instantly. No need for teams to copy YAML code, and manually edit the variables and code to suit themselves, everyone in the organisation can be standardized, with every piece of side having been parameterized.
Config as Code with UI Compatibility: Octopus uses Configuration as Code with the HCL/OCL language, while maintaining UI functionality. This approach offers the benefits of source control without the complexity of writing YAML, which can be challenging and less transparent in Azure DevOps. This for me is a HUGE benefit. For 99% of your day-to-day, you can use the simple UI to deploy, or change deployments/set up as needed. This minimizes any risk of syntax issues, or deployment issues. If I just need to make one small change, I will much prefer to do it inside the UI, then delving into some 10K line YAML file that is stored somewhere deep in a repository. It also means for less experienced users, having the UI to teach you how it works, and the capability of the tool maximizes the effectiveness of the tool and how quickly they can get set up.
Operations Automation and Runbooks: Octopus Deploy includes Runbooks for automating a variety of emergency and routine operational tasks, such as updating certificates, disaster recovery, and ad-hoc management tasks. Every tool I have used lacks this capability, leaving a gap in operations automation that Octopus fills, providing a unified platform for DevOps automation. Even for myself, being able to have runbooks that have variables inside, means I can give every single one of my customers the exact same runbook, which asks all questions I have set, and can be used for configuring hard to explain or install environments or set up tasks.
Multi-Tenancy Support: Octopus Deploy is the only release automation server with first-class multi-tenancy support that I have been able to find, allowing deployments to individual customers or groups without duplicating pipelines. Azure DevOps, in contrast, requires duplicating release definitions for each customer.
Cloud and On-Premises Support: Octopus natively supports Azure and AWS, with comprehensive support for Kubernetes in Google Cloud and full GCP support on the horizon. It also provides powerful on-premises support with the Tentacle agent and various networking options, unlike Azure DevOps, which has limited native options for on-premises and cloud VM/IaaS support. Octopus is easy to install, its runners/workers manage themselves and have a UI inside the tool, and supports needs for both on-prem & cloud-based instances of Octopus.
Source Scripts from Git: Octopus now allows sourcing scripts from Git repositories, adding flexibility in maintaining scripts.
Kustomize Step for Kubernetes: Octopus has introduced a Kustomize step to modify YAML files for Kubernetes, facilitating the management of multiple deployment pipelines.
OCI Helm Registries Support: There's now support for referencing Helm charts from OCI registries, adding to Octopus's capabilities in container deployments.
Automatic Cloud Target Discovery: Octopus has introduced automatic cloud discovery for Azure App Services, Amazon ECS clusters, and Kubernetes clusters, simplifying deployment to new test and production infrastructure.
OpenID Connect (OIDC) Support: Octopus Deploy has implemented support for OIDC, allowing it to act both as a server and a client. This enhances security by enabling connections to tools like GitHub Actions and Azure without sharing long-lived credentials.
Better Continuous Delivery Experience: Azure DevOps' multi-stage YAML pipelines are less conducive to a smooth Continuous Delivery experience, with rejected approvals resulting in failed pipelines. In contrast, Octopus' approach to environments and lifecycle phases offers more clarity and security for deployments. It is literally designed for releases, so whatever your need is, not only does octopus have the tools for it, it’s likely a simple button in the UI. There is nothing wrong with Multi-Stage YAML deployments; I have done them myself and likely will continue to do so. It's just, when looking at the need to be simple, scalable, and easy to use/adopt, if I can avoid writing multiple YAML files, cross-linking pipelines and branches for full automation, I absolutely would want to.
People often assume the best system is always going to be code-based and code-based only, but I would challenge anyone reading this to check out Octopus Deploy and tell me why!
Flyway AutoPilot & Octopus Deploy:
I am not going to use this blog to push this new exciting experience that we have created, but I will say something massive is coming. One, but not the only, of the huge benefits of Octopus mentioned above is how easy it is to adopt, and still have access to amazing features alongside something like Flyway. We also know that Flyway has AutoPilot, which makes adopting Flyway easy and possible in less than 20 minutes. So, wouldn’t it be nice to have a Flyway AutoPilot x Octopus collaboration, that allows you to use us both in the easiest, most painless way possible… In one single click? Well, that would be exciting, so keep an eye on this page and Redgate's for this exciting new collaboration tool!
Comments