“Customers are dropping off our website. Do we need to work on our load times?”
“Users can’t open the camera function on our mobile app. How can we fix it?”
“Twitter and Snapchat are down. How can we make sure our web and mobile applications don’t experience the same technical glitches?”
Do any of these sound familiar to your organization's developers?
Today’s consumers want bigger and better technologies, tools and features, and they want them now. For most dev teams, long gone are the days of having weeks – or even months – to develop, test and update their software and applications. Today, in the age of DevOps and faster release cycles, processes throughout the software development lifecycle (SDLC) must occur in tandem, with features continuously being revised and optimized –without compromising on quality or user experience.
When implementing DevOps initiatives, the word “continuous” is the key to success. Most Agile schemes today incorporate concepts and strategies that can – and should – be implemented at all times throughout the SDLC. The most important to recognize throughout your team’s development cycle are Continuous Integration (CI), Continuous Testing (CT) and Continuous Delivery (CD).
[ Want DevOps lessons learned? Get our comprehensive resource: DevOps: The IT Leader's Guide. ]
Often, I hear of dev teams wondering which “continuous” deployment model should be used – if at all – and when. Typically, familiar with CI and CD, they’ll pair those two off, while completely separating them from CT. While each serves different purposes, and addresses different aspects throughout the SDLC, all three can – and should – integrate to assure quality, while also maintaining velocity.
To better understand how they work together, let’s break each one down.
Continuous integration (CI)
Most developers today are well-acquainted with the idea of continuous integration: CI is all about integrating – building and packaging software codes – on a continuous basis.
Before Agile became the new status quo, dev teams typically had 60-day deployment periods to work on their projects independently. At the end of those two months, they’d come back together and share their code. As you can expect, there would often be overlaps and discrepancies that required developers to test and re-create integration points over and over again.
To avoid experiencing inconsistencies and save time on reiterations, independent dev teams throughout the organization should merge all their work into a shared repository continuously throughout the SDLC. This typically means several times a day. This allows developers to receive fast feedback, identify project risks and fix them quickly, and ultimately ensure faster release cycles.
When CI is implemented correctly, development can be completed on time and within the defined quality expectation.
Continuous testing (CT)
Perhaps the most overlooked of the “continuous” DevOps processes, continuous testing (CT) may be the most critical for CI and CD to be successful. Sometimes referred to as continuous quality, CT is the process of embedding and automating test activities into every commit.
With a waterfall approach, dev teams save testing for the end. However, if they find a bug (which they almost always will), they first have to identify the code that is causing the bug, undo everything written on top of it, update, re-write, and then re-test.
However, testing that takes place throughout and after every commit (whether that’s hourly, daily or weekly) increases confidence in application quality and drives efficiency. To implement a successful CT practice, I recommend:
- Installing 24/7 test labs
- Automating as many tests as possible
- Properly sizing the platform and test coverage for projects ahead of commits
- Utilizing strong analytics capabilities for fast feedback
Continuous delivery (CD)
Not to be confused with continuous deployment, continuous delivery (CD) is the practice of streamlining or automating each of the processes leading up to deployment, so that software can be deployed at any time. This widespread practice includes: Validating the quality of the build in the previous development environment; promoting to staging; etc. Done manually, CD can be a major time sink. However, with the help of new cloud technologies and proper orchestration, the work can be automated. With CD, you’re ready to deploy to production automatically at any time.
CI, CD, and CT: A package deal
Teams that are trying to mature their DevOps practices but finding hurdles should consider the combination of CI, CT, and CD workflows. By automating all release activities, teams can assure high-quality deliverables throughout each stage of the DevOps pipeline, raising the confidence of flawless releases. To get there, you'll need to combine CI, CT, and CD into the right formula that fits your organization’s goals.
First, you must understand how each process plays into the others. For example, for CI to be successful, you need to ensure that tests run continuously and in a stable environment – for high reliability of the test results per each build execution. The same goes for CT; to have an engine that can trigger tests automatically, you'll need robust test code, a strong test lab, and most-importantly, team synchronization. When both CI and CT are working for you, that means that you are that close to a working CD.
Incorporate CI, CD, and CT throughout the entire SDLC to keep deployments moving – and consumers happy.
Want more wisdom like this, IT leaders? Sign up for our weekly email newsletter.