DEV Community

Sameer Kumar
Sameer Kumar

Posted on

Day 1 - Fundamentals Of DevOps

Understanding DevOps: A Single Definition Among Many

There are countless definitions for DevOps depending on where you look. For instance, if you check Amazon or Red Hat, they each have their unique take on it. However, in simple terms, DevOps is a culture that enhances an organization’s ability to deliver applications efficiently. The key focus here is on delivery—how quickly and reliably new features, fixes, or updates reach the end-users.

DevOps in Action: The PUBG Example

To illustrate the importance of quick delivery, let’s consider a popular game like PUBG. Imagine there’s an issue with the game, or the developers want to introduce a new feature. If the development work is completed but it takes 10 days to deliver the new version due to multiple stages like unit testing, staging, and final production, that’s not ideal.

In today’s world, where time is critical, such a delay is unacceptable. For instance, if your Android device has a security vulnerability, Android would release a patch immediately, urging all users to update their devices. This rapid delivery is what DevOps aims to achieve—ensuring that updates, bug fixes, and features are deployed within hours, not days or weeks.

More Than Just Delivery: The Pillars of DevOps

While delivering quickly is crucial, DevOps is not just about speed. Several key components are necessary to ensure effective delivery:

1. Automation

Just like in a factory, automation plays a vital role in DevOps. If you think of a company manufacturing chips, automating the process reduces manual labor, speeding up production. Similarly, in software development, automation ensures that tasks are completed efficiently without manual intervention.

2. Quality

Automation alone isn’t enough. End users expect quality. If chips are being manufactured quickly but are of poor quality, customers will not be happy. In the same way, DevOps ensures that quality is maintained even while speeding up the delivery process.

3. Monitoring

Once automation and quality are in place, the next crucial aspect is monitoring. Monitoring helps track the system's performance and quality in real-time. It ensures that if anything goes wrong—be it with automation or quality—you are alerted immediately, allowing for quick fixes. This is also known as observability, which goes hand-in-hand with monitoring.

4. Testing

Without proper testing, neither quality nor automation can be guaranteed. Continuous testing is an essential part of DevOps. It ensures that all updates are rigorously tested before reaching users, reducing the chances of bugs or issues in production.

The New Definition of DevOps

To summarize, DevOps is the process of continuously delivering applications quickly by ensuring proper automation, maintaining quality, implementing continuous monitoring, and conducting rigorous testing. These pillars help organizations achieve fast and reliable software delivery, ensuring that users get the best possible experience.

The Role of a DevOps Engineer

As a DevOps Engineer, your goal is to streamline the application delivery process. For example, if you're hired by example.com and their current delivery timeline is two weeks, your job would be to reduce that to one week while ensuring automation, quality, monitoring, and testing are all in place. The ultimate aim is to minimize manual processes and accelerate delivery, improving overall efficiency.

Why DevOps Engineer needed?

Long long ago, Before DevOps...

Here is a step-by-step summary based on the provided image:

  1. Multiple Developers (#1):

    Multiple developers work on the code and store it at a central location.

  2. System Administrator Creates Testing Server (#2):

    A system administrator sets up a server where the application will be tested.

  3. Tester Tests the Application (#3):

    The tester performs tests on the application running on the server to ensure functionality.

  4. Application After Testing (#4):

    Once testing is complete, the application is ready for further processing.

  5. Build and Release Engineer (BRE) (#5):

    The Build and Release Engineer promotes the tested application to the next stage.

  6. Promotion to Staging or Pre-Production (#6):

    The application is promoted to the staging or pre-production environment for further testing.

  7. Testing in Staging or Pre-Production (#7):

    The same application undergoes testing again in the staging or pre-production environment.

  8. Moving to Production (#8):

    Once the application passes all tests, it is moved to the production environment.

  9. End Users (#9):

    Finally, the application is delivered to the end users, who can now access it on their devices.

Each step involves collaboration between developers, system administrators, testers, and build and release engineers, ensuring a smooth delivery process from development to production.

The Challenges of Application Delivery Before DevOps

Before DevOps, the process of delivering applications was much more manual and time-consuming than it is today. Here's how it worked and why the need for DevOps emerged.

1. Multiple Roles Involved

To deliver an application from a developer’s laptop to the production server, several roles were required:

  • System Administrator: Responsible for setting up and managing servers for testing and production.
  • Build and Release Engineer: Managed the process of building the application and deploying it to the server.
  • Server Administrator: Ensured the production servers were running smoothly and that the application was deployed correctly.

2. Manual Process and Collaboration

The process was manual and heavily dependent on collaboration between these different teams. For example, a system administrator would set up the server, while the build and release engineer handled the deployment. Each step required communication and coordination, often leading to delays.

3. Time-Consuming Workflow

Due to the manual nature of the process and the need for different teams to work together, the delivery of an application could take a significant amount of time. It wasn’t unusual for this process to take:

  • 10 days,
  • One month,
  • Or in the best cases, around five days.

The variability in time depended on the complexity of the application and the efficiency of communication between teams.

4. Why DevOps Emerged

The concept of DevOps was introduced to address these inefficiencies. The main reasons for the shift towards DevOps include:

  • Manual Effort Slows Down Processes: Manual interventions made the entire delivery process slow and prone to errors.
  • Collaboration Overhead: Involving multiple teams in every step increased the risk of miscommunication and further delayed the process.
  • Need for Automation: Automating these steps became essential to reduce time, effort, and human errors in the delivery process.

5. The Solution: DevOps

DevOps emerged as a new concept to improve the speed, reliability, and effectiveness of delivering applications. By integrating development and operations teams and emphasizing automation, DevOps transformed the way applications were built, tested, and deployed. It reduced the time needed to deliver applications and made the process much more streamlined.

In summary, the manual, time-consuming processes before DevOps, which involved multiple teams like system administrators, build and release engineers, and server administrators, led to inefficiencies. DevOps evolved to automate and optimize these workflows, allowing for faster, more reliable application delivery.

Top comments (0)