What is DevOps? Step by Step Guide to DevOps.

What is DevOps? Step by Step Guide to DevOps.

Hey everyone👋, DevOps as a field has gathered quite the fame recently and many people are interested. This Blog is for those people, I will first tell you what DevOps is and why you should consider a job in this field and after that, there will be a complete Roadmap/Guide that anyone can follow to become a DevOps Engineer.

What is DevOps?

DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity.

What does that mean? Traditionally an organization has a developer team and an operation team. The Developer team handle the development of the software and adding more features while the Operations team handle the testing, scaling and stability of the software.

DevOps unifies these two roles into one single role, which in turn results in much faster development and deployment.

DevOps LifeCycle:

DevOps_Cycle.png

Plan > Code > Test > Release > Deploy > Operate > Monitor > Plan

Why DevOps?

  • High Demand - Skilled DevOps engineers are highly in demand, even in a Recession.

  • Great Pay - DevOps engineers are paid very handsomely all over the world.

  • Less Competition - As DevOps as a field is relatively new to the IT market, it does not suffer from the overabundance of competitors.

RoadMap

1. Linux

Linux.jpg

Linux is an open-source operating system based on UNIX. It is commonly used for servers, desktop computers, and embedded devices. Linux is known for its stability, security, and flexibility. It is also popular among developers and power users due to its ability to be easily customized and its wide range of open-source software.

Resources :

2. Computer Networking

ComputerNetworking.webp

Computer networking refers to the practice of connecting computers and other devices together to share resources and exchange information. This can include connecting multiple devices within a single location, such as a home or office network, as well as connecting devices across multiple locations, such as a wide area network (WAN) or the internet.

Networking enables the sharing of files, printers, and other peripherals, as well as communication between devices.

Resources:

3. YAML

Yaml.png

YAML is a data serialization language similar to XML and JSON. We use YAML files for writing configuration files for Kubernetes. It can be interchanged with JSON, but we use YAML because it is a lot easier to write, it is cleaner, and overall just easier to read compared to something like XML. You can use the above image as a comparison. YAML is also quite easy to learn.

Resources :

4. Git and GitHub

GitGithub.jpg

Git is a command-line tool that is used as a version control system. GitHub on the other hand is where the code you write is stored.

Git and GitHub allow developers to create, test and manage all the source code for all the applications.

Resources :

5. Docker/ Containers

Docker.png

Containers are isolated environments that allow you to run your applications. They are a form of virtualization that packages your application and deliver it to some other location just like Containers on a Ship Dock.

Docker is a great Open Source tool that allows us to create, modify, manage and delete images and containers. Docker uses Linux for most of its functions so basic Linux knowledge is required to use it.

Resources :

6. Kubernetes

Kubernetes.png

Kubernetes or K8s is a Container Orchestrator. What does that mean? It gives commands to containers on What, How and How much to do.

All the above technologies broadly lead to this, as it is what we use as DevOps engineers along with some other functionalities.

Resources :

7. Continuous Integration/Continuous Delivery (CI/CD)

CI_CD.webp

CI/CD is pretty self-explanatory, it's made up of 2 parts

**Continuous Integration: **

  1. Code Commitment.

  2. Image built with Committed code.

  3. The image is tested to check its functionality.

**Continuous Delivery: **

  1. After Testing, the Image is staged.

  2. The image is deployed and tested on more.

  3. Finally, it is released.

For this, Jenkins and GitHub actions are used mostly.

Resources :

8. Infrastructure as Code (IaC)

IAC.jpg

IaC is used to Codify your infrastructure and automate its provision. But Why? Scalability.

IaC can be created with tools like Terraform and Pulumi.

Resources :

9. Observability

Observability.jpg

Observability is a way to monitor your Kubernetes Clusters, and how many resources they consume, create logs of all actions, record the latency and relationship between operations and clusters and check your application performance.

There are 4 Pillars of Observability, namely :

  1. Monitoring [Prometheus, GraFana, etc.]

  2. Logging [Loki or Elastic]

  3. Tracing [Jaegar]

  4. Profiling [Parca]

10. Chaos Engineering

Chaos.jpeg

Chaos Engineering is used to build robustness and resilience in systems so that extreme loads do not fail the application.

It includes mainly two things: Chaos Mesh and Litmus

Resources :

11. Policy Engines

policyEngine.png

Kubernetes Policies are really important as they secure Kubernetes clusters from internal and external threats. Policy Engines can be used to secure our clusters.

Resources :

12. Service Mesh

servicemesh.jpg

Service Meshes are used to connect multiple microservices. It is not required in all Kubernetes clusters, but once scaling takes place, a Service Mesh becomes a requirement.

LinkerD and Istio are famous options when it comes to Service Meshes.

Resources :

Some Quality of Life Tools :

Conclusion

If you made it here, then congratulations you are dedicated to yourself and you will probably find your passion here 😊.

Did you find this article valuable?

Support Varchasv Hoon by becoming a sponsor. Any amount is appreciated!