TL; DR: DevOps is a methodological approach that offers a novel mindset to software development. From creating more effective communication channels within a team to faster releases, the DevOps system can achieve incredible results in a matter of weeks. Read Eduardo Herrera’s, Blankfactor’s DevOps Lead, account on what this offers to the industry.
DevOps has many definitions, but there’s one in particular I like, which is Donovan Brown’s take and summarizes it as “the union of many automation processes from the human side and the machine side.” The idea is to produce an application or software of value to the end user. That’s why his definition still falls flat: more than a methodology, DevOps is a mindset and a cultural framework.
I wouldn’t consider DevOps a toolset or a process — it goes beyond that. It’s truly at the crossroads of different disciplines. Traditionally, developers executed a series of tasks and sent them to quality assurance (QA) specialists for revision and debugging. Once the process was over, the production manager released the project. If any issues came up during release, those no longer fell in the developer’s ballpark.
The above model changes with DevOps. The developer, QA, and production manager all work together from the beginning to ensure each step of the process transitions smoothly. Under a DevOps framework, a developer constantly communicates with a QA specialist, guiding that person into what they’re doing and what considerations they should take before testing the code. At the end, who truly benefits from this is the user. Instead of waiting six months for new changes, they only need to wait a couple of weeks.
Continuity is the key
Within a DevOps framework, you’ll often notice that most processes are created to ensure continuity and efficiency. Two of its most important concepts are continuous integration and continuous deployment. Continuous integration or CI involves integrating code from multiple developers into a single project or build. Creating a build allows you to run tests on the old code and the new code to verify that what developers just created won’t break the project.
As a DevOps engineer, one of my main tasks is to create a build where I compile new code, run all sorts of tests, and, if they’re successful, move them to deployment. However, deployments aren’t a one-off event. Within the DevOps framework, engineers employ continuous deployment (CD) strategies to release any code commits that pass the automated testing phase directly into production.
Using these methodologies, I could perfectly move every single build I create into production. However, the best DevOps practice is to create a series of builds during the week to determine what works and what passes automated testing. Once this is done, I create a new build and move it down to Quality Assurance for testing. At the end of the sprint, the code we move to production has passed through several filters and has been tested on several occasions.
Is DevOps the same as Agile?
Although DevOps and Agile share many elements in common, it’s important to understand they’re not the same. Agile practices focus on small, consumable increments to deliver faster developments with fewer issues. This is why I wouldn’t imagine carrying out any DevOps processes without Agile: their main objectives are very similar. However, as I mentioned before, DevOps provides much more than a project management methodology; it’s a new cultural mindset for creating software.
Let’s consider the case of Internet Explorer. Before Microsoft switched to Microsoft Edge, the company released a new version of the web browser every year or two, which usually coincided with a new Windows version. Instead of waiting a long time, developers at Google Chrome and Firefox began working on shorter, more frequent releases that allowed both to adapt faster to user needs.
Such a process doesn’t follow a straight line. Rather, it relies on simultaneous work across different areas and departments to bridge the gap between development and operations.
The four phases of a DevOps system
The entire DevOps production cycle can be divided into four phases or stages. The first stage focuses on planning, which sets the objectives, tasks, risks, and constraints. Your main goal is ensuring the project complies with the basic requirements. Think of it as follows: if you need to work on a second floor, you must first check that there’s a stairway.
Once you’ve completed the planning, you can move on to write the code and work directly with your team. What makes DevOps different from other frameworks is the way you integrate everyone’s work into a single package or build. Instead of working individually, you communicate with the entire team and ensure everyone is aligned. Creating a build allows you to execute the third step, which is releasing all those ideas you discussed with the team into different environments.
The final stage in the cycle is monitoring, which begins once your release is over. In any project, you need to make sure that the code your team created works properly in different environments. An example of this happened to me years ago, in a different company. After completing a release, the team noticed that the code used all of the machine’s CPU. I found out the code was supposed to run under specific conditions, which changed once you moved to production.
What benefits does a DevOps system bring?
The DevOps approach can seem confusing to some, but it brings great benefits to the companies and teams that apply it. First, it’s incredibly quick to implement. Your team can begin writing code today and have its first release the following week. This is quite beneficial for developers, who can create, test, and release products quickly and with little fuss.
Something I must also note is how much stability the DevOps framework brings to those who use it. The process is consistent and reliable because it depends on automated processes and systems to check for mistakes and bugs. It’s very easy to make a mistake when dealing with several people. DevOps prevents this by ensuring you run the same tests every time and the environments your team uses remain unchanged throughout the process.
There’s also great consistency in the product itself. Because such a framework includes testing and automated testing in different environments, the end result will be more polished. At the end of the day, streamlined processes and cleaner end results provide peace of mind to stakeholders.
For me, one of DevOps’ most important benefits is communication. That didn’t happen before in other projects. This system is very useful in preventing information from getting siloed and keeping everyone in the loop. Also, people who wouldn’t typically communicate in a project now communicate frequently.
How a DevOps service is transforming Blankfactor
For the project I’m working on, one of my main responsibilities is implementing best practices to streamline different processes. Taking client needs into consideration, I start working on making our project safer, more transparent, and more trustworthy. I’m not applying best practices on a whim; all of these decisions have some sort of effect on the end user’s experience.
Part of what makes DevOps so convenient is how it manages to get the team into the customer mindset. At Blankfactor, using DevOps has helped many engineers understand and develop products that truly listen to client needs, delivering them faster and with great efficiency.