In our previous video tutorial on Demystifying DevOps, we learned all about DevOps in detail.
We also had a detailed look at the meaning of DevOps and various other factors pertaining to it.
Suggested Read => Intensive DevOps Training series
Now let's go through the part 2 of ‘Demystifying DevOps’.
A Quick Recap of what we covered in part 1:
What is DevOps? DevOps is a culture in the organization to focus on delivering value to the customer through a constant collaboration of Development, Operations and rest of the stakeholders.
What is not DevOps? DevOps is not a licensed or open source product, not a specification nor a standard.
What are the benefits of DevOps? DevOps brings high-quality delivery, faster delivery, frequent deployments, small deployments, fewer failure rates in production etc.,
What are the practices of DevOps? The Devops practices include Continuous integration, Test automation, continuous deployment, infrastructure as a code, configuration management, release management and application performance monitoring.
What are the habits of DevOps? The Devops habits include, management of technical debt, focus on delivering value to the customer, Live site culture, team autonomy, manage infrastructure as a flexible resource, hypothesis-driven development, metrics from the production.
What are the metrics of DevOps? Agility and reliability are the key focus metrics of DevOps.
In this part of the lecture, we will learn the following:
What are the practices of DevOps which are developed based on the agile principles, and how the objectives of DevOps are achieved?
In part 1, we kept defining DevOps as collaboration. Let us understand What is actually this collaboration, and How do DevOps practices help to develop the collaboration between Development and Operations in achieving its objectives?
In this part, we will understand the Importance of key elements of DevOps like source control and automation and delivery of small increments. Rest of the elements like Continuous integration, continuous testing, continuous delivery and application monitoring, will be explained in the upcoming part.
As informed earlier, DevOps practices are mainly based on the Agile principles and practices. Out of the 12 agile principles, the following 4 are the ones that directly apply to DevOps.
So, it is better to refresh these Agile manifestoes which apply to DevOps functions. I’m not going to go in detail of these.
Let us quickly read out them.
#1) Individuals and interactions – over processes and tools
#2) Working software – over comprehensive documentation
#3) Customer collaboration – over contract negotiation
#4) Responding to change – over following a plan
Based on these agile principles, DevOps has developed certain principles and practices, which are as follows:
- Bring Value to customer
- Deliver working software
- Support changes
- Motivate the team and give freedom to the team members
- Deliver faster and quicker
#1) Bring Value to the customer by delivering smaller, frequent and continuous deployment of the software.
#2) Deliver working software in a shorter timescale. The customer is not going to look at the great design that we make, or a fantastic architecture or a plan or strategy that we make in order to develop the software, but all that they want is a working software.
#3) Support changes to the requirements whenever the customer wants, based on the market trend. This is very important for the customer. Our software development methodology should be flexible enough to handle any changes asked by the customer and deliver them with comfort.
#4) Collaborate..collaborate…collaborate. Collaborate and work together with the business constantly to make the software right first time.
#5) Both Agile and DevOps equally give a lot of importance to the team and the people. So, DevOps principle says, motivate the team, give freedom to them, provide the support required to them whenever they are in need, develop trust in them to get the work delivered.
If the work is done by them out of volunteer interest, the quality will be good, instead of getting it done forcibly and under pressure. Also in addition to the collaboration, agile suggest face to face communication within the development team.
So, maximize face to face communication via stand up meetings, review meetings etc. This develops team spirit and helps in motivating the team and the development of a healthy competition.
What are the practices of DevOps which are developed based on the agile principles, and how the objectives of DevOps are achieved? Another key aspect of DevOps is to deliver faster and quicker. We know, during agile practice, scrum, Kanban or whatever, faster was referring to a delivery over few weeks to a month, now it has changed with DevOps to over a couple of hours. So, quicker delivery in DevOps refers to delivery over a few hours.
Organizations like Amazon, Flipkart, and Google make updates and makes their releases in a few hours. That is the speed and the quality turnout expected from those who are practicing DevOps. Hence DevOps processes, habits and practices are so strong that it enables the team to work together to achieve this.
So, we can clearly say that all of these DevOps theories and practices, revolves around the basic agile principles, I can say, an extension of them.
Here, what we need to look at and learn is that what one should do on daily basis, practice and habituate to, in order to achieve DevOps objectives.
It is not just enough that one person or a few in the team who should practice these. Each and everyone in the team, both development, and operations need to strictly adopt these practices and make it BAU, business as usual and then it becomes everyone’s habit in the team to practice it repeatedly.
Hence the success of DevOps purely depends on how seriously these practices are followed by each and everyone in the team. And no doubt success is for sure if these practices are religiously followed.
We have already learned the best practices and habits of DevOps in our part1 lecture, which enables the team to achieve the DevOps culture. So, there is no loss as many times as we repeat these practices to be followed in order to achieve the DevOps objective.
As we know, DevOps objective is to focus on bringing value to the customer through smaller deployments, faster deployments, and continuous deployments. Let us understand what do we need to do in DevOps practice to achieve this over and above the agile practices.
First one is as we already know it is the collaboration that we need to have with all the stakeholders so that every piece of information is available to the entire team and is kept in mind while developing the software.
For Example, it could be a small change in the default environment configuration that the operations team is planning to make, and that information should be passed on to all the team members so that each one in the team can take care of the impact of the change, wherever it is applicable.
Like developers take care while coding, testers ensure that the latest update is made in the end. Configuration is tested as against the older one.
So, basically, the team has to come together and work together to solve the problem, be it a design problem, architecture, testing or deployment or application performance. We will understand more about collaboration in a short while.
Technical debt needs to be minimized as much as possible.
Each and every piece of the program is very important and if neglected and not attended on time, it will lead to quality issues in the later stage.
Hence paying attention to details, excellence and focusing continuously on customers needs is very important and no compromise at any stage for anything other than this is entertained.
We know, the importance of every aspect of the software development life cycle, and its impact, if not given attention. So, focusing on the best architecture, requirements, design, testing, all of them are very important and no compromise at any stage of SDLC phases.
We have already learned about the importance of gathering metrics from live.
Hope you enjoyed this informative tutorial!!