Modern software teams are increasingly adopting the cloud, choosing to host and run their applications and infrastructure using cloud providers and platforms instead of on-premise solutions.
But deploying applications in the cloud can be significantly different than doing so in your own data center. A number of steps go into deploying an application in the cloud—from build to package to release—and there can be a lot of overhead in doing that manually.
Because of such challenges, more and more software development teams are embracing the practice of continuous integration and continuous deployment (CI/CD) as they seek to automate deploying new code into production. Fortunately, a number of tools specialize in helping you automate the tasks involved, from integrating code tests to build packaging and deployment. Whether you are looking for a one-size-fits-all solution from a large cloud provider or seek to build out a custom tool chain to meet your particular needs (such as pushing code from a build pipeline to a Kubernetes cluster running on a deployment platform) the first step is to get the lay of the land.
To provide a roadmap, we looked at 15 top application deployment tools, listed in alphabetical order. Just remember, though, no one tool is perfect for every team.
Teams developing applications on Windows and .NET may want to check out AppVeyor, a CI/CD platform. Open source apps are hosted for free, and enterprise customers have the option of on-premise installations and unlimited build agents. AppVeyor has support for GitHub, Bitbucket, GitLab, and VSTS.
If you’re an Amazon Web Service (AWS) cloud customer, AWS CodeDeploy is a deployment service that helps you automate your application deployments, no matter whether you’re deploying your app with a single AWS Lambda function or across thousands of Amazon EC2 instances. With CodeDeploy, you can manage your deployments from one place using the AWS Management Console or the AWS CLI. You can even take advantage of additional tools like Amazon CloudWatch, which lets you see exactly when and where you deployed each application revision.
You can also integrate application deployments with your existing software delivery toolchain using the AWS CodeDeploy APIs.
This entry adds a solid offering for any Amazon Elastic Container Service (ECS) users looking to deploy applications in containers without worrying about server or cluster management. AWS Fargate abstracts away server configuration and management, so all you need to do is worry about packaging your applications and setting the CPU, memory, and other application requirements you desire, and AWS Fargate will launch the containers for you—and it’ll even scale them as needed. Like CodeDeploy, you can manage your deployments from one place using the AWS Management Console or the AWS CLI.
Part of the Atlassian world, Bamboo is a build, test, and deploy platform with key features like built-in git branching workflows and Jira integration—both essential out-of-the-box features for any modern software team. It runs on Amazon EC2 integrations, so it can easily scale as needed.
While CircleCI offers an on-premise solution, this cloud-based service requires no dedicated server. CircleCI is most often used for either small and open source projects in which easy and efficient deployment are essential. If you’re shipping applications in containers or to mobile, CircleCI comes with support for Docker and iOS application builds.
Language support includes: Go, Haskell, Java, Ruby, Python, PHP, and Node.js
Developer tool and partner integrations include: Docker, Sauce Labs, and Jira
If you’re into containers, Codeship is a hosted, continuous-delivery service that may fit your deployment needs. Codeship Pro uses Docker as a containerized backend for CI/CD, but your apps don’t have to use Docker, just any type of container. With single-tenant AWS instances, you’ll get performance optimization and security created to match your standards.
Codeship offers a variety of powerful setup options. Currently, it’s integrated with popular source code managers GitHub and Bitbucket as well as other CI add-ons and tools.
Part of the Google Cloud Platform (GCP), Google App Engine allows you to build and deploy applications using your favorite language or framework. App Engine provides a fully managed infrastructure platform, so you need to worry only about the applications you’re building and not their host configurations.
For security-minded teams, App Engine has its own firewall and provides managed SSL and TLS certificates on your custom domain at no additional cost. And App Engine integrates with a number of GCP cloud developer tools.
A package manager created specifically for Kubernetes, Helm makes it easy to deploy applications in your Kubernetes clusters. In Helm, application resources are defined in charts, which let you install multiple app instances, each with a different configuration, from one chart. The Kubernetes community has created plenty of charts to get you started, and you can find charts for popular software like PostgreSQL, Elasticsearch, and Apache Kafka.
Language support: Any
Developer tool and partner integrations include: Docker and Polyaxon
This container-based PaaS, hosted on AWS cloud services, abstracts away your infrastructure concerns, and lets you focus on deploying and managing your applications. With full GitHub integration, Heroku provides application-health monitoring and customized Redis and PostgreSQL applications for your database tier. Essential features of its enterprise offering include access control and private instances.
From the Heroku Elements Marketplace you can download or purchase a number of pre-packaged add-ons and services to extend your applications.
Language support includes: Java, Python, Ruby, Clojure, Go, Scala, Node, and PHP
Developer tool and partner integrations include: IntelliJ, Docker, and GitHub
Formerly called IBM Bluemix, this Platform-as-a-Service (PaaS) offering partners with CloudFoundry and provides options for running apps on traditional servers or through IBM Cloud Container Service. Application development teams can take advantage of services like IBM Watson for building artificial intelligence and other cognition-based functions into their applications. IBM even offers an Internet of Things (IoT) service and mobile backend to support continuous delivery of all kinds of apps.
Language support includes: Go, Java, Node.js, PHP, Python, and Ruby
Developer tool and partner integrations include: Salesforce and Docker
Wildly popular, Jenkins has clearly earned its place as the leading open-source automation server. It provides more than 1,400 plugins, covering virtually any platform build, packaging, and deployment-management tasks you might need to perform. With Jenkins, you can enforce deployment workflows, convert CLI scripts to Jenkins jobs, set up build pipelines in the Blue Ocean UI, and take advantage of a pipelines plugin to run parallel or sequential jobs.
Language support includes: Python, Ruby, Java, Android, C/C++
Developer tool and partner integrations include: Atlassian, JFrog, and PagerDuty
Originally developed by Google, Kubernetes is a container orchestration platform for automating the deployment, scaling, and management of containerized applications. Kubernetes makes it easy to deploy and operate applications based on a microservice architecture for almost any cloud. It does so by creating an abstraction layer on top of a group of hosts, so that development teams can deploy their applications and let Kubernetes manage things like controlling resource consumption by application or team, evenly spread application loads across their host infrastructure, and automatically load balance requests across the different instances of an application.
Developer tool and partner integrations include: CoreOS, Docker, and JFrog
If you’re deploying applications on Windows servers or on the .NET framework, check out Octopus Deploy. It provides automated application deployment so your teams can easily deploy and promote releases between environments. With Octopus, you can limit who can deploy to what environments and programmatically promote test-based workflows.
Language support includes: ASP.NET, Java, and Node.js
Developer tool and partner integrations include: VSTS, Bamboo, and Jenkins
OpenShift offers both a container-based platform and a public cloud platform. OpenShift is built on Docker (with Kubernetes for orchestration), so if your app runs on Docker, you can deploy it anywhere with Openshift right from your IDE or CLI. Key features include dynamic container storage and multi-tenancy.
Language support includes: Java, Python, Ruby, .NET Core, and Perl
Developer tool and partner integrations include: Jenkins and Ruby on Rails
Open source application shops may love doing continuous integration from Travis CI if their applications are hosted in GitHub—because it’s basically free in those circumstances. With Travis CI you can deploy to a number of cloud tools, including Heroku, AWS Lambda, and OpenShift.
Language support includes: C, C++, Ruby, Rust, Java, PHP, Python, and Clojure
Developer tool and partner integrations include: SauceLabs and SonarCloud
If you’re a forward-thinking early adopter into serverless technologies, this tool may be just what you’re looking for. Up uses AWS Lambda and Amazon API Gateway to deploy your applications, APIs, and static websites. Pro features include encrypted environment variables, alerting via email, SMS text, and Slack, and speed-optimized Amazon S3 uploads.
Language support includes: Node.js, Golang, Python, Java, Crystal, and Clojure
Developer tool and partner integrations include: AWS Lambda and GitHub
This hosted deployment software runs in the Microsoft Azure cloud, and is platform agnostic. VSTS offers version control and build-and-release management, but can also help you deploy your application to any platform, cloud provider, or app store, using your own build-and-release infrastructure.
Much like our list of infrastructure automation tools, these application-deployment tools each have their strengths, weaknesses, and learning curves. Fully integrated solutions, like those from cloud leaders AWS, GCP, and Azure, provide many one-stop benefits. But plenty of other platforms and services provide a range of useful features and integrations. And tools like Jenkins are well proven across the industry.
This post is designed to be just one step in a thorough analysis of what tools are right for your cloud adoption, as you work to optimize your customer experience and meet key performance indicators.
Get maximum value from the cloud
With New Relic, you can migrate faster, resolve issues faster, and ensure the complete success of your cloud adoption initiative. Learn more >