Deploying updates to you application is initially easy. It takes a few minutes to deploy a few files and create backups. When your code base grows, it’s no longer feasible to manually deploy it. Ask any developer and they’ll tell you the disasters that happen when you manually deploy files from a large code base. Some files are accidentally forgotten and bugs are introduced, backups are forgotten and rollback is complicated, or developers forget certain directories and deployment is incomplete. You can fix these problems by scripting your deployment.
Before we introduce tools, you should decide what kind of deployment you need. Desktop applications take a different approach than web deployment. This article covers web deployment, which is basically backing up files and updating them to the latest version. With the right tools, however, you can accomplish a one-click deployment solution. It’s great for large applications where developers and operations people are stuck for an entire day deploying various upgrades across the network.
Some solutions also depend on the operating system you use, but most of these tools will work cross-platform.
Jenkins is one of the most versatile tools on the market. Jenkins lets you script your deployment, save it as a specific configuration, and then it supports one-click deployment. You can deploy to almost any kind of server, but Jenkins heavily relies on your own scripts. It’s written in Java, so it’ supports almost any platform as long as it supports Java applications.
If you develop in Windows, you already work with Visual Studio. What you might not have worked with yet is its deployment tools. You can use Visual Studio with cloud services and deploy directly from your development environment. If you create Windows applications, the easiest way to deploy applications is using Visual Studio and Team Foundation Server.
If you have a large enterprise or a complex deployment infrastructure, Chef is the best way to go. Chef has a larger learning curve than the other tools, but it’s well worth the effort if you have a large application to deploy. Many times, enterprise solutions include an application that spans multiple servers. Miss just one of these servers and your entire suite of productivity tools crash. Chef ensures that this won’t happen, and your operations team can deploy software along with other critical components across the cloud.
If you’re an Agile shop, you probably use one of the common Agile tools to manage your project. If you use JIRA, then Bamboo is a good deployment tool. It integrates directly into JIRA, so you can manage your project and deploy in one common interface. If you haven’t heard of JIRA, it’s a good Agile project manager tool that’s common on the market. It’s far more flexible and versatile than free tools such as Trello.
If you need to integrate testing into your deployment procedures, then UrbanCode Deploy is your best option. IT’s designed and distributed by IBM, so you know the application is well designed and works well. This tool integrates testing and deployment into more than just software applications. It also helps you test and deploy configurations, middleware, and database changes.
Any one of these solutions will take some time for your team to learn, unless you’re already using Visual Studio. However, the manpower, hours and effort for deployment are greatly reduced. All of them give you detailed errors should deployment fail, but your teams can one-click deploy and return to what they were doing while they wait. It’s complete automation for deployment.
If your application and its resources are growing, using automation tools is the only way to go to reduce the chance of deploying your application with bugs and forgotten backups.