🌐Before DevOps
Before DevOps, developing and operating software were two separate jobs, performed by two different groups of people. Developers wrote software, and they passed it on to operations staff, who ran and maintained the software in production. Two quite distinct kinds of jobs: ‘devs’ and ‘ops’.
✨DevOps Definition✨
DevOps is a combination of software developers (dev) and operations (ops). It is defined as a software engineering methodology which aims to integrate the work of software development and software operations teams by facilitating a culture of collaboration and shared responsibility.
– Parveen Kr. Arora, Co-founder and Director, VVnT Foundation
“Imagine if Ford built cars but did not provide enough information to mechanics to maintain and service those cars once they were being used by the customer. This has been the situation for many years. Now imagine that Ford would come to your house every few days, make small changes to your car, not inform the mechanics of all the details and find they may not be reliable. As a mechanic, this would make your life extremely difficult. As the builder, you would be getting annoyed at the constant distraction of being asked for help to fix people’s cars when you want to build new ones. As the customer, you would start looking to buy your next car from Audi, BMW or another manufacturer.
DevOps is intended to be a way to ensure that the builders and the mechanics collaborate and communicate constantly and consistently to ensure quality and to ensure that everyone understands any changes made to make sure you, the customer, are always happy and have an uninterrupted drive.”
– Stephen Walters, Field CTO, CEM Digital
“DevOps is a philosophy of “together we are better” and can achieve more. Think about rock bands. A band is a group of musicians with mixed talents, some might play more than one instrument and there is probably a “rock star” front-man. They all have individual talents, but it’s only together that they can create rock anthems that we all love and remember. Now imagine if, rather than being mixed, bands only allowed members that played the same instrument, for example a keyboard band, guitar band, and so on. To make a decent song you’d need musicians from multiple bands to participate to get all of the instruments covered, but these musicians barely know each other and don’t get any time to practice together. This way of making music would stifle creativity, and (with the odd exception) quality music would not be created. All in all, there would be disappointed and unhappy fans.
DevOps is really the same thing but for building software. It brings together all of the different roles (Development and Operations but also, test/QA, infrastructure and more) involved in software engineering and puts them in one team focused on one set of customers and the products they buy. Working closely together they are faster and better and, as a result, their customers are happy and loyal.”
♾Lifecycle
The DevOps lifecycle refers to a continuous software development process that uses DevOps best practices to plan, build, integrate, deploy, monitor, operate, and provide ongoing feedback throughout the lifecycle of the software.
Often, an infinity is used to illustrate the software lifecycle
Plan: The process starts with the planning phase, where development and operations teams collaborate to define project requirements, set goals, and create a roadmap for the development process.
Code: In this step, developers write and review code for new features or bug fixes. They use version control systems to manage code changes effectively.
Build: The code is then integrated and built into executable artifacts using automation tools. This ensures that the application is ready for testing and deployment.
Test: Automated testing is conducted to validate the functionality and quality of the software. This includes unit tests, integration tests, and various other testing methodologies.
Release: The tested and validated code is prepared for deployment to the target environment. This includes activities like creating release packages, versioning, and documenting changes.
Deploy: The release package is deployed to a staging environment or production environment using automation to ensure consistency and reduce human errors.
Operate: The application is now live, and operations teams monitor its performance, troubleshoot issues, and ensure its stability and availability.
Monitor: Continuous monitoring of the application and infrastructure is performed to identify any anomalies or performance bottlenecks.
These steps are continuously repeated in a loop, reflecting the iterative nature of DevOps. The feedback gathered at each stage informs the next round of planning, development, and operations. This cyclic process allows for rapid delivery of software while maintaining its quality and stability.
💯Principles of DevOps
Culture — Emphasizes the implementation of the DevOps model as a common goal guiding the operations within an organization.
Automation — Focuses on using automation to ensure continuous delivery by eliminating repetitive manual work.
Lean — Highlights the importance of adopting a DevOps mindset that sacrifices “heavyweight” processes in favor of agile and fast-paced alternatives.
Measurement — Buttresses the importance of gathering data and analyzing core DevOps metrics like mean time to recovery (MTTR) and application availability.
Sharing — Facilitates an environment that supports transparent communication and collaboration in order to break down technical data silos.
✅DevOps Benefits
Build a startup culture: Bring business, development, operations, and other stakeholders together.
Respond to the market faster: Address organizational inertia, optimize delivery workflow, and leverage cloud technology to respond to consumer demands.
Reduce development and operational costs: Automate processes such as code integration, testing, deployment, application monitoring, and issue management.
Instil trust and confidence: Engineer transparency, observability, and the appropriate amount of risk mitigation into the delivery pipeline.
Here are some links that might help you go in depth.