DevOps is an organizational culture, methodology, and a set of practices that brings Development and IT Operations teams closer together. By implementing automated processes for software delivery and infrastructure maintenance, organizations can release and update software faster and with better quality.
It’s important to remember that there is no standard definition or set of standards for DevOps. It’s not governed by a fixed set of rules, and there’s no single set of instructions on how to “do” DevOps.
The word “DevOps” is derived from a combination of “development” and “operations” but represents more than just a team or a process or an idea – it’s an organizational culture and philosophy aimed at rapidly and continuously delivering and integrating new software to release changes and new services to customers as quickly as possible.
As such, the scope of DevOps is broad and must be implemented across several teams within an organization to achieve the desired results. The main goals are faster time to market, shortened release cycle and low rate of release failure.
Definition of DevOps
DevOps is an organizational culture, set of practices, processes and tools that aims:
- to improve communication between teams involved in the development, delivery and maintenance of new products and services
- to speed up delivery of new products and services to customers
- to deliver services that are maintainable and scalable
- to automate wherever and whenever possible
Let’s dig a little bit deeper to further develop some of the concepts and ideas behind DevOps.
Improved Communication Is a Key DevOps Concept!
Improving the communication and collaboration between teams is probably the biggest challenge that the DevOps philosophy seeks to overcome, as this often requires cultural and structural changes within the organization.
DevOps drives teams that are normally separate from each other, working under different constraints and with different objectives, to collaborate and communicate a lot more closely.
For example, an objective of the Dev team may be to deliver new features into the network often and as quickly as possible to meet customer needs. Meanwhile, an objective of the Ops team may be to minimize changes to the network to reduce any service downtime.
So you can immediately see how these two objectives are in direct conflict with each other!
While it’s a relatively straightforward task to provide another tool for a group of users, it’s considerably more difficult to change existing processes and ways of working in order to bring different teams closer together, especially when those teams are working with a different set of goals and constraints.
A Note On The DevOps Name
Note that “Dev” is a term generally used for software developers bashing away on their keyboards, but in this context can actually represent a much wider group and covers “anyone who works for software or service development” such as business product owners, system engineers, system integrators, QA and test engineers.
The “Ops” part can have just as wide a scope as “Dev” and can be used for system administrators, release engineers, database administrators (DBAs), network engineers, security specialists, and many other sub-disciplines.
Some Other DevOps Definitions
Here are some other common DevOps definitions I’ve come across, all are valid and help to develop an understanding of how DevOps works:
- DevOps is the collaboration of different disciplines (developers & operations) within IT departments through a strong trust relationship and effective communication.
- DevOps is a philosophy and cultural approach. It encourages effective communication between developers (dev) and system administrators (ops).
- DevOps represents the entire set of activities required for the developers (dev) and system administrators (ops) to collaborate in the software lifecycle consisting of design, development, testing, and installation as well as in the following support period.
- DevOps is a practice in which system administrators (ops) use the techniques used by developers (dev) for the operation of their own systems. These tools range from source code control to testing, and Agile development processes.
DevOps And The Need For Speed!
Speed to market, blah, blah, blah, speed to market, blah, blah, speed…
Seriously though, the speed at which consumers seem to want the latest and greatest features and services continues to grow at a frightening pace. No sooner have we found one bright and shiny new app, then we’re on the app store looking for the next bright and shiny, and ever so slightly better app.
Perhaps the decimation of the average person’s attention span by social media has a part to play? Who knows, but what we do know is that competition between products, services and businesses is fierce.
In this environment, those companies that can change, adapt and roll out new software changes dozens, or even hundreds, of times of day have a clear competitive advantage. Think Google, Amazon, Facebook and Twitter.
So, software must be produced with “agility”, but this cannot be achieved when “Dev” and “Ops” are working separately, with conflicting drivers and objectives.
Companies that developed software using traditional project management methods such as Waterfall have discovered that they are increasingly unable to keep up with the demands and expectations of their customers.
Agile to the Rescue
Agile was borne of a desire to address some of the issues with traditional software development methods such as Waterfall.
Agile is a set of values and principles and is also a way of thinking and acting.
Agile recommends short development cycles, iterative and incremental delivery, failing fast, getting feedback and adapting quickly.
Agile aims to deliver business value to customers from the start of the project, instead of trying to deliver it all at once near the end.
Agile emphasizes people, collaboration and interaction with transparency, frequent reviews and reflection, and rapid adaptation.
Agile implements continual planning, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.
There are many Agile frameworks that can be used to implement these principles, with some of the more popular being Scrum, Kanban, XP, and Crystal.
DevOps and Agile
As you can probably guess, there is a strong connection between DevOps and Agile methods.
DevOps builds on Agile principles, but also takes operations, administration and maintenance (OAM) of systems into account.
DevOps empasizes communication, collaboration, and integration between software developers (Dev) and system administrators (Ops) and, as a result, it helps IT services and software products to be delivered faster and more frequently, with reduced risk and loss of service.
DevOps expands the Agile principles, considering the whole service rather than just the generated code and introducing other techniques and concepts such as continuous integration and continuous delivery (CI/CD).
DevTestOps…And Other DevOps Variants
DevTestOps? DevSecOps? WTF? Are you just making this s**t up?!?!
DevTestOps highlights the key role of the tester in the development of the product along with the Ops professionals.
DevTestOps is a combination of DevOps and Continuous Testing and is a process that involves testing early, testing often and testing throughout the software delivery pipeline.
DevTestOps ensures continuous testing and feedback of test results to developers throughout the stages of product development, thus mitigating business risk and reducing the likelihood of defects at later stages.
Personal note: Coming from a software testing background, DevTestOps is very close to my heart and I often find myself saying to people…
“DevOps? Do you mean DevTestOps?” ?
DevSecOps is short for development, security and operations and it’s aim is integrating security practices within the DevOps process.
With DevSecOps everyone is accountable for security so that security decisions and actions can be made at the same scale and speed. The goal is to plug any gaps between IT and security while ensuring fast, safe delivery of code.
DevOps And The Need For Feedback!
Finally, in today’s data-rich world it’s also probably a good idea to mention the need for feedback.
In other words, we need to be able to turn all the raw data generated by complex systems and networks into useful information that can answer questions such as “How is the service performing?”, “Is it what the customer wanted?”, and “What services should we launch next?”.
Think Big Data, data lakes, HADOOP, real-time data streaming and analytics, and data visualization.
Organisations need this information to not only assess how it’s systems are performing, to identify issues and spot bottlenecks before they occur, but also to help make better business decisions.
See my related article “What is AIOps: The Ultimate Beginner’s Guide” which outlines some recent exciting developments in Operations that aim to address some of these challenges.