Continuous Delivery: tools & books
DevOps has given rise to a number of methodologies aiming to speed delivery and accuracy, giving developers the tools they need to deliver better products, with fewer bugs, and implement improvements continuously. And one of them is – continuous delivery – the topic of today’s article. We will look at key Continuous Delivery tools and books.
As we know, the overall objectives of the Agile software development approach are to accelerate time to market and improve code quality and the goal of Continuous Delivery is to make sure the software is always ready to go to production.
What is Continuous Delivery?
Continuous Delivery is a software engineering practice in which teams develop, build, test, and release software in short cycles, where the aim is to keep the code in a deployable state at any given time. It depends on automation at every stage so that cycles can be both quick and reliable. This does not mean the code or project is 100% complete, but the feature sets that are available are vetted, tested, debugged and ready to deploy, although you may not deploy at that moment. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production.
In theory, with continuous delivery, you can decide to release daily, weekly, etc., or whatever suits your business requirements. However, if you truly want to get the benefits of continuous delivery, you should deploy to production as early as possible to make sure that you release small batches that are easy to troubleshoot in case of a problem. Continuous delivery lets developers automate testing beyond just unit tests so they can verify application updates across multiple dimensions before deploying to customers. These tests may include UI testing, integration testing, etc. This helps developers more thoroughly validate updates and discover issues. Continuous Delivery help companies become agile making it possible to continuously adapt software in line with user feedback, shifts in the market and changes to business strategy.
According to Martin Fowler, Continuous delivery allows you to:
- Have deployable software throughout its lifecycle
- Prioritize keeping the software deployable over working on new features
- Get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them
- Perform push-button deployments of any version of the software to any environment on demand
- Achieve continuous delivery by continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems.
Key benefits of continuous delivery
1.Reduced Deployment Risk
Since you are deploying smaller changes, there’s less to go wrong and it’s easier to fix.
2.Believable Progress
Many stakeholders track progress by tracking work done. If “done” means “developers declare it to be done” that’s much less believable than if it’s deployed into a production or production-like environment.
3.Fast user Feedback
The biggest risk to any software effort is that you end up building something that isn’t useful. The earlier and more frequently you get working software in front of real users, the quicker you get feedback to find out how valuable it really is
4.Higher quality
When developers have automated tools that discover regressions within minutes, teams are freed to focus their effort on higher level testing activities such as performance and security testing.
5.Lower costs
Any successful software product or service will evolve significantly over its lifetime. By investing in build, test, deployment and environment automation, you substantially reduce the cost of making and delivering incremental changes to software by eliminating many of the fixed costs associated with the release process.
6.Happier teams
Peer-reviewed research has shown continuous delivery makes releases less painful and reduces team burnout. Furthermore, when you release more frequently, software delivery teams can engage more actively with users, learn which ideas work and which don’t, and see first-hand the outcomes of the work they have done.
7.Automated software release process
Continuous delivery lets your team automatically build, test, and prepare code changes for release to production so that your software delivery is more efficient and rapid.
Continuous Delivery Tools
Numerous Continuous Delivery tools are present in the market that accomplish the different processes of continuous delivery:
- Top Overall – Buddy
- Software Containers – Docker
- Build Tools – Ant, Rake, Maven
- Code Review & Insight tools – SonarCube
- Code Insight – Fisheye
- Continuous Integration – Jenkins, Gitlab, Bamboo
- Cloud IaaS & PaaS tools – Google App Engine, AWS, Windows Azure, Heroku
- Infrastructure Automation – Terraform
- Dependency Management – Nexus
- Integrated Development Environment (IDE) – JetBrains, Visual Studio
- Issue Tracking – JIRA, Greenhopper
- Testing – AntUnit, Cucumber, JMeter, SoapUI, Selenium
- Version-Control System – GIT, SVN/Subversion, Perforce
Continuous Delivery Books
1. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler) by Jez Humble and David Farley
Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours— sometimes even minutes–no matter what the size of a project or the complexity of its code base. Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the “deployment pipeline,” an automated process for managing all changes, from check-in to release. Finally, they discuss the “ecosystem” needed to support continuous delivery, from infrastructure, data and configuration management to governance. The authors introduce state-of-the-art techniques, including automated infrastructure management and data migration, and the use of virtualization. For each, they review key issues, identify best practices, and demonstrate how to mitigate risks.
2. Continuous Delivery CD A Complete Guide – 2019 Edition by Gerardus Blokdyk
All the Continuous Delivery tools you need to an in-depth Continuous Delivery CD Self-Assessment. Featuring 934 new and updated case-based questions, organized into seven core areas of process design, this Self-Assessment will help you identify areas in which Continuous Delivery CD improvements can be made.
3. Continuous Delivery with Docker and Jenkins: Create secure applications by building complete CI/CD pipelines, 2nd Edition by Rafal Leszko
Continuous Delivery with Docker and Jenkins, Second Edition will explain the advantages of combining Jenkins and Docker to improve the continuous integration and delivery process of an app development. Moving on, you will learn how to ensure quick application deployment with Docker containers along with scaling Jenkins using Kubernetes. Next, you will get to know how to deploy applications using Docker images and testing them with Jenkins. Towards the end, the book will touch base with missing parts of the CD pipeline, which are the environments and infrastructure, application versioning, and nonfunctional testing. By the end of the book, you will be enhancing the DevOps workflow by integrating the functionalities of Docker and Jenkins.