Day1: Introduction to DevOps

What is DevOps?


If you want to build better software faster, DevOps is the answer.

DevOps is a software development methodology that brings everyone to the table to create secure code quickly

  • enables businesses to increase operational efficiencies

  • Collaborative approach merging development and operations teams.

  • delivers better products faster

  • reduce security and compliance risk.

  • Focus on culture, automation, and continuous improvement.

  • Accelerate software delivery while maintaining quality.

  • Break down silos between teams for seamless collaboration.

  • Automation reduces errors and streamlines manual tasks.

  • Continuous Integration (CI) and Continuous Deployment (CD) for frequent releases.

  • Infrastructure managed as code ensures consistency and scalability.

Used as a set of practices and tools, DevOps integrates and automates the work of software development and IT operations as a means for improving and shortening the systems development life cycle.

Goal of DevOps ?

DevOps focuses on incremental development and rapid delivery of software. Success relies on the ability to create a culture of accountability, improved collaboration, empathy, and joint responsibility for business outcomes

Why is Devops important ?

  • Better teamwork and talking between teams.

  • Faster software updates with automation and CI/CD.

  • Better software quality using automatic tests and rules.

  • Always improving based on user feedback.

  • Using resources better with Infrastructure as Code.

  • Easily adjusting to changes in needs.

  • Less downtime and quicker problem fixing.

  • Supporting new ideas and safe experiments.

  • Matching tech plans with business goals.

  • Happier jobs and more chances to learn.

  • Staying ahead of competition by being fast and flexible.

How DevOps works ?

Why DevOps was needed ?

In 90s, software was developed using the WaterFall model. People used to sit together in lengthy (and often pointless) discussions, chart out design, code, test, and finally, deliver. Obviously this process was really slow for fast moving business world. So to address this problem, came agile methodology. It introduced faster delivery time in the form of user stories and "sprint" sessions, and small, continuous (and incremental) development.

The problem with both was the increasing differences between Developers and Operations guys/gals. The developers were responsible for coding and developing features. The operators were responsible for setting up servers and integration environments, and testing the code. Sounds perfect, different departments, different verticals, the corporate style.

What actually happened was that developers often tested their code in their own environment (their laptop for example). The operations folks then had nightmares matching the production compatibility (lots of servers) with the development environment. It is like the game worked in your laptop, so you are assuming it must work in all other system (desktop, servers, etc.) of similar configuration. Insane right? Unfortunately that's how we worked so far.

Since a complete setup had so many moving parts, diagnosing a problem was a nightmare. This called for lots of unplanned work (weekend overtime without pay) for operations folks in executing a delivery. The developers also got stalled with their progress, as they had to wait for previous problems to be resolved before they added new changes. Even worse, since so many developers committed so many changes, it became impossible to find out which changes from which end (operations or developers?) are causing the problem. The worst case scenario (which unfortunately was the most common) was the constant infighting between developers and operations, with managers shouting their throat out.

To address this problem, and to increase the comradeship between developers and operations, DevOps came into picture.