DevOps An Overview as an Absolute Beginner

DevOps An Overview as an Absolute Beginner

What is DevOps?

It is a culture that improves the quality of the delivery.

An organization's success in delivering quality software largely hinges on its ability to efficiently manage the delivery process. Be it renowned platforms like Amazon.com or Flipkart.in the pivotal point in any software release is the delivery phase.

Imagine a scenario where an organization, such as Example.com, is poised to transition from Version 1 (V1) of its application to Version 2 (V2). At this juncture, with all aspects of the software ready except for the delivery, it becomes abundantly clear that the efficiency of the delivery process is paramount.

In the case of Example.com, if the delivery phase alone consumes a substantial 10 days, it raises concerns. Everything related to the software, barring the delivery phase, is completed and optimized. Yet, if the application must be held back for 10 days solely for the purpose of delivery—be it to the unit staging environment or, ultimately, the production environment—such a practice is far from ideal.

Benefits of DevOps, illustration.

Ideally, in software development, when security vulnerabilities or critical bugs surface, swift action is taken. Consider a situation where you're using your Android mobile device, and suddenly, a significant software bug emerges, potentially providing hackers with unauthorized access to your device. In response, Android would promptly release a new version of its software. Users are then urged to upgrade to this latest version, or if auto-upgrade is enabled, the system takes care of the update automatically.

In summary, efficient and timely software delivery is not just a matter of convenience; it is a vital aspect of software management. Whether it's a prominent e-commerce giant or a smaller enterprise, recognizing the importance of efficient delivery is key to providing users with safe and up-to-date software experiences.

DevOps is the process of improving the application delivery by ensuring proper automation, an application and continuous monitoring and testing.

Why DevOps?

Ten years ago, the process of taking an application from a developer's machine to the end customer's machine was often a labor-intensive and resource-heavy endeavor. During that era, several manual steps and specialized roles were involved in deploying and maintaining the software infrastructure. Let's take a closer look at why DevOps emerged as a transformative solution to address these challenges:

  1. Resource Intensiveness: Traditional software deployment required significant physical resources. Sysadmins had to create servers, while Builder Release Engineers (BRE) handled the deployment process. This resource-intensive approach could be costly in terms of hardware and personnel.

  2. Manual Processes: The deployment process was largely manual, involving many human interventions at various stages. These manual steps not only made the process slow but also introduced the potential for human errors, leading to system downtime or security vulnerabilities.

  3. Silos and Handoffs: In the old model, different teams, such as development, operations, and release engineering, worked in silos. They often had limited communication and collaboration, leading to inefficiencies and delays in software delivery.

  4. Scalability Challenges: As software demands grew, the manual and resource-intensive approach became increasingly unsustainable. Organizations struggled to scale their operations to meet the needs of rapidly evolving software projects.

Now the term DevOps came into the picture..

1. Automation: DevOps introduced the concept of infrastructure as code (IaC) and automated deployment pipelines. This automation reduced the need for manual interventions, making the deployment process faster, more reliable, and less error-prone.

2. Collaboration: DevOps emphasizes breaking down the silos between development and operations teams. It promotes collaboration, shared responsibilities, and a culture of continuous improvement, fostering faster and smoother software delivery.

3. Scalability: With automation and improved collaboration, DevOps enables organizations to scale their software delivery processes efficiently. Automated provisioning and deployment allow for rapid scaling up or down based on demand.

4. Continuous Delivery: DevOps practices, such as continuous integration (CI) and continuous delivery (CD), enable organizations to release software updates quickly and frequently. This agility is essential in today's fast-paced software development landscape.

5. Cost Efficiency: By optimizing resource utilization and minimizing manual interventions, DevOps practices can lead to cost savings in terms of hardware, personnel, and operational efficiency.

In essence, DevOps emerged as a response to the challenges posed by the resource-intensive and manual deployment processes of the past. It has since evolved into a holistic approach that not only streamlines software delivery but also promotes a culture of collaboration, automation, and continuous improvement, ultimately benefiting both organizations and end-users.

The Famous Soup Example

The 20 Best And Most Famous Soups In The World

The story of the soup shop beautifully illustrates the concepts of software development lifecycles and how they relate to DevOps. Let's draw some parallels between the soup-making process and software development, highlighting the importance of DevOps:

  1. Planning (Plan-1): Let’s assume that the shop has talked to its customers and figured out a soup (or soups) that they really want. Let’s say it is black bean soup.

    The backend chef either uses an existing recipe or designs a new recipe for black bean soup.

They now have a Plan-1 for soup.

  1. Gathering Ingredients (Create - Code-2): The backend chef goes and gathers all the ingredients: the black beans, the base, the spices, and anything else as well as any tools necessary to make the soup such as a stove, an oven, knives, etc.

    If necessary, it will prep the ingredients with cutting, opening, and pre-cooking, etc as necessary to make the soup ingredients ready for assembly.

    They have either created-2 or get the ingredients.

  2. Assembling and Building (Build-3): The backend chef then needs to put these soup ingredients together into a pot or pots and cook the soup.

This process allows the soup to be assembled or built-3 and is repeated until the soup is ready.

  1. Testing (Test-4): The backend chef makes sure that the soup is what they want to serve, the chef will taste it to make sure it is of a quality and direction that they want to serve to the customer. (note that this sampling can and will happen at any time for quality control. We want fantastic soup!)

    We have Test-4 for taste.

  2. Releasing (Release-5): Once the soup has been cooked and tastes the way they want it, the pot is passed to the front-end server and is sent from the kitchen to the front of the soup shop.

    At this point, the front-end server may stick the soup on a different front-end stove that is built to keep the soup warm. Note that this is not the backend chef; we have someone new

The soup is now ready to be released-5.

  1. Deployment (Deploy-6): Customers can now order the soup. Still, it has to be moved out of the pot (because this is for cooking, not eating) and made presentable and portable to the customers usually by putting it into a bowl and some kind of setting like a tray, to-go container, etc.

    The front-end server does exactly that, by prepping one or more bowls of the soup.

    The soup has now been deployed-6 to bowls.

  2. Operation (Operate-7): The front-end server now has a few bowls of soup plus the original source pot of soup, and they may need to warm the bowls, make fresh bowls, add garnish to the soup, and remove lousy soup or other things to keep the flow of soup for the customer happening.

    They may also add more bowls or remove them as necessary to meet the customer’s demand for soup and, of course, accept payment.

The front-end server is operating-7 the soup shop.

Monitoring (Monitoring-8): The front-end server may also add spices due to customer need or check the temperature and taste of the soup bowls to ensure that the customer is getting good soup.

They may also need to add drinks, add side items, or deal with returned soup because either the soup or something around the soup was not up to customer standards.

The front-end server is monitoring-8 the soup-eating experience.

So the summary we did was

  1. Plan-1 The soup recipe

  2. Create (Code-2) and assemble the ingredients for the soup as well as the tools

  3. Build-3 or cook the soup

  4. Test-4 the soup for quality

  5. Release-5 the soup to the front-end shop

  6. Deploy-6 the soup into bowls for consumption

  7. Operate-7 the front-end shop so that soup can flow

  8. Monitoring-8 the customer experience of the soup by checking temp, etc

That’s all DevOps is… it is a way to build things and deliver them.
Now there is more to it, but at a fundamental level, that is what we are talking about; how we build and deliver software applications and the tools we use to do it.