DevOps is a pretty broad term with plenty of technical jargon associated. For the non-technical, understanding what DevOps is and how it impacts their project can be a bit overwhelming. That’s why we felt it was important to break down the basic definitions and terminology associated with DevOps and explore the advantages that can be felt from investing in practices like a CI/CD pipeline.
What is DevOps?
First things first, the name DevOps is a mashup of Development and Operations. It primarily relates to the stage between those two areas.
Every definition of DevOps differs slightly, so here’s our variation. DevOps is the use of tools, processes and people to improve an organisation's ability to deliver digital products and services at a high velocity.
Yes, that is a very broad definition - this is 100% deliberate.
There is so much innovation and improvement in software development that it’s easier to group some of these under a common banner.
One of the most common examples used when referring to DevOps is Continuous Integration/Continuous Deployment pipelines (CI/CD).
What is Continuous Integration/Continuous Deployment?
One of the most frequent acronyms within the DevOps space is CI/CD. CI stands for Continuous Integration which is the practice of merging all code changes into a central repository where a pipeline validates those changes through tests and builds.
CD could stand for Continuous Delivery or Continuous Deployment – they are similar concepts but differ on their extent. Once a process meets Continuous Deployment, every time a code change is merged into the central repository, it runs it through the release pipeline, performing all the necessary checks before releasing into a live environment for your users.
With CI/CD the dreaded ‘release day’ is a thing of the past. Let's take a look at what a release day entails without CI/CD pipelines. Firstly, test reports need to be created before any release can proceed. These test reports need to be run on every device, meaning there are a few deploys involved. Once these are created, the application still needs to pass a set of vigorous manual approvals from DevOps specialists. Again, this can be a timely procedure, especially if the DevOps specialists are pre-occupied with another release.
With CI/CD these time-consuming procedures are gone, meaning releases are frequent and testing is prioritised. We’ve broken down the advantages that flow on from DevOps and in particular CI/CD pipelines below.
4 Advantages of DevOps and Release Pipelines
1. Automation reduces risk
Creating an automated release pipeline significantly reduces risk. Manual releases are not only time prohibitive, but they can also be error-prone. Consider a step-by-step process in your everyday life – how many times have you missed a step and had to go back and fix it? Cooking is a great example. I can’t count the number of times I’ve had to wait 10 minutes because I’ve forgotten to pre-heat the oven. The more we can automate, the lower the risk of manual errors. This means developers can focus on the truly complex and creative challenges.
2. Improves efficiency and reduces costs
Depending on the environment, a manual release can take on average 4-8 hours to complete. This is predominantly due to all the manual checks and balances that have to be performed by a developer to ensure the application is working as expected. With an automated release pipeline that does most of that heavy lifting, application releases can be done in minutes not hours, and can be done while the development team continues working. If a typical project is released fortnightly at a minimum and you’re saving ~6 hours every time, it doesn’t take long for the investment in DevOps to pay for itself.
3. Emphasises quality assurance
With testing and QA controls built into the release process, the framework for success has been set and must be followed. This means automated, consistent, and instant feedback on feature quality with test automation. The key benefits are two-fold, firstly, you don’t have to wait for user acceptance testing or smoke testing to quickly determine whether a feature will break/impact other features. Secondly, you can instantly view a feature on your environment. Sharing this link means you can cross-device test with ease.
4. Empower your team to do more
Specialist DevOps engineers are a dime a dozen. A comprehensive pipeline means there is no need for specialist DevOps engineers to be involved at every point of the release process, empowering the application developers on the project to handle more.
What has WorkingMouse done to leverage DevOps?
Clearly we’re sold on DevOps, so we’ve taken a few steps to improve our capabilities and leverage more tools.
Some of the best DevOps tools have only recently been released. Gitlab version 14 was released in June this year and most importantly, it has a number of pipeline automation features that will level-up our internal capabilities. This has unlocked some of the benefits below.
2. Build out CI/CD pipelines
With the right tools at our disposal, it’s time to start leveraging features. Some of the initial wins in building out the CI/CD pipelines are provided below. This is where it gets a little more technical, but we’ll do our best to break it down.
This is the view of a Merge Request in GitLab, that utilised pipelines for testing, building and reviewing apps. If you zoom in you can see that it gives the status of the last pipeline run, as well as the test summary and link to the full test report. Importantly, it also disables the ability to merge (or release your code into a new environment) until the pipeline succeeds.
Here’s an example of a test report.
All the stages and jobs in a pipeline are visualised in a few different ways to assist in seeing at a glance what the Pipeline is doing, and the different jobs that depend on one-another. Apart from looking really flash, it provides a helpful overview for developers wanting to understand the release pipeline.
3. Create greater visibility through more integrations
In order to communicate the progress of the most recent merge request to the developers responsible as well as the wider project team, an integration with WorkingMouse’s instant messaging application (Mattermost) was utilised. This creates automated updates from Gitlab to Mattermost that let the team know whether the release failed (and if so, why) or succeeded.
4. Deprecate existing automation tools
Existing test automation tools (like Jenkins for example) are being retired. This is something that happens frequently in the tech industry - new, better tools that help you do more become available. Moving off old automation tools will be a phased approach, with some projects moving to pipelines immediately while others will slowly be transitioned across.
There are some exciting experiments in progress and we’re looking forward to realising these benefits on our clients' projects in the very near future.