DevOps: Intersection of Development and Operations
Published: 2023-05-03 23:27:44


### DevOps Case Study

- What is DevOps and its Application in the Software Release Process
- Why We Need DevOps
- Challenges DevOps Aims to solve
- DevOps Principles

When creating the application, there are 2 main departments involved in its successful delivery: **_Development and Operations_**

**Development** : This involves

- Developing the application
- Testing the application

**Operations** : This involves

- Deploying the application
- Maintaining the application on a server

> DevOps is the intersection between the development and the operations

**A Typical Software Release Process in the initial launch**

![Devops-cover.jpeg](https://cdn.hashnode.com/res/hashnode/image/upload/v1660567243265/wC5Z7JMO2.jpeg)

#### Why is there a need between the development and operations departments?

When you have an idea for improving an application,

- You implement it in code

- You test it

- Build and package it

- Deploy it

- Once the application has been released, you can then observe it in production to see if there are any improvement possibilities or issues that needs to be fixed.

This basically gives a process of **_continuous delivery_** of changes (an endless cycle of improvement to the application).

DevOps is about making this process of continuous delivery **fast** and with minimal error / bugs.

In other words, DevOps = **Quickly** delivering of **High Quality** code

How is a DevOps engineer involved in Development? As a DevOps engineer, you need to understand

- The concept of how developers work
- How the application is configured to talk to other services or databases
- The concept of automated testing.

The application being developed will need to be deployed on a server (infrastructure) to enable users to access it, hence the Operations department.

As a DevOps engineer, you would need to prepare the infrastructure (either on-premise, cloud or hybrid) to run the servers.

These servers will need to be configured to run the application. To begin with, you as a DevOps engineer must understand

- The basics of Linux (since most of the servers where applications are running are linux servers)
- The command line interface
- Server management
- Networking and security e.g
  - Firewall 
  - Load balancers
  - IP, DNS Resolution

Now, what is DevOps?

![what is devops.jpeg](https://cdn.hashnode.com/res/hashnode/image/upload/v1660144871347/qC6_GXuzb.jpeg)

DevOps combines _cultural philosophies_, _practices_, and _tools_ that increase an organization's ability to deliver applications and services at increased speed and in less time.

This faster delivery of improved and scalable products is made possible through the use of tools that help to operate and evolve applications quickly and reliably. These tools enable engineers to independently accomplish tasks such as deployment and infrastructure provisioning.

#### Challenges that DevOps tries to solve

During the release process, DevOps aims to provide solutions for

1. Fallouts and roadblocks caused by miscommunication and lack of collaboration.
2. Conflict of interest between the development and operations team.
3. Security
4. Application testing
5. Manual work

> DevOps tries to remove all these roadblocks and things that may slow down the release process.

It aims to achieve **Fully Automated** and **Streamlined Processes**

DEVOPS PRINCIPLES

In 2010 Damon Edwards and John Willis came up with the **CAMS** model to showcase the key values of DevOps. CAMS is an acronym that stands for _Culture, Automation, Measurement, and Sharing_. These are the main principles of DevOps

**Culture** DevOps is first and foremost, the culture and mindset, forging strong collaborative bonds between software development and infrastructure operations teams.

**Automation Of Processes** Automating as many development, testing, configuration, and deployment procedures as possible is the golden rule of DevOps. It allows specialists to get rid of time-consuming repetitive work and focus on other important activities that cant be automated by their nature.

**Measurement of KPIs (Key Performance Indicators)**To get optimal performance, it is necessary to keep track of the progress of activities composing the DevOps flow. Gathering various metrics of a system allows better understanding of systems that work and those that can be improved.

**Sharing** Sharing explains the DevOps philosophy better than anything else as it highlights the importance of collaboration. It is crucial to share feedback, best practices, and knowledge among teams since this promotes transparency, creates collective intelligence and eliminates constraints.

> **_Thank you for reading...😃_**