Application deployments and updates can be a major hassle for IT operations teams. Open source continuous delivery tools help organizations change how they write, stage and release application code.
Continuous delivery gets developers and operations teams to achieve smaller releases more frequently. "What could go wrong? Not as much," said Kris Saxton, founder of Automation Logic, an IT services consultancy in London. Continuous delivery tools shorten the mean time to recovery when a production deployment doesn't behave as expected -- you can fix what broke much faster, he said, with simpler rollback plans.
Continuous integration and delivery (CI/CD) takes a mix of tools, such as Jenkins and Git, but it is not a defined tool set. "Tools are much, much, much less important than the ideas," said Dave Farley, independent consultant and authority on continuous delivery, noting that continuous delivery applies the scientific method to software delivery. Definable infrastructure, incremental changes, and rigorous production-like development and test methodologies combine to minimize IT systems management concerns.
Arguably the most well-known CI/CD tool is Jenkins, an open source automation server that defines pipelines for software build, test and deploy processes. Multiple tools and systems plug in to Jenkins' automation server. While Jenkins works well, "it's successful, in large part, because it's free," Farley said, not because it's notably better than commercial offerings, such as TeamCity CI or Bamboo from Atlassian. But because Jenkins uses Secure Socket Shell, it could introduce a security risk should an attacker gain access. While it remains an open source project, enterprises can purchase professionally supported and curated versions of the tool, such as CloudBees Jenkins Platform. Adopters should compare capabilities, such as pipeline and agent management, between products.
Git is a popular open source version-control system that maintains a repository of project code. It is distributed, meaning various contributors can share changes with the entire project or branch off from the main project. Git enables version control for application development and infrastructure as code (IAC).
Virtualized developer environments, such as Vagrant, add continuity to the provisioning process, even for complex enterprise system architectures. Because continuous delivery aims to optimize and automate the entire software lifecycle, including production, Farley said, every tool -- even your database -- is part of CI/CD. The pipeline could also include tools for IAC, automated delivery, configuration and container management, automated testing, compilation, artifact repositories, information radiators, production monitoring and more.