Is DevOps CI / CD? Has DevOps come to replace Agile? What is this DevOps Culture?
This is the first article in a series where we will study the fundamentals of DevOps, and how it all starts from the beginning, here we will show you what DevOps is, how it came about, what its disciplines, its relationship with Agility, and what a company needs to do. have the DevOps culture.
DevOps is a combination of practices, processes and tools to deliver and sustain software with more integrity and efficiency throughout its lifecycle. The term “DevOps” comes from the junction of the terms Development and Operations, which is one of the pillars in DevOps: bringing these areas closer, both culturally and through technologies and tools that cross or reduce these boundaries.
The earliest evidence is associated with the DevOpsDays event, established in 2009 in Belgium and held today in several countries. Topics about software development, infrastructure operations, and the intersection between areas are discussed.
It has since been agreed that in order to achieve the goal of delivering better and faster software, the software disciplines that underlie development and operations (infrastructure, maintenance and monitoring, for example) need to be efficient.
DevOps disciplines are the key areas an organization can focus on to deliver and sustain a solution with greater agility and efficiency. These include Agile / Lean Planning, Code Versioning, Continuous Integration, Continuous Delivery, Containers, Infrastructure as Code, Hybrid or Public Cloud Utilization, Monitoring, and Microservices.
Each of the disciplines implies transformations of processes, tools or culture at some level. Some involve a deeper cultural paradigm break, such as Agile Planning for companies with very bureaucratic processes, or using Public or Hybrid Clouds for companies that work with highly sensitive data and have more confidence in On Premises environments. . Others require a minor cultural transformation, such as Infrastructure as Code, which can be used on Premises as well.
Some disciplines are more subjective and can have long-term effect, others are more practical and deliver a concrete and easily measurable outcome - implementing continuous integration and delivery (CI / CD), for example, can reduce hours-long deploys when running manually within minutes.
Has DevOps come to replace Agile?
Agile Planning, or Lean Practices, involves a set of processes and mindset changes to shorten the delivery cycle and enable validated learning. Kanban, Scrum, CMMI or other working frameworks can be used to achieve this goal.
One of the twelve principles of the responsive manifesto is "Delivering software often, from a few weeks to a few months, preferably in the shortest possible time." To achieve this, code versioning, integration and continuous delivery practices can be applied as well.
As you can see, the purpose of DevOps is very similar to Agile Planning. The main difference is in the approach - while Agile Planning tends to highlight principles and ways of thinking, prioritization techniques, transparency and work organization, in DevOps there are usually more technical engineering practices.
To be clear, Agile Planning is one of the disciplines that DevOps addresses. Without short delivery cycles, even if software is delivered within 1 minute of approval, it will not deliver as much value if it took 1 year to be approved since it was started. Short delivery cycles, flexible scope, user proximity, and strategy adjustments are critical for a product or solution to meet user needs and solve the proposed problem in the shortest possible time.
But insisting on specific techniques of agile frameworks when there is very strong resistance in the team or company can have the opposite effect, causing attrition between people, impacting deadlines and decreasing the quality of deliveries.
Regardless of whether or not you use an Agile framework, activity planning, distribution, and tracking should be done. Whether with a sturdy tool or a kanban on a blackboard, with a week or a month delivery cycle, you need
- Organize and distribute tasks;
- Ensure visibility of project progress;
- Bring indicators to enable validated learning.
The DevOps Culture
It can be said that the company has the DevOps Culture when the importance of integrity, efficiency and safety in the processes is present in the day to day of the teams, and not only in the software development and support. This is often reflected in process automation, proper use of tools and mindset agile.
For example, consider that an infrastructure analyst person needs to assign a user's permissions to a particular server. This activity, like many similar ones, tends to repeat itself. To gain more efficiency and decrease the possibility of human failure, one can
- Develop a script (bash, for example) to perform this procedure;
- Generalize and parameterize the script so that it can be executed for any user and any server.
- Version the script (in git, for example) and allow the team to always have access to and collaborate with the latest version
- Develop automation so that this script is sent to the server or environment where it should be run
- Allow remote execution of this script. Thus, a person authorized to do so does not need direct access to the server.
To complement some of the topics mentioned here, I recommend the content below:
Developers Should Abandon Agile
Jeff Ries talks about how insisting on agile framework-specific techniques when there is very strong resistance in the team or company can have the opposite effect, causing attrition between people, impacting deadlines and decreasing the quality of deliveries.
Lambda3 Podcast 88 - Did DevOps Kill Agility?
In this podcast, Giovanni Bassi, Vinícius Quaiato, Emmanuel Brandão and Victor Hugo debate about the idea of DevOps having “done away with Agility”, also making references to other podcasts and content.
In the video below I bring similar content, and talk a little about career and marketing.