DevOps Video Tutorials:
In our previous tutorial, we learned how DevOps will impact QA testing. Here, in this tutorial you will learn all about DevOps with a video included in it.
(Scroll down to start with the first video in this series)
Recommended Read => DevOps Training Series
These days, DevOps is the hot topic and buzzword in the IT industry.
With the rising demand for the software deliveries, the software delivering methodology is undergoing changes in order to meet the demanding customer expectations.
So, DevOps is an enhanced and latest way of delivering the software to the customers, especially for cloud-based solutions where software deliveries are expected to happen rapidly.
Many of the advanced organizations have already started embracing DevOps way of delivering software to the customers. And many more are in the direction of adopting it. Also, these days majority of the IT opportunities demand DevOps knowledge.
Hence it is very essential for everyone to Demystify ‘DevOps’.
Demystifying DevOps – Video Tutorials
Purpose of the DevOps training Video Tutorials:
- To know about DevOps to march towards its implementation.
- To understand how DevOps is bringing change in the current way of working and making deliveries.
- To create a basic understanding of the DevOps concept.
- Everything about DevOps.
- What is collaboration and how to bring collaboration between Dev and Ops?
- Key processes of DevOps, Continuous Integration, continuous testing, and continuous deployment.
- Key concepts of DevOps, release management, configuration management, and application monitoring.
- Able to Define DevOps.
- Why an Organization needs DevOps?
- How to get started with DevOps?
- How to get Development and Operations team together?
- This complete tutorial is structured into 4 parts, part1, part2, part3 and part4 and then a closure or recap part5.
- Each part is further subdivided into blocks of smaller videos with the intention that, it becomes easy for everyone to understand well.
- In each of these videos, there is a recap on what has been covered in the previous video and what is going to be covered in the next video.
- The video is very simple, with simple language and powerpoint slides with some useful drawings to explain wherever required.
- Every video is independent by itself to understand its concept and need not have to refer any other videos. But it makes sense to go in the order from part1 to part4 for a better understanding of the topic.
Part 1: (This Tutorial)
Introduction to DevOps. Its background, definition, value, benefits, habits and best practices of DevOps.
DevOps practices based on the Agile Principles, the importance of key processes like source control and Automation and how it is applied to DevOps.
Details about the key processes of DevOps like,
- Continuous Integration,
- Continuous testing and
- Continuous deployment.
Importance of few more key processes of DevOps,
- Configuration Management,
- Release management and
- Application performance monitoring in Live.
Recap of the entire course.
Let's start with the first video tutorial in this series:
In this first part of the video of this tutorial, you will learn,
- What is the background of DevOps and the drivers for introducing this new way of delivering the software?
- What is DevOps, why there is no single definition to define DevOps? Is it a method, process, culture?
- While we understood what DevOps is, it is essential to know What DevOps is not.
- The benefits of implementing DevOps in an organization.
- And the various practices and habits of DevOps practice.
- The key metrics of the DevOps.
VIDEO Part 1: Introduction – 21 minutes 46 seconds
Well, today, I’ll be talking about the topic ‘Demystifying DevOps’, which is a very hot topic in the IT industry these days.
We keep hearing this buzzword very often at all places. Also, these days the majority of the IT job opportunities seeks ‘DevOps’ knowledge and experience and hence it is very important to know about it.
Come on!! Let us understand what this DevOps is all about.
This series, ‘Demystifying DevOps’ is spread across 4 parts, and this, in turn, would make the audience little comfortable in understanding each part of the DevOps slowly and steadily.
By the end of this series, I’m sure that you will be able to define what is DevOps? why do we need DevOps? what are its benefits? how can an organization embrace DevOps for their engagements? and what is the tester's role in entire DevOps Practice?
While the agile practice was accelerating the Development process rapidly and the software team started delivering it to Operations in the specified timeline, still IT industry faced challenges in getting the software production ready and opening it to the customers.
Operations really took a lot of time in getting it productized with a lot of back and forth between the software team and the operations team with the difficulty in installing the software, operationalizing it and managing the performance.
Industry slowly understood the disconnection between the Development and Operations and the gap in the collaboration amongst the stakeholders, especially the operations, developers, business analysts and the testers in getting the software turnaround time and delivering the quality software, which really turned out to be costly.
And slowly this gap led to the introduction of the practice called ‘DevOps’ which got developed over and above the agile practice and principles which aimed at delivering the quality software. Or in other words ‘delivering value to the customers’ in a short time gap in a more efficient way and delivering what actually the customers wanted.
What is DevOps?
Now, after understanding the background of the introduction of DevOps, it becomes easy for us to define what is DevOps. When it comes to the definition of DevOps, there is no standard definition for it. But, I bet many will give their own version of definitions.
As we understood the purpose and intention of introducing DevOps, we can clearly say, that DevOps is a practice of clear collaboration amongst the stakeholders of the software development, not just the developers, and operations but with the rest of the team, in order to enable the delivery of value to the customer faster and better.
Here, when I say the rest of the team, it includes project managers, business analysts, people gathering the requirements, those who maintain the application, customer service people etc.,
Devops mainly bridges the gaps which were existing earlier due to lack of communication & collaboration and which in turn was resulting in poor quality of the software, a lot of delay in deployments and dissatisfied customers as well.
Well, DevOps is not just the collaboration but also the combination of a right set of people, right set of processes and right set of tools to enable continuous delivery of ‘value to customers’. Here I keep pressing the word ‘Value to customers’ because the sole and ultimate aim of DevOps is to make the software production ready in order to deliver value to customers.
This is a big difference and the key aspect of DevOps.
Finally, Devops is a culture which enables the people to focus on,
- Delivery to production,
- Feedback and measurement
What is not DevOps?
After understanding, what is DevOps, it is also better to understand what is not DevOps, in order to avoid confusions.
DevOps is not an open source or licensed tool, which will be available on the market, so that one can go, buy, install, and use it and you have all the results available. Neither it is any standard specification or rulebook so that one can follow and get the desired result.
It is also not any set of processes like ISO, CMMI so that one can adapt and get the certification.
In addition to the missing collaboration between the Development and Operations, with the changing market needs, there were lot more pain points in the traditional software development method and even in the agile methodology, which was required to be addressed, and that became the key drivers of the DevOps practice.
Well, the need for constantly improving the quality and performance of the application was the utmost important one. Rising customer expectations, demands and meeting the expected Customer Experience was a real challenge in the traditional s/w development method.
The ever-rising pressure and competition in the market to release quicker and faster was another key driver.
With the current range of support of multiple operating systems and platforms, it is not just enough to develop the software to work on a single platform or OS and hence software development process was required to support multiple platforms simultaneously.
More and more software getting on to the cloud-based solutions demanded continuous testing, continuous deployment, and automation, in order to reduce the cycle time.
Increase in complex and mission-critical programs, solutions, and varying complex IT infrastructures for the deployment and the support required across geographies to maintain them through a big challenge to the software development.
Value of DevOps
After understanding the key drivers of DevOps it becomes easy to understand the value of DevOps that it brings to the organization that practices it.
DevOps mainly bridges the gap amongst the stakeholders and hence improves the communication and collaboration throughout the application development lifecycle. DevOps improves the lead time and reduces the software delivery timelines. Lead time is the time elapsed from the code commit to code delivered to the production successfully.
So overall, DevOps inhibits a culture that changes the entire organization and leads their employees to focus towards delivering software that provides value to the customers.
In other words, to deliver smaller, better and faster is the total secret of DevOps.
Benefits of DevOps
Having addressed the need of the hour from the market demand, DevOps practice proved itself with the increased customer satisfaction, thereby resulting in increased customer base.
Whatever were the key drivers for the practice of the DevOps, they were resulted in success, like improved quality and performance through a continuous testing and feedback process.
Introduction of ‘automate everything’ principle along with delivering infrastructure and configuration as a code resulted in minimizing human errors, delivering faster to the market and making more frequent releases.
Version controlling enabled the software to support on multiple platforms and early and continuous testing resulted in lesser defects and lesser failure rates in the production.
Because of the continuous deployment, it took a quicker time around to fix the issues and release it faster. So obviously, one can go on adding the benefits to the list.
Practices of DevOps
The Key Ingredients of DevOps are the best practices that are implemented across the application development lifecycle, and this helps to inculcate the required culture in the team and drives the team to achieve the benefits of the DevOps implementation.
#1) Configuration Management: Knowing clearly, what we are deploying, how we are deploying and what configuration is going to go to production is the key to configuration management which is totally version controlled.
#2) Release Management: Carving out clearly, how are we building a release pipeline and managing them is the key aspect of the Release management.
#3) Continuous Integration: It ensures that every code commit is version controlled, tested and compiled and the code base is maintained neat and clean all the time.
#4) Continuous Deployment: It targets the deployment of the compiled code continuously all the way from testing to the production environment.
Test Automation is the important and critical practice of DevOps which applies throughout the life cycle. Then delivering ‘Infrastructure as a code’ is one of the key highlights of the DevOps Practice.
So, later once the code is deployed to the production, it is essential to ensure that the software is running successfully, by gathering the performance data, any errors occurred in the system and also the end user usage data through the application monitoring tools and methodologies.
So, these are the must and utmost important practices applied and adopted by the team throughout the application development cycle which ensures them to achieve the DevOps goal.
Habits of DevOps
As Aristotle says, ‘We are. What we repeatedly do… Excellence, therefore, is not an act but a habit.
So, I call these as ‘habits’ because we practice them repeatedly.
Hence, these regular habits have to be developed in the team without any compromise while intending to deliver the quality software repeatedly.
#1) Management of Technical Debt:
Managing technical debt on a regular basis is one of the key aspects, if not done, it slows down the progress of software drastically. And hence technical debt needs to be always reduced and the code base should be kept as much clean as possible. The clean code base facilitates the code to be deployed ready any time.
As I repeatedly mentioned, focusing on value to a customer is the mindset of the team and that is the key culture aspect of DevOps, which constantly makes the team do anything and everything underlined towards bringing value to the customer.
With this mindset, individuals thinking that their work is done and throwing on to others for further will be stopped. And everyone starts thinking that ultimate aim is to deliver to production and take credit only when the customer provides the feedback or appreciation after using the software in the production.
Hence, focus on Value to customers motivates and enriches the team to do better and better each time.
#2) Hypothesis-Driven Development:
In addition to understanding the requirements thoroughly, understanding what actually the customer does in live and what is the usage pattern of a particular feature and developing the code accordingly is ‘Hypothesis-driven development’.
So, engaging with the customers actively right from the beginning in understanding how they are using the software and ensuring that right things are developed in the first instance itself is very important and again it is a DevOps habit.
#3) Measurement from the Deployment:
Constantly measuring the performance of the delivery and seeking the feedback from the deployment is another important habit which helps the team in working towards improving the software and bringing value to the customers.
#4) Live site culture:
Live site culture is to imbibe into everyone’s mindset, that whatever we are developing, we need to get it into production without any hassles.
It is the culture to make everyone in the team to understand that ‘If it is not in Live Site, it is nowhere’ and there is no point or any benefit if we cannot make it to Live and hence we will not be able to reach out to our end users if it is not in Live.
#5) Infrastructure as a Flexible Resource:
Managing infrastructure as a flexible resource is a very important aspect of DevOps because, at any time, we should be able to get rid of existing infrastructure and spin a new one, that’s because we have defined our infrastructure as a code with very much ease.
This aspect of DevOps helps us to make our software multiplatform supportive and multi-version supportive.
#6) Team Collaboration:
By now we all clearly know that it is not just the tools or the processes alone that drive the software development. It’s the team which needs to collaborate amongst themselves and gets aligned to the business goal.
So, team collaboration is the key aspect of DevOps culture which bridges any gap in understanding amongst themselves and the program.
Hence these attitudes, behaviors, and habits are the key foundational aspects of the DevOps culture.
Gone are the days where we used to gather traditional Development and testing related metrics alone which focused only towards in-house software development and testing. As the focus of the delivery changed, the metrics that are gathered also got aligned towards finding value to the customer.
Though the metrics to be gathered slightly varies from organization to organization depending on the customer's priority, measurement of agility and reliability of the software is the key focus of DevOps.
And these metrics would be apt to measure from the perspective of ‘value to the customer’s and they define how the team is doing w.r.t. DevOps implementation.
Basically, Agility metrics is to measure the development effectiveness and the Reliability is to measure the Operations effectiveness.
#1) Agility Metrics:
And No. of deployments over a period of time.
(i) We know DevOps is all about delivery of smaller chunks and to deliver fast.
So, this agility metrics is to check, How often the team has been able to do the deployments and what is the frequency of the deployments.
Next one is the ‘Time taken to deploy changes’:
(ii) We also know how often customer views change resulting in a change requests and DevOps intention is to turn around these changes to the production at the minimum time.
Hence, the next aspect of agility metrics is to check, What is the time taken to deploy the change requests to the production?
#2) Reliability Metrics:
Reliability metrics is to measure the reliability of the software after the deployment.
Reliability metrics include,
- The failure rate of the releases and
- Time to detect the issues and fix them.
#1) Failure rate of the releases is to measure, How often do we fail with respect to our deployments? Here, the objective is to ensure that, over a period of time this particular metric zeros down and the team just get used to deploying successfully each time and going to production more often becomes a habit.
#2) Now, the Time to detect and fix issues is to measure the time taken to detect the failure and fix it up. This metric is also to check, How fast are we able to understand whats happening in the production, proactively detect the issues, remediate it by providing the workaround and route it to the development cycle as a fix.
This metric not just focuses on turning around the quick fix to the production but also enables the team to prevent such issues occurring in the future by making the appropriate alterations be it in the design, architecture, automated testing pipeline, whatever.
So, ideally, these are the metrics that help the team to achieve the DevOps culture and delivery.
Let's do a quick recap:
- What is DevOps?
- What is DevOps not?
- What are the benefits of DevOps?
- What are the DevOps practices and habits?
- And what are the key metrics of the DevOps?
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, neither a specification nor a standard.
What is the benefit 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 are 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 are the management of technical debt, focus on delivering value to the customer, Live site culture, team collaboration, managing infrastructure as a flexible resource, hypothesis-driven development, and metrics from the production.
What are the metrics of DevOps? Agility and reliability are the key focus metrics of DevOps.
About the Author for video tutorials on DevOps:
STH team member Gayathri Subrahmanyam is a Software Testing expert with more than one and a half decades of experience in delivering software testing projects for various global clients across various domains. She has delivered software, working extensively on traditional and agile software development methodologies (SCRUM, SAFE) and latest worked on in DevOps methodology..
In our next video tutorial, we will learn DevOps practices based on the Agile Principles.