DevOps and "continuous everything"
DevOps practices aim to shorten the agile development lifecycle — through collaboration, communication, and automation. The concept of "Continuous Everything" is shorthand for increasing agility throughout the process from testing, governance, and monitoring through to integration and delivery.
This guide specifically focuses on the following practices:
These practices help development and operations teams streamline software and infrastructure changes, improve code quality, and deliver new experiences to market more reliably. The benefits for agile teams and customers are cumulative across the three. Think of it like a nesting doll. Continuous delivery incorporates the benefits of continuous integration and, in turn, continuous deployment incorporates the benefits of continuous delivery.
It can be daunting to think about adopting any DevOps practices in your organization if you are heavily siloed or are not currently using much automation. The good news? DevOps favors incremental improvement. Invest in understanding what DevOps entails and work with your team to identify practices, cultural changes, and workflow improvements that you want to embrace in time.
While DevOps encompasses much more than automation, automation can be a good place to start. And even if you are not ready to build an automated deployment pipeline, understanding the differences between continuous integration, continuous delivery, and continuous deployment can give you a foundation from which to start the conversation.
What is continuous integration?
Continuous integration (CI) aims to speed up development work while keeping code quality high. Software development teams commit code to a central repository several times per day — each commit initiates a build and a series of automated tests. Properly implemented, CI helps ensure that you always have code that is ready for deployment. You can also quickly spot integration bugs because your build and test processes are automated.
One of the major perks of continuous integration is that development teams stay aligned and avoid code conflicts. Since all the code is merged, the risk of duplicating code or producing conflicting code decreases — thus increasing overall developer productivity.
Implementing CI practices does not only benefit the development team — it also allows the quality assurance (QA) team to focus on larger improvements rather than spending time catching minor bugs.
Before you adopt CI practices, here are a few of the baselines you will need to establish:
Plan who will be involved, the tools you will use, and the systems or applications you will incorporate.
Write automated tests for essential components of your codebase so you can reliably test new features, changes, and bug fixes.
Set up a CI tool or service to monitor the code repository and run tests. The tool that you choose will depend on your tech stack, requirements, and team.
Commit as a team to merging changes frequently — small changes are easier to isolate and roll back if a build breaks.
What is continuous delivery?
Continuous delivery (CD) refers to keeping code in a deployable state — through automating the staging process. Recall that CI automates building and testing. Continuous delivery expands on CI by adding the step of automatically deploying code to an acceptance environment. From there, you can release to production. Note: CD still maintains a manual release (or deployment) process.
When you operate within a continuous delivery strategy you complete small build cycles within short sprints of two to three weeks. This tight development cycle combined with increased automation allows you to ship code changes at any time.
CI and CD drive productivity and improve your ability to deliver a better customer experience. By design, CD creates a continuous feedback loop between developers and customers — allowing you to release new experiences, gather feedback, and quickly follow with improvements.
Here are recommended steps to take before adopting CD:
Establish a strong foundation of continuous integration practices and give your team time to become comfortable with CI processes.
Invest the time and resources to develop a robust testing culture that addresses all aspects of deployment. Catching bugs and issues early is key to successful CD.
Audit your documentation practices to check for consistency, accessibility, and organization. As your team and processes scale, you will rely on comprehensive documentation that spells out processes and increases shared knowledge.
What is continuous deployment?
Continuous deployment represents a fully automated process from building to testing to staging and deployment. If automated tests pass, new code is pushed to production without manual assistance. End-to-end automation makes it possible to scale release cycles and get more changes to end users faster. Achieving continuous deployment is typically considered the last step in creating a fully automated CI/CD pipeline.
Here are some key requirements to streamline your transition from CI and CD to a full continuous deployment program:
Ensure that your testing processes are running smoothly and that your team has set a precedent of quickly catching and fixing bugs.
Commit to complete automation by investing in your team and your development stack. This is where you want to push to obtain best in class tools and grow your team with strong, capable developers.
Round out your development stack with a reliable monitoring and alert system. This component is critical to quickly responding to issues and creating stable deployment processes.
Implementing these practices in your DevOps strategy
These three practices — continuous integration, continuous delivery, and continuous deployment — constitute a core area to develop as you cultivate a broader approach to DevOps. Each brings you closer to establishing a culture of software development that consistently delivers value to customers.
It will take significant time and effort to embrace DevOps practices, workflows, and "Continuous Everything." An effective DevOps transformation requires buy-in from leaders across that organization — not always an easy task. But the investment is worth it when you consider the positive impact such changes can have on your ability to iterate, innovate, and delight customers.