When implementing new software deployment tools, there’s much to consider. Different companies/teams have different goals, and if you’re planning for the long-term, you’ll need a tool that will scale with you as you grow. For instance, does it have the governance and security features you need in the immediate future, but also ones you know will be required once your company goes for that SOC 2 compliance audit? Building with the future in mind is paramount.
With that in mind, we’ve reviewed a few software deployment tools to help you in your research. In this blog post, we’ll go over both paid and open-source tools. Choosing the right software deployment tools can be hard, and hopefully we can make it a little easier for you and your team! Note: These tools are not ranked in any order of preference.
Harness is a modern software delivery platform that offers Continuous Integration, Continuous Deployment, Feature Flags, and Cloud Cost Management.
Harness Continuous Integration was created to reduce the time, effort, and administration for building new artifacts. The solution makes this happen by using machine learning to optimize the number of tests needed during the build process. The software development process can be tricky enough, CI shouldn’t become an additional worry.
Harness was founded on Continuous Delivery roots and that still remains one of the company’s cutting-edge products. It leads the pack when it comes to governance with fine-grained RBAC, full audit trails, and proprietary integrated secrets. It’s also worthy to note the incredibly easy installation, which reduces time to value considerably.
Harness Feature Flags helps manage releases by letting developers, marketers, managers, and other company leaders to instantly switch features on and off in production. This allows for easy A/B testing and can drastically increase deployment velocity. Feature flags are quickly becoming a key part of the software deployment process.
Harness Cloud Cost Management gives users instantaneous visibility into the cost coming from their chosen cloud service. It also lets users automatically control or stop resources that were accidentally over provisioned or left running.
The great thing about Harness is its à la carte model. Teams are free to pick Harness modules without purchasing the entire platform. Every Harness product is developed to be standalone in quality and functionality.
Argo CD is an open-source Continuous Deployment solution that provides Kubernetes-first support. It follows Git-based workflows to automate the deployment of services within Kubernetes. As a Kubernetes controller, it ensures your resources’ current state matches your desired or specified target resource state. It can be found on GitHub under argoproj.
Argo CD leverages what’s called the Argo GitOps Engine, an open-source library that implements core GitOps features, allowing you to manage, automate, audit, and understand your software deployment life cycle. Argo CD is one of the more robust software deployment tools out there.
GoCD describes itself as a free and open source CI/CD server, allowing you to easily model and visualize complex workflows. It provides end-to-end pipeline visualization, cloud-native deployments, complex workflow modeling, and advanced traceability.
While these features are important to creating good CD pipelines, if compared against the basic capabilities of a modern CD tool and what else is available, GoCD ends up being one of the run-of-the-mill software deployment tools currently on the market.
Octopus Deploy is a software solution for managing releases and automating deployments. In addition, it has runbook automation capabilities. From a release management perspective, Octopus Deploy helps teams understand what versions are released and what environments they were deployed to.
Looking at deployment automation, Octopus Deploy comes with 450 templates. Octopus Deploy uses variables in their deployment pipelines so you can use the same process in dev, test, and production environments. Additionally, Octopus Deploy supports advanced deployment patterns, including rolling, blue/green, canary, and multi-tenancy.
The last major capability of Octopus Deploy is runbook automation. Using this capability, it’s possible to automate operations tasks like routine maintenance and emergency incident recovery. These runbooks include all the necessary permissions so anybody on the team can be granted permission to execute the runbook.
Overall, Octopus Deploy is one of the solid software deployment tools out there, with a strong feature set and support for modern as well as legacy environments. As with every tool, there are some important features that Octopus Deploy fails to deliver on. Notably, automated deployment verification and automated deployment rollback are completely missing. For even more detail about Octopus Deploy, you can read our article on Best Octopus Deploy Alternatives & Competitors.
AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.
Amazon seems to have a service for just about everything these days. It makes sense that they have a software deployment tool to ensure that you’re using as many AWS services as possible. According to Amazon, AWS CodeDeploy is platform and language agnostic, so it works with any application (although there is a requirement for your on-prem instances to connect to AWS public endpoints). There also does not appear to be any support for deploying to other cloud providers, like GCP and Azure, so the “platform agnostic” claim needs to be carefully considered.
Spinnaker, originally created by Netflix, is a CD platform that simply has too many problems for us to recommend. We went over them in our Spinnaker Alternatives post, but to recap: it’s on-premise only, lacks native secrets management, doesn’t provide traditional app support, and has been referred to as “a nightmare” to set up and configure. It just doesn’t seem worth the effort.
Jenkins is the most well-known open-source tool that is used for both Continuous Integration and Continuous Deployment. Since it is an open-source automation server, it is free to use for all and there is a huge community following which leads to extra support, documentation, and features. This continuous integration server/tool is a self-contained Java program that is platform-agnostic. It is available for most major operating systems such as Linux, Windows, and MacOS.
We usually put Jenkins in this list since it’s a decade old, isn’t cloud-native, and frankly relies on too many plugins to extend what it can do. We don’t feel comfortable recommending a product that relies so heavily upon added extensibility. It was also designed to be a Continuous Integration tool, and engineers must rely on scripts to extend it into Continuous Deployment. It’s not worth it.
GitLab, originally a source code management tool based on Git (like GitHub and Bitbucket, for reference), introduced a CI/CD solution to their product suite. They support container orchestration tools, such as Kubernetes and ECS, and they support all 3 major cloud providers (GCP, Azure, AWS). In terms of infrastructure, GitLab recently released a Terraform integration. The platform also offers good governance and compliance features available on their enterprise-level plans. As far as languages go, GitLab aims to support every language, old and new – including PHP, Go, Ruby, .NET, Java, JS, and more.
GitLab qualifies themselves as a CI/CD platform, but CD is achieved by extending CI with scripts - it’s not entirely a ‘platform’ in the true sense of the word. Additionally, there is definitely a learning curve to utilize the tool. GitLab doesn’t have any deployment verification capabilities, but can integrate with tools such as Prometheus for monitoring and observability purposes. GitLab also lacks native secrets management capabilities, but integrates with HashiCorp Vault.
We don’t recommend using CI tools for deployment. GitLab and Jenkins are prime examples of this. When you take a tool that was meant for CI and slap CD onto it, you’re severely limiting yourself and causing more pain than you need to. Here’s why.
Software deployments require many different skill sets to be applied together in order to achieve success, especially for advanced deployment patterns like Canary deployments. To achieve a successful Canary deployment, infrastructure must be provisioned, software deployed, network routing rules changed to shift a percentage of users to the new software, health and performance of the new software verified, rollback processes defined and potentially executed, etc… until either the new release has been fully promoted or rolled back. CI tools don’t have all of this built in. Instead, you must define every step manually, which requires the right knowledge, significant time, and often a lot of trial and error. Why not make things easy and use software deployment tools that have predefined templates and already know how to perform all of these steps?
This same thought process can be applied to CD-specific features like automated deployment verification and automated rollback. CI is not CD. They require different feature sets to be done right.
Are you looking for a software deployment solution that’s simple and self-service? Harness’ software delivery platform packs a punch with modules for Continuous Integration, Continuous Delivery, Cloud Cost Management, and Feature Flags! Why not schedule a demo with Harness to see if we’re the right fit for your DevOps and Engineering teams?
Enjoyed reading this blog post or have questions or feedback?
Share your thoughts by creating a new topic in the Harness community forum.