Basics and Core Concepts of DevOps for Businesses
What is DevOps?
DevOps is not your another hot trend. On contrary, DevOps is a necessity that sets businesses apart from their competition.
Surprisingly, this explanation does not really define DevOps. Ask 10 businesses “What is DevOps?” and they all will give you a different definition. Some might mention tools, continuous integration, and deployment; others will say that DevOps is a process. DevOps could even refer to a release engineer specialist.
All these answers are correct. Thing is, they’re not full. Just as Maslow’s Hierarchy addresses five levels of basic human needs, DevOps comprises five different levels of software development process optimization.
Maslow’s Hierarchy of Basic Human Needs vs DevOps Hierarchy of Software Development Optimization
Let’s go through each of these levels step-by-step.
Basis Level: Tools
Numerous things are essential for our lives. Human beings need to breathe air, drink water, consume food and sleep in a place with a roof above their heads. This is just as relevant for the Tools we use to satisfy our software development needs.
Tools are the baseline for any IT project, underlying the whole development process.
Are your developers still fiddling with manual work, compiling the source code by hand? They could save tons of time and effort with proper tools. Nowadays, tools are used everywhere: SVN or GIT are used for source code control, while continuous integration tools like Jenkins, TeamCity or Visual Studio compile the code and run unit tests after committing changes.
DevOps Tools help to automate manual testing and allow detecting errors in the source code in the earliest stages of software development. Later on, in CD (continuous deployment) systems like Octopus, releases are being created and deployed.
Although Tools represent the most basic level, here’s where lots of companies already start running into difficulties. It may be challenging to manage all the systems and tools used by your development teams. Let’s not forget that someone has to set those tools up properly. Things get even more complicated if you have several teams.
The next logical step here is to allocate the dedicated person who would be responsible for tools management and release process.
Level 2: Ownership of Release Process
During this stage, businesses start to form processes, driven by the need to feel safe and secure – similarly to Maslow’s hierarchy. Naturally, someone should take care of the release process in the team and that’s exactly when you’ll need a Release Engineer.
Release Engineer is a professional taking full control over releases process. By setting the required environments and automating manual work, Release Engineer consolidates the team and helps developers to focus on their development tasks, instilling a sense of safety into their minds and souls.
In other words, a release engineer ensures that each team member is focused on meaningful work and isn’t wasting time on routine tasks. The sense of safety is achieved by the following:
- making the development pipeline standard and smooth
- excluding manual work that could possibly lead to mistakes
- each delivery will have the same steps (repeatable)
Release Engineer takes ownership of the delivery pipeline, which allows establishing a predictable path at any moment: from an idea as a requirement to a feature as a value received by the end users.
Level 3: Deployment Process
Deployment Process level is equal to the Maslow’s social level. Same as with the person’s need for the family and socialization, companies need to establish an agreement with those involved in the development process. Everyone should work within the processes according to a set of specific rules, and with the understanding of the final goal and values.
On this level, all preceding processes scale further and require collaboration of several teams or departments.
Deployment process is a logical continuation of Continuous Delivery that ensures the roll-out of the development builds in various environments. Deployment process isn’t only about deployment by itself, covering a number of areas:
- managing environments as a Code
- supporting different types of roll-out (eg: canary deployments, A\B testing, etc. )
- continuous delivery & repeatability of steps
Level 4: Quality Process
Quality Process is similar to the Maslow’s Esteem level, which says that we all have to be accepted and valued by others.
The mission of DevOps originated from efficiency and quality purposes. For example, Smoke and Sanity tests can be performed in a dedicated environment for a quick check after each build, while full regression testing can be run only after conducting all other types of testing. Performance tests within the production-like environment are likely to be performed once in a while or before a major release.
This helps business to benefit from saving optimization costs, as you don’t run all the environments permanently, but only when the process requires it without any human interaction.
Such automated quality gates are the next important step towards perfection brought by DevOps, allowing businesses to favor from better efficiency and predictability. Moreover, it improves product time to market and feedback loop.
A product, which reaches Quality Process level of the DevOps Hierarchy, becomes recognized and praised by the end users, standing out from the tons of other similar products.
The Highest Level: Philosophy
Ironically, the uppermost level of any Pyramid is always the deepest level in its essence.
Philosophy crowns the top level of our hierarchy. Reaching this level should become the ultimate aim for any business.
When talking about Philosophy, we are not referring to a specific notion, such as DevOps, Continuous Improvement, or Continuous Delivery. Philosophy comprises the whole process in general, i.e., full ownership of the complete cycle: from eliciting requirements to business value generation. What enterprises should try to achieve is to deliver value to their business as soon as possible. This approach leads to a change of mindset of all involved.
Vincent van Gogh once said, “Great things are done by a series of small things brought together.”
We don’t use tools in order to deliver the application code faster. We design and plan the code creation, looking deeper into the very essence of what we deliver standing on the value chain perspective.
The development team doesn’t just create a feature from their backlog anymore. They need to think about how to release the feature, at what time, and how to take ownership of its deployment to the production environment. Developers need to think of the needs of their end users who will be soon testing and using this new functionality. Complemented with a sophisticated process flow, which includes monitoring, versions restoring, backup, and much more, this approach produces an excellent user experience, improves customer satisfaction, and grows users’ loyalty and trust.
DevOps as the philosophy is the point where every member of the development process focuses on delivering value to the best of all we achieved in the previous steps. It is a continuous improvement in its ultimate form, and realization of the full potential of the team and company as the whole.
Naturally, this blog post doesn’t cover all questions one might have in regards to DevOps. A complex matter, it requires time and effort to learn and master. Whether you’re just starting to learn specifics of DevOps implementation or you would like to adopt DevOps for your existing project – check out Infopulse’s DevOps consulting and implementation service.