DevOps has been a hot buzzword in the IT world over the last couple of years, and yet its precise meaning remains unclear. Along with Agile, this word represents a promising new wave of software development. Currently, a team of industry experts is collaborating to develop a universal standard for this ambiguous and confusing term. Until this IEEE working group presents its final document, those in the trenches will continue to interpret the concept with flexibility, based on a balance of experience and convenience.
Personally, viewing DevOps primarily as a new organizational culture is definitely not my cup of tea. I see greater value in the DevOps focus on maximizing team members’ creative utilization of process and tools.
I have spent a lot of time and researched many sources to precisely determine what DevOps means. Four categories are broadly associated with this term. In this blog, we will cover each of these categories.
Apart from DevOps, there are other related buzzwords like ChatOps, CloudOps, SecOps, DevSecOps that are now trending, based on the increasingly popular idea that software development is, by necessity, an integrative process. Apart from DevOps, rest all terms are out of scope for this blog.
Category 1: DevOps - Software Developers ( Dev) and IT Operations (Ops ) - CI and CD
DevOps defined as Collaboration, Communication, and Integration between Software Developers and IT Operations, whose fundamental interest areas are different and contrasting. Software Developers (Dev) want to focus on creating new code and applications, while IT Operations (Ops) intends to focus on sustainability or quality.
When the application is not working as expected, Dev often thinks “it is not my code, it’s your machine”, whereas Ops thinks “it’s not my machine, it must be your code”.
The term DevOps was coined to reflect the bridge to be built between teams so that new code can be deployed on production systems smoothly and without blame.
To achieve this seamless continuity, we need to have an essential process and platform in place; two essential ingredients are CI (continuous integration) and CD (continuous deployment). Tools + Automation is critical. Companies will often implement Agile principles to achieve the highest degree of success with CI and CD. IBM BlueMix and Cloudbees are SAAS based products with readymade CI and CD platforms for many different applications (primarily web and mobile). I recommend Sonatype Slideshare presentation with Architecture types to get a good overview of this topic. It is an excellent reference for a deep dive.
Although the majority of the people with whom I have interacted adopt this view of DevOps, many companies have started realizing that CI and CD implementation is only providing a partial fix to a complex problem.
Category 2 and 3 - DevOps - Infrastructure (Ops) as Code (Dev)
The IT Operations team is generally responsible for managing the infrastructure of updating the software (OS / Application ) manually. Updating this configuration as part of the change management is one essential step of the ITIL process. All changes must be documented and must also be auditable.
Virtualization and Cloud technologies have enabled team members to write the code to create and manage the infrastructure, as well as to control the changes using the updated code. Dockers, Puppet, and Chef are taking this to the next level. Effectively, all operations that are being performed by the IT team are now getting automated. Coding is abstracting the complexity of managing the infrastructure, and developers don’t have to specify the required infrastructure as a guideline. The marketing materials of Puppet and Chef reflect the awareness that current Configuration Management Automation falls under the DevOps umbrella. Clearly, the DevOps term provides an apt metaphor for the way to achieve the most stable environments.
Category 2: Internal Infrastructure Management for conducting different levels of testing either on Internal servers or in the Cloud (external).
This setup is quite complicated, especially for Product companies (not SAAS), as they need to support various product versions/variants. Along with Virtualization/Cloud, technologies like Dockers, Puppet, and/or Chef will fit well. Nowadays, professionals see many profiles in this area with DevOps.
Category 3: Managing the production servers, especially for SAAS product (application) like Amazon, Google Apps, SalesForce.
DevOps demands continuous automation, which means that scripts, not people, are initiating automated jobs, including continuously deploying software updates. Automation is also used to check the health of the system and its environment by monitoring applications, securing the applications, load balancing, and dynamically provisioning new servers as needed. Automation can even ensure automatic recovery if a problem arises. Implementation of ITIL-based solutions is also considered to fall within DevOps.
Personally, I don’t like to label "only Automation of IT Operations" as DevOps
Category 4: BizDevOps - Product Management (Biz), Engineering (Dev) and IT Operations (Ops)
This new term, though not yet a trendy buzzword compared to the others discussed, maybe my favorite. Probably only heard in the past 2+ years and quickly picking up speed, the three-pronged word covers the entire value stream starting from initial customer request to delivery. Unified cross-functional teams work together (collaboration, communication, and integration) to generate value to the customer while judiciously balancing the available resources.
According to some, this can be considered as Agile (Scrum/Kanban/Enterprise Agile frameworks) along with CI and CD mentioned above. IBM, CA, Xebialabs does promote this category as still DevOps only.
I use the analogy of physical manufacturing to understand the software lifecycle; the development process mirrors the steps implemented in a manufacturing factory while the cross-functional value chain ( from Product Management to IT Operations ) may be thought of as a manufacturing assembly line.
To achieve Enterprise Agility, the assembly line must be continuous. This assembly line is the Continuous Delivery (Development + Integration + Deployment + Testing + Service) platform, which is critical to enable continuity. Integrated Release Management or Application Lifecycle Management(ALM), along with Automation, are other terms that refer to the continuous delivery platform.
At Addteq, we provide services for all the above four categories. Plus, we are always adding and updating based on the latest industry developments. For more details, you can refer to our extensive slide deck.
Invite the community input regarding this timely debate: which category do you regard as “the real DevOps”, is your understanding of DevOps included in our category list?
As there is so much confusion around this word, the next time you say DevOps to someone, it might be helpful to specify to which aspect you are referring. And if someone is discussing DevOps, then don’t hesitate to request clarification, especially during consulting and recruitment. DevOps can’t work unless everyone is on the same page.
We encourage you to share your comments or perspectives on DevOps.