Tuesday, January 21, 2020

What is DevOps? An Engineers' perspective


What is DevOps?

DevOps is a culture where active collaboration between development, operations, and business teams is achieved. It’s not all about tools. DevOps in an organization are required to create value to end customers. Tools are only aids to build this culture. DevOps increases organizations' capability to deliver high-quality products or services at a swift pace. It automates all processes starting from build to deployment phase of an application.

Why is DevOps needed?


DevOps helps to remove silos in organizations and enable the creation of cross-functional teams, thus reducing reliance on any one person or team during the delivery process. Frequent communication between teams improves the confidence and efficiency of the team members. Through automation, the DevOps team increases their productivity making satisfied customers.

DEVS ARE FROM VENUS,
OPS ARE FROM MARS
                              - Steven Haines

How to implement DevOps?

The “DevOps Handbook” defines the “Three Ways: The principles of underpinning DevOps” as a way to implement DevOps in large enterprises.

The First Way: Systems Thinking


The First Way emphasizes the need for global optimization as opposed to local optimization, hence the focus is on optimizing all business value streams enabled by IT.


The Second Way: Amplify feedback loops


The Second Way is about discovering and injecting the right feedback loops so that necessary corrections can be made before it’s too late.

The Third Way: Culture of Experimentation and learning


The third way is all about creating the right culture that fosters two things, continual experimentation and learning from failures. It emphasizes the understanding that repetition and practice make teams perfect.

While the three ways focus on the key principles, we also have three pillars which are keys to any successful DevOps adoption.

The three pillars of any DevOps adoption are,

  1. Culture and People
  2. Tools and Technology
  3. Processes and practices


Some common DevOps terms:


Continuous Integration

Continuous integration is a software engineering practice where software development team members frequently merge and build their code changes. The key benefit is to detect and fix code merge conflicts and integration bugs in the early stages of software development. Hence reducing the cost to detect and fix the issues.


Continuous Delivery

Continuous delivery is a software engineering practice in which changes are automatically built, tested, and made release ready for production. In order to get into a continuous delivery state, it is very crucial to define a test strategy. The main goal is to identify functional and non-functional defects at a much earlier stage thus reducing the cost to fix defects. It also enables teams to come up with working software as defined in the agile manifesto. Continuous delivery as a practice depends on continuous integration and test automation. Hence it is crucial that teams need to ensure that they practice continuous integration along with test automation religiously, to effectively practice continuous delivery.


Continuous Deployment

Continuous deployment is a software engineering practice in which codes committed by the developers are automatically built, tested and deployed to production. Continuous deployment as a practice, require that teams have already adopted continuous integration and continuous delivery approach. The primary advantage of this practice is reducing time-to-market and early feedback from users.

Continuous Testing

Continuous Testing can be defined as a software testing practice that involves a process of testing early, testing often and test automation. The primary goal of Continuous Testing is to shift left the test phase as much as possible to identify defects and reduce the cost of fixing.



Some popular DevOps tools:


  • Git– Source code management and version control system. 
  • Selenium – This is an automation testing tool
  • Jenkins – Automation server with plenty of plugins to develop CI/CD pipelines
  • SonarQube - Static code analysis
  • Ansible - This is a configuration management and deployment tool
  • Docker – This is a containerization platform
  • Terraform– This is an infrastructure automation tool
  • Kubernetes – This is a Container Orchestration tool
  • Nagios – This tool is good for Continuous Monitoring

Following are the factors that will improve as a result of DevOps implementation:


Predictability: DevOps decreases the failure rate of new product releases.
Maintainability: The process improves the overall recovery rate at the time of the release event.
Improved Quality: DevOps improves the quality of product development by incorporating infrastructure issues.
Lower Risk: Security aspects are incorporated in SDLC, and the number of defects gets decreased across the product
Cost Efficient: Cost efficiency is improved due to DevOps that is always an aspiration of every business organization.
Stability: DevOps implementation offers a stable and secure operational state.
Streamlined Delivery Process: As DevOps provides streamlined software delivery, so marketing effort is reduced up to 50%. It happens due to the mobile application and digital platform.


No comments:

Post a Comment

Making YouTube usable again

 YouTube has evolved from a platform for educational and entertaining content into a space filled with ads, distractions, and the ever-growi...