DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Last call! Secure your stack and shape the future! Help dev teams across the globe navigate their software supply chain security challenges.

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Releasing software shouldn't be stressful or risky. Learn how to leverage progressive delivery techniques to ensure safer deployments.

Avoid machine learning mistakes and boost model performance! Discover key ML patterns, anti-patterns, data strategies, and more.

Related

  • From Chaos to Collaboration: Transforming DevOps With RACI Matrices
  • The Rise of the Data Reliability Engineer
  • Conflict Management in Technology Teams: Insights From Google's Project Aristotle
  • The Rise of the Platform Engineer: How to Deal With the Increasing Complexity of Software

Trending

  • DGS GraphQL and Spring Boot
  • Scalable, Resilient Data Orchestration: The Power of Intelligent Systems
  • Apache Doris vs Elasticsearch: An In-Depth Comparative Analysis
  • Solid Testing Strategies for Salesforce Releases
  1. DZone
  2. Culture and Methodologies
  3. Career Development
  4. What I Have Understood About DevOps

What I Have Understood About DevOps

The role of DevOps is to identify such roadblocks in the software development lifecycle and try to overcome them by introducing some kind of automation.

By 
Sharad Regoti user avatar
Sharad Regoti
·
Jul. 18, 22 · Presentation
Likes (1)
Comment
Save
Tweet
Share
6.2K Views

Join the DZone community and get the full member experience.

Join For Free

 

When I first heard the term DevOps, What I understood from my peers is that,

“The process of deploying the application in any environment (dev/QA/prod) is called DevOps. It’s just another synonym for operations.”

As a novice programmer, I was like

“Okay, Cool! , It’s just another buzzword floating around in the IT industry.”

People who have some idea about DevOps know how wrong I am!

But after spending some time in the IT industry & seeing job recruitment posts with designations such as requirements of AI-Ops, ML-Ops, Data-Ops, Fin-Ops, and X-Ops engineers. I was like, wait a minute, DevOps has to be more than just deployment.

When I googled DevOps, Here are a few definitions I found on the internet

“DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity.”

“It is an intersection between development and operations.”

“You take a process that is being done manually and automate it.”

Here’s an interesting perspective of DevOps.


The term, in general is so loosely defined that it is difficult to understand, especially when you don’t have much historical context of software development that led to this revolution.

But these definitions made me think:

  • Aren’t we deploying applications for the last 20 years?
  • What really led to the need for automation in the first place?
  • What are the inherent problems that we are trying to solve with DevOps?
  • Which part of dev is not in DevOps, and which part of operations is not DevOps, Why was there a need between these?
  • Can’t we call it a day just by writing some CI/CD pipelines?
  • When can I say I have a successful DevOps practice at my organization?

Many more such questions came to my mind. So to understand DevOps, we need some historical context of how software delivery has always been carried out.

Understanding the Software Release Process and Its History

Following are the stages involved in a typical software development process.

https://raw.githubusercontent.com/sharadregoti/sharadregoti.github.io/main/images/2022-07-24-09-what-is-devops/blog.drawio.svg

Our software development process hasn’t changed much over the last 3 decades. Software teams are usually comprised of development teams (who write code) and operation teams (who deploy & maintain applications). Both these teams are responsible for software releases.

With the above team structure in mind and the way they operate, we can get some historical context.

During the old day, software releases used to be less frequent as the requirements hardly changed ever. Systems were not designed to change fast after deployment. They are intended to be there and be stable.

The only thing that had to be done post-application deployment is general maintenance. You know things like upgrading the OS and packages that the system requires.

Infrastructure was not as readily accessible as it is now. As a result of that, the operation team was responsible for static capacity planning, provisioning, and maintenance of the same. This made the development team and the operations team move at more or less the same rate.

But If you observe carefully, the way we used to do IT is very silo oriented, because you hired people who were specialists in distinct areas. There was not much coordination required between teams.

This approach worked great during that time as the frequency of deployment was low. It was rare to see more than one release per month.

Processes and practices were established, and teams adapted to this type of development approach.

But as time passed and requirements started to evolve rapidly. Problems started to appear in the software delivery process

Problems That Led to the DevOps Revolution

1) Changing Requirements

Suddenly there was a need to deploy frequently. The release cycles were reduced from months to weeks. But as the idea of changing requirements was not part of the calculus, trying to apply the legacy way of doing things to new changes didn’t always work out.

The operations team found it hard to deploy frequently while ensuring the stability of the system.

The process and practices started to fail, mainly because of the lack of coordination between the teams and tools that were being used (We will explore this in more detail later).

The operation team tried to adapt to the change by writing some scripts and changing processes to get some relief.

But as the software systems got more complex with the involvement of containerization, microservices, auto-scaling, and whatnot, it just got out of hand. A lot of roadblocks started showing up in the software delivery process.

2) Friction Between Teams

The real problem is with the people who are developing and maintaining the software.

Any organization's software team has a straightforward objective:

Deliver high-quality software faster.

And everyone in the team is working together to achieve that common objective. However, in practice, software teams don't operate as a unified entity since each team member has a different incentive to work that takes priority over the common objective.

Let’s take a look at incentives of individuals in a team

  • Development Team

    Incentive: Develop new features faster

  • QA Team

    Incentive: Ensure all test scenarios are covered (time-consuming activity)

  • Security Team

    Incentive: Ensure security best practices are adhered to (time-consuming activity)

  • Operations Team

    Incentive: Ensure stability of application running in production (time-consuming activity)

Because of these incentives

  • Development and operations have contradictory goals: This causes a great wall to form between them, introduces friction & slows down the entire release process.

    https://raw.githubusercontent.com/sharadregoti/sharadregoti.github.io/main/images/2022-07-24-09-what-is-devops/blog-Wall.svg

  • Teams are working in silos, and communication is not happening properly, which leads to problems from both the ends

    • Developers
      • Deployment guide is not well documented
      • Doesn’t consider where the app is getting deployed
    • Operations
      • Don’t know how the app works
      • If something fails, need the help of a developer to figure it out
  • Priority is given to completing their incentive, and the rest is not their problem

  • This stretches the release period from days to weeks to months

As the team incentives become greater than the common objective, this results in deadlines, production failures, bad user experience, etc. All of this ultimately impacts the business.

So to remove the roadblocks,

DevOps Was Introduced as a Solution For

“Delivering high-quality software, by making the process fast & ensuring stability.”

DevOps

The role of the DevOps team here is to identify such roadblocks in the software development lifecycle and try to overcome them by introducing some kind of automation. This could be via. tools and scripts or processes and practices that will lead to an improved development and deployment experience.

So essentially, DevOps is trying to remove the roadblocks by introducing automation and streamlining the software delivery process. That is why we have CI and CD processes at the center of DevOps.

To conclude, I would like to quote the meaning of DevOps from @Patrick Dubois (the person who coined the term DevOps)

“Doing anything and everything to overcome the friction created by silos… All the rest is plain engineering.”

DevOps Engineer Software development teams

Opinions expressed by DZone contributors are their own.

Related

  • From Chaos to Collaboration: Transforming DevOps With RACI Matrices
  • The Rise of the Data Reliability Engineer
  • Conflict Management in Technology Teams: Insights From Google's Project Aristotle
  • The Rise of the Platform Engineer: How to Deal With the Increasing Complexity of Software

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!