Developers are usually aware of the
basic building blocks for deployment: code repositories, such as Git and
Subversion; and build tools, including Ant, Maven, and Gradle. But what other
tools can help you step up?
In this article, we present seven open source tools that you can use right
now to improve the deployment process on projects big or small. These tools are
among the best and most-used tools in their areas; they attract developers who
have created a large body of knowledge, plugins, and connectors that can be
used in a wide range of situations and integrated with other tools and
processes.But more importantly, these tools can dramatically improve your deployments. They can empower your team to build better and more-innovative software in a less stressful environment.
#1 Jenkins
Start with Continuous IntegrationPower and flexibility in Jenkins: The Build Pipeline Plugin makes it easy to chain Jenkins jobs to organize a deployment pipeline.
To build a good deployment process, you need to grab a few of those plugins. Here are some that can’t be left out of any deployment environment:
- Build Pipeline Plugin. The Jenkins delivery approach involves the chaining of related jobs through build triggers. This flexible functionality lets you create sophisticated pipelines, but it can be difficult to see the pipeline’s “whole picture,” the relationships between jobs, and where in the pipeline the build is at a given moment. The Build Pipeline Plugin solves that problem by providing a nice overview of the build pipeline, so you can easily follow the build as it happens and even decide when things should be automatic or require a manual trigger.
- Parameterized Trigger Plugin. In a build pipeline, developers use the artifact that is generated as output from one job as the input for the next job in the pipeline. The Parameterized Trigger Plugin informs the next job which build result it must use to keep the pipeline moving.
- Copy Artifact Plugin. A complement of the Parameterized Trigger Plugin, the Copy Artifact Plugin uses the parameters received from the previous job to fetch that job’s resulting artifacts and uses them as the starting point of the next job.
2 Chef
Turn Your Infrastructure into Source CodeChef is a provisioning automation framework that simplifies the configuration of your development or production environment—whether on-premises or cloud-based. It is a Ruby-based tool that does wonders to deploy any infrastructure needed for your Java application.
By using Chef, you can define a project’s infrastructure with Ruby scripts that are versioned within the project’s source code repository. Chef scripts are called recipes, and they are bundled in cookbooks. With scripts written in Ruby, you have a well-known, generic scripting language to automate infrastructure activities.
#3 Vagrant
Reproduce Development EnvironmentsOf all the tools mentioned in this article, Vagrant is probably the least concerned with deployment per se. Vagrant is focused on the developer, but it bridges development and production, helping to reduce inherent risk by minimizing discrepancies between the different environments of the deployment process.
#4 Packer
Generate Images for Multiple EnvironmentsIn a “normal deployment,” you provision, or prepare, your systems for operation. Starting from a base system, you install all the needed software until you have a fully functional environment. Tools such as Chef help you automate the provisioning process, making it repeatable and easy to evolve.
#5 Docker
Try Self-Sufficient and Portable Lightweight ContainersCreating ready-to-boot virtual machine images is a sophisticated way to use cloud computing so you can scale your application. But dealing with full stacks, complete operating systems, application servers, and the rest might be overkill. In many cases, all you want is to add one more application to your stack.
#6 Flyway
Database Migrations that Follow Your ApplicationsPowerful database migrations: Flyway can leverage the use of the JDBC API to handle schema migrations.
We can’t talk about deployment without mentioning databases. Developers understand how to upgrade an application, maintain compatibility with older versions of APIs, and deprecate functionality. But what about the database? The hardest part of an automated deployment can be underdocumented SQL scripts that need to be run “just before” production, differences between the code and the schema, and evolution and rollback situations.
#7 Rundeck
Support the Ops in DevOpsManaging multiple nodes: Rundeck runs commands in several nodes, and aggregates the results.
That brings us to DevOps, a term that means communication, collaboration, and integration between developers and IT operations professionals. As developers, we know how good tools promote collaboration. When we save infrastructure definitions in our repositories or we automate infrastructure creation in a way that benefits both developers and IT operations professionals, we promote DevOps strategies in our projects. Each of these seven tools helps the collaboration between development and operations.
Conclusion
The tools described in this article are all open source tools, and you can implement them today in your project. They can be used to deploy all kinds of applications, and are particularly well suited to deploying Java applications and services.Try these tools and experience how they help you to move toward a full deployment pipeline for your Java projects.
No comments:
Post a Comment