A majority of IT professionals in the software industry have misconceived ideas about DevOps.
DevOps is considered as something that can be ‘implemented’ by following ‘some practices’ by any team.
Some think of a DevOps engineer as a designation in the organization. Others feel that it is an invasion of the development team on the operations team. Another school of thought is that DevOps is an automation of activities carried out by the operations team.
Are you keeping up with new developer technologies? Advance your IT career with our Free Developer magazines covering Agile Development, Patterns, C#, .NET Core, MVC, Azure, Angular, React, and more. Subscribe to the DotNetCurry (DNC) Magazine for FREE and download all previous, current and upcoming editions.
And there are many more notions similar to these. Alas, none of them grasp the essence of DevOps!
In this article, I will try to provide some clarity about the concept of DevOps.
Also Read: Microsoft's DevOps Story
What is DevOps?
To understand the concept of DevOps, we first need to have a clarity about Agile development.
Editorial Note: If you are new to Agile Development, make sure you read these tuts to understand its benefits.
Agile development seeks to provide early and rapid (frequent) delivery of software that is under making.
This has two benefits.
The Customer can start using at least a part of the software, in a short time. This provides a sense of satisfaction to the customer that there is some return on the investment (ROI).
It also provides an opportunity, for the customer and the team that is developing the software, to review the features of the software that are ready for use. These frequent reviews and related feedbacks make it possible to take corrective actions, incorporate changes in requirements and fix observed bugs, at the earliest and at the minimum cost.
By using agile development, most of the products and projects that develop custom software, stand a bigger chance to succeed.
Agile development is not a concept that can be implemented by any team. The team needs to become agile to do Agile development. Just like a fighter aircraft which is designed to be agile versus a passenger aircraft not designed to be agile; the team that is doing Agile development, needs to be designed to be agile.
The benefits of Agile development are accrued to the customer only when the software is developed, tested thoroughly and then deployed to production.
One of the issues faced by some of the agile teams is that the development process is made quite agile, but the process of build and deployment to environments for testing and production, are not designed to be agile.
The team that is developing software needs to embrace Agile practices for these operations as well.
Some of the impediments to Agile Development are:
- There is a team that is doing development. Let us call it the ‘Development Team’. The team that is doing build and deployment is a different team. Let us call it the ‘Operations Team’. The two teams may not be located at the same place. They may be insulated from each other.
- Development Team and Operations Team communicate only in a formal and indirect channel. Formal emails and approvals may be necessary to run a build or do deployment in certain environments.
- These teams are not in sync with each other regarding their goals, schedules and planned activities. The Operations team may have their schedule of build and deployment, which may not be in line with the Agile development practices. This can increase the time for delivery.
- The build and deployment activities may not be sufficiently automated to give the fastest results possible. Manual processes are slow to implement and are also error prone.
- Testing team may have their own schedule for cycles of testing. Those may not be in sync with the development and release cycles.
- Tools used by Development team, testing team and operations team may not integrate very well.
- Development team desires to use the latest technology and do the development in the shortest possible time. Testing team considers that maintaining quality is only their job and may not consider the rapid delivery to be of prime importance. Operations team always resists any changes because, sometimes, those may lead to crashes and service stoppages. These mindsets pull the teams in different directions.
Do these inhibitions sound familiar to you?
This list may not be comprehensive, but is thought provoking to the extent that you start wondering why the benefits of Agile development should not be passed on to the customer and the end user, as early and rapidly, as the development phase.
That is why we extend the agile team to become a DevOps team.
The DevOps team is a team that has representation from developers, testers and operations.
This team has a common goal - to provide early, rapid and high-quality product to the customer. Their mindset is aligned, they do not consider team members with external roles and use well integrated tools to achieve the common goal.
Let us have a look at each of these factors.
Image 1 – Four pillars of DevOps
DevOps - Mindset Changes
DevOps team is an integrated team comprising of members of Development, Testing and Operations. All the team members have same schedule and work in-sync to provide earliest and rapid delivery to the customers.
Most importantly, all the team members have the same mindset.
The success criteria for the team consists of early and most frequent delivery of usable software by the customer.
This criterion makes productivity, quality and rapid delivery as the goals for every team member. To adopt the mindset of DevOps, the team members have to break their earlier mindsets.
For eg: Development team members have to now also consider quality and operations as responsibilities owned by them. Testers should now work in line with the schedules of development and release promises.
Similarly, team members who were part of the Operations team have to now find different innovative ways to provide delivery of the software as rapidly as the software gets developed, without losing the reliability of the deployed software.
The biggest impediment to forming a DevOps team is the resistance to change the original mindsets of each role and create a new aligned mindset for the entire team. It is a misconception that every team member in the team has to be skilled in development, testing and operations. What is desired is that the team should have sufficient team members from all these streams and that they have common mindset, so that as a team, they can provide the most rapid increments of the product to the customer.
C# and .NET have been around for a very long time, but their constant growth means there’s always more to learn.
We at DotNetCurry are very excited to announce The Absolutely Awesome Book on C# and .NET. This is a 500 pages concise technical eBook available in PDF, ePub (iPad), and Mobi (Kindle).
Organized around concepts, this Book aims to provide a concise, yet solid foundation in C# and .NET, covering C# 6.0, C# 7.0 and .NET Core, with chapters on the latest .NET Core 3.0, .NET Standard and C# 8.0 (final release) too. Use these concepts to deepen your existing knowledge of C# and .NET, to have a solid grasp of the latest in C# and .NET OR to crack your next .NET Interview.
Click here to Explore the Table of Contents or Download Sample Chapters!