What is DevOps?
Published: 2022-10-31 10:49:18


You might have heard about this term before since the advent of cloud computing. So let’s delve deeper into what exactly is DevOps


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5y79emlj32j7uz43cy5.png)


1\. What was it like before DevOps?
===================================

So that’s a great question. Back in the day operators and developers had a lot of contention. Developers used to throw their code over the metaphorical wall and operators were responsible for keeping that code running in production.

Operators had little understanding of the code bases and developers had little understanding of operational practices but developers were concerned with shipping code and operators were concerned with reliability. This misalignment often caused tension within the organization. In a nutshell, developers wanted to move faster to get new features out faster and the operators wanted to move slower to keep things stable and one can easily see how this would cause a lot of tension.

2\. DevOps As a Solution
========================

**_DevOps = Development + Operations_**

In comes DevOps, which is a set of practices and a culture designed to break down those barriers between developers operators, and other parts of the organization. I break DevOps down into five key areas.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or7u71urd8cgmp1rp44m.png)



1.  **_Reduce organizational silos:_** By breaking down barriers across teams we can increase collaboration and throughput.
2.  **_Accept failure as normal:_** Computers are inherently unreliable so we can’t expect perfection and when we introduce humans into the system we get even more imperfection.
3.  **_Implement gradual change:_** Not only are small incremental changes easier to review but in the event that a gradual change does make a bug in production it allows us to reduce our mean time to recover and make it simple to rollback incase of a failure.
4.  **_Leveraging tooling and automation_**: Automation is a key aspect of DevOps. It is always better to automate stuff when dealing with heavy loads.
5.  **_Measuring everything_**: Measurement is a critical gauge for success and without a way to measure if our first four pillars were successful or not, we would have no way of knowing if they were.

The five key areas essentially encompass the field of DevOps.

3\. Overview/Roadmap
====================

As we have discussed DevOps is just a set of practices that combine software development and IT operations. There are so many steps when it comes to making software and deploying software and collecting all these sets of practices together is called DevOps

**— What does a DevOps Engineer actually do?**

Their role is to introduce some tools and processes to make the life cycle of the entire software development and deployment easy from coding to deployment to maintenance and updates.

the cycle looks like this :


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xckwxqk606h0l2e5cwi.png)



the cycle moves from planning -> coding -> build -> test -> release -> deployment -> operations -> monitoring and the process keeps on continuing itself.

The roadmap looks something like this :

> _Coding Language_

Python or Golang you can learn either of them. But If you want to master DevOps, you should definitely know how to use **_Bash_**.

> _Server Administration_

It’s one of the most important steps. Linux and Unix would always be your dearest friends in DevOps.

> _Networking and Security_

How do your applications talk to each other and if the application is secure or not?

**_The most significant thing to learn_**: TCP/IP fundamentals

**_How the internet works:_** Learn different Protocols (DNS, SSL, FTP, HTTP, HTTPS, etc)

> _Servers_

Starting and maintaining servers is key for a DevOps Engineer:

1.  **Web Servers**

Learn about **_Apache_**, **_Nginx,_** and **_Tomcat_** (Optional)

2\. **_Caching**

**Redis (Most Important)** and Memcached

3\. **Databases**

databases are of two types **_SQL_** and **_NoSQL_**

In **_SQL_** you can learn about **_MySQL_**, and **_PostgreSQL._**

In **NoSQL,** you can learn about **_MongoDB_**, and some cloud databases like **_Amazon dynamo DB, and Google Cloud Datastore; depending upon the cloud service provider you choose to follow._**

> _Infrastructure As Code_

In Simple terms, you are defining what your infrastructure which runs the website looks like in a file.

It will take that file/recipe from you and create the infrastructure according to the specification that you have thrown in that file.

1.  In **_Infrastructure as code_** first, you have to look into **_configuration management_** and then you can use tools like **_Ansible by RedHat and Terraform._**
2.  **_Containers_**: A DevOps Engineer should know the ins and outs of Docker.
3.  **_Container Orchestration_:** let’s say that you have lots of containers running and after some time it becomes difficult for you to manage it manually so you need to automate the task. Basically you have to scale up your container, if your container dies you have to restart those containers, etc. For all these things you can learn **_kubernetes_** or **_K8s or DockerSwarm._**
4.  **_Infrastructure provisioning:_** There is a tool for this called **_terraform._** It’s a tool for implementing infrastructure as code. Some other options include **_Google Deployment Manager and AWS Cloudformation._**

> _CI/CD_

They are abbreviations for Continous Integration and Continous Delivery.

Popular tools for this are **_Jenkins_**, **_Circle CI_**, **_Travis CI,_** _and_ **_GitHub Action help you maintain your code. T_**here are also tools like **_GitLab CI, Big Bucket Pipelines,_** and there is also **_AWS Coding Pipeline_** other than that there is **_Google Cloud Built._**

> _Monitoring and Logging_

If there is some bug or something that is not working correctly then we need to see what went wrong, how it went wrong, and which place it went wrong. We need some kind of way to monitor and log your application. For this, we need to learn tools like P**_rometheus, grafana_** or Elasticsearch logstash, and Kibana stack (ELK Stack)**_._**

> _Cloud_

**_Google Cloud Provider (GCP)_**

**_Amazon Web Services (AWS)_**

**_Microsoft Azure_**

This concludes over overview/Roadmap. Hope it helps the budding engineers.

5\. Benefits of DevOps
======================

1.  **Faster** time to market.
2.  **_Increase Productivity_**. As most of the parts are automated team focuses more on innovation and improvement.
3.  **_Continuous Feedback Loop_** from customers keeps running, which results in continuous improvement of the product quality.

Thanks For Reading!
===================