“It was a brave old world.” — Mark A. Rayner
DevOps is a philosophy, a culture, a new way of working, a digital transformation, a methodology, a strong collaborative end-to-end environment and so much more. DevOps is currently transforming the way digital (and not only) works, paving the way to even more innovation.
In the pre-DevOps era, there were usually two separate IT teams in any organization:
- the development team which focused on the development of the software, and
- the operations team which actually checked the performance of that software, maintained it and if (God forbid!) bugs were encountered, reported them back to developers.
Now, why would this type of working create problems?
Imagine your friend does a complete research on your taste of pets (you wanted a pet for so long!) and decides to gift you a dog of your favorite breed. As adorable as the dog might be, you soon realize you actually have a problem — you must create extra space for the dog in your apartment, buy pet food, have regular appointments with a vet and make sure your family members aren’t against having a pet (assuming you don’t live alone). You might actually have to return the pet back or give it up for adoption by someone else, if the problems are too great.
This analogy can be extrapolated to an organization — for instance, the development team creates some very useful and fancy app using an i7 processor but the operations team cannot test the app because it’s incompatible with their old i5 processor. This can result in “bugs” (as perceived by the Ops team) and a lot of conversations to discover what’s wrong. Your friend (the developer) did not check what type of processor you had (~whether you had space and food for the pet) before releasing it to you.
Enter the DevOps era — the old world was brave enough to change and become a better place for everyone. The DevOps model ensures that Ops & Dev collaborate tightly over the entire software development cycle, from design to development to production to maintenance. The way this happens can differ a bit between organizations, but typically the model has the following stages:
Using modern project management tools (e.g. Azure Boards) and agile methods, work is organized in a way that lets everyone know what stage the project is at, what concerns there are across the team, who’s doing what and what’s needed to complete the product successfully. Productivity & motivation are greatly increased.
Evaluate what resources are needed for product development — e.g. should we use shared private clouds? Should we use infrastructure as code to manage the needed resources?
Build the code. Fail a lot to learn faster. Continuously improve the product based on feedback from stakeholders. Maintain a robust version control system and have a clean & stable
master branch with the best most-recent updates. Have a branch policy to protect the most important work.
- Testing & Integration
Test the code for any minor change/addition to it. Here come the concepts of Continuous Integration (CI) & Continuous Delivery (CD). CI is merging code changes frequently to the main branch (usually upon passing some pre-defined tests and pull request reviews). CD is about frequently deploying new versions of the product to the production environment.
Make sure the environment is supportive of the changes made. Manage the configurations effectively. Continuous Delivery (CD) plays a big role here, as well.
Continuously monitor for bugs and unwanted behavior of the product. If they need a fix, assign associated tasks to the team.
The benefits of all these are better productivity and motivation, improved customer/user satisfaction, fast deployment of the product, tight collaboration between all stakeholders as there’s no step-like process anymore (it has been replaced by a tight knot as in the picture above).
And of course, an effective and efficient DevOps process has to have effective & efficient tools, like these:
and so on.
DevOps Architecture Tutorial: Introduction, Components & Benefits | upGrad blog
When software development was first introduced, the traditional IT or software team was divided into two separate…