Many large firms run into trouble when trying to standardise their development and operational-support processes. They follow ‘DevOps’ guidelines, usually invoking some tepid form of ‘Agile’. When the magic elixir of perfection remains elusive for 2 months, the project management team declares failure and resorts to Waterfall, guaranteeing pain and agony for the company over a protracted period of time, until some brave soul in the future attempts to resurrect the ‘failed’ idea of Agility and DevOps. Thus, the cycle of immaturity creates its own life-force.
DevOps is not a product, a brand, or even a certified method. There is no magic involved.
DevOps is a philosophy of how to create code and build software applications. It is thus elastic, mutable and prone to misuse and misunderstanding. Quite often, DevOps is simply not understood that well by firms who are supposedly engaged in DevOps, and neither is it managed properly. Not understanding something is unlikely to lead to success.
So, what is DevOps?
At its core as a philosophy, DevOps is trying to achieve the following:
These 7 points are the essential aspects of the DevOps philosophy.
The goal of DevOps is to remove the inefficiencies that exist throughout the development, deployment, and operations pipeline, while promoting higher quality of operational code. Some of the traditional ways of developing, deploying, and operating don't hold up to the constant change that modern software systems undergo.
If we accept these main tenets, then a major aspect of the DevOps philosophy is culture and related to culture, an organisation built to provide iterative-Agile premised development. For many firms these 2 issues are problematic, involving ‘organisational-change-management’ or OCM. It is likely that without OCM and a good appreciation of Agile processes (there are 5 core processes within an Agile environment including engineering, organisation, cultural, tooling and operational support), DevOps will fail.
On the upside DevOps provides a better way to look at the development, deployment, and operations pipeline, through promoting a culture of collaboration. A collaborative culture is empowered through the automation of the key aspects of building software. Along with this automation, we also employ metrics to measure quality, successful deployments and to learn from failure.
DevOps has 3 main areas which form both the collaborative team, and the use of automation.
|
Continuous Integration or CI |
Jenkins |
|
Continuous Delivery or CD |
Jenkins for eg |
|
Infrastructure as Code or IAC |
Chef, Terraform, Ansible |
A simple example of Continuous Integration or CI:
Imagine I am deploying an application written in Python used by the sales team.
Continuous Delivery or CD:
CD means that we can ‘push a button’ and deploy code that has passed through the CI process. My Python code has passed, and all bugs are now fixed in a continuous cycle as given above. Now I want to deliver my code into the central repository for deployment.
Once the software is delivered, it will be operationalized and used within the infrastructure by a tool such as Chef. Chef is a best of breed code repository which contains all the source code, which entails versioning and close control. This allows collaboration and rollbacks to be maintained easier and more quickly. Chef is essentially the configuration automation, deploying the application stack to the targeted server estate.
Operational Runbooks
A main failure of DevOps is the lack of appreciation of the complexity of Operational Management, who will operate and manage the systems including networking, security, patching, application logic issues, first- and second-line support (developers will only do support for a limited time in reality), and the related costs involved (Ops will be 5x more expensive than Dev).
Culture and Tooling
DevOps is the combination of a cultural change with automation. It is a compressed lifecycle of development which attempts to professionalize and enhance software development quality. This is what makes DevOps hard. It is as much a philosophy of being a professional, as it is a concrete path to enlightened engineering. The benefits of DevOps are many, but the failure rate with DevOps is quite high.
The main reasons why DevOps will fail are the following:
==END