Tuesday, 16 January 2018

Open Source Tools for Java Deployment



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 Integration
Power 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 Code
Chef 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 Environments
Of 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 Environments
In 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 Containers
Creating 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 Applications
Powerful 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 DevOps
Managing 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