DevOps
Tags: devops, beginners, kcdchennai
Published: 2023-05-01 06:55:39

Those who are new to DevOps, find it quite difficult to know where to start their journey, I find it too. So, In this blog, I'll be sharing all my learnings (pre-requisite) so that you can start yours too and get your basics done.


## What is DevOps?


**DevOps** combines **development** and **operations** to increase the efficiency, speed and security of software development, to automate all the processes and delivery compared to the traditional process.

The main key🗝 practices involved in DevOps are:

**CI/Cd, IaC, Monitoring and Logging**


Let me break down this for you🫵 guys!


> **Dev**elopment + **Op**erations = **DevOps**


Development, "Dev" is the process of generating code that requires any software to work which involves practices like designing, writing and testing code.

The operation, "Ops" is the process of deploying, maintaining and monitoring the software application.

Both teams work closely to ensure that the code is properly integrated with the infrastructure and other components of the system. In DevOps, they work together as a single team to break down the traditional silos between these two groups so that development and operation can be more effective and efficient.

More simply, you can think of it as making a toy house building🏢.

In the making🏗 process, it's a teamwork game to play. You need to work together with your friends to make a strong building with different tools and materials like toy bricks, glue, paint🎨 etc.

DevOps is the same, as working together in a team to build a software program using different tools and techniques like coding, testing and automation.

## Learning Path:

Now, the following is the step-by-step learning path to begin your journey:-

<u>Step 1</u>: **Getting started with GIT & GITHUB**

The first and most important tool you have to learn to get started with DevOps is GIT & GITHUB.

![Git&Github](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhvqa3di6rcij1e5xwoj.png)


> Learn the fundamentals of version control and collaboration with Git and Github.


**Git:** An open-source distributed version control system that allows developers and operations teams to collaborate and keep records and save the changes made on a project. It's like saving the history of your project so that you can make changes as as many times you want without losing your previous one.

**Github:** A web-based platform that provides hosting for Git repositories and offers additional features for managing software development projects.

I'll not be going into the deep. I'll share the resources at the end instead.
[Git & Github](https://youtu.be/apGV9Kg7ics)


<u>Step 2</u>: **Understanding Linux and Shell Scripting**

> Explore the power of the Linux operating system and learn how to automate tasks with shell scripting.


**Linux** is a free and open-source operating system based on Unix os.

**Shell Scripting** is a way of writing programs that can be run on a Linux or Unix command-line interface, called a shell.


<u>Step 3</u>: **Programming Fundamentals with Golang and Python**

The next step is to learn a programming language, don't worry, you don't have to master anyone. Just for getting started you must know the basics of these.


> Learn these two popular programming languages for DevOps and how they can be used to automate infrastructure and application deployments.



```
# This program prints Hello, world!
package main
import "fmt"

func main() {
  fmt.Println("Hello World!")
}

```

<u>Step 4</u>: **Building and Deploying applications with Docker**
An illustration of a docker container 

![Docker](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6175x05hwyhutjyb6tad.png)

> Learn how to package, deploy and manage applications with a docker container.

**Docker** is an essential tool in DevOps. It allows developers to package and deploy their applications using containerisation technology.

Docker Deployment of your application:

![Docker Deployment](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u2jgjo9ms9gbgah4cdtf.png)

<u>Step 5</u>: **Automating workflows with Jenkins**


![Jenkins Dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jumg9r3ogpw9l93s1kv0.png)
> Master the basics of CI and learn how to automate builds, tests, and deploy with Jenkins.


Creating new item on Jenkins Dashboard to set up Job

**Jenkins** is an open-source automation server that supports _continuous integration_(CI) and _continuous delivery_(CD) workflows which enables teams to automatically build, test and deploy their code.

<u>Step 6</u>: **Orchestrating with Kubernetes**

Dive into the world of orchestration and learn how to deploy, scale and manage containerised applications across the cluster of servers.

**Kubernetes** was originally developed by Google and is now maintained by the Cloud Native Computing Foundation (CNCF). It is an open-source platform for managing and orchestrating containerised applications.


![k8s cncf](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ub45qj6n04dtr4q5ek45.png)

Click here to: [Learn Kubernetes Basics](https://kubernetes.io/docs/tutorials/kubernetes-basics/)



<u>Step 7</u>: **Infrastructure as Code with Ansible**

> Explore the power of configuration management and learn how to automate infrastructure with Ansible.


Ansible is a configuration management tool that allows you to define infrastructure as code and automate tasks such as configuration updates, software installation and system updates. It is a "push-based" configuration model.


```
sudo apt update sudo apt install software-properties-common sudo add-apt-repository --yes --update ppa:ansible/ansible sudo apt install ansible

```

<u>Step 8</u>: **Provisioning cloud resources with Terraform**


> Discover how to define, provision and manage infrastructure with Terraform, a popular tool for infrastructure as code.


**Terraform** is a tool for the provisioning and management of cloud resources that allows you to create, update and destroy cloud resources such as virtual machines, databases and storage services.

[Terraform](https://youtu.be/l5k1ai_GBDE)

<u>Step 9</u>: **Automating configuration with Chef and Puppet**


> Learn how to automate server configurations with two popular configuration tools, Chef and Puppet.


Both have similar functionality used for automating the deployment and configuration of infrastructure. Chef is a Ruby-based system automation-friendly. The automation tool used to configure, manage, deploy and orchestrate applications. These are "pull-based" configuration models.

<u>Step 10</u>: **Integrating Security into DevOps with DevSecOps**


> Understand the principles of DevSecOps and how to integrate security into your DevOps workflow.


An approach to software development that integrates building security controls into every stage of the software development lifecycle from development and testing to deployment and operations.

That's all to get your basics done.

resource: (https://kubernetes.io/)

This is not the exact path you have to follow, you can jumble. There are a lot of tools out there to learn for DevOps, once you start your journey you get to know about many more. I have just given you one way of learning. Start your journey and find your own way.

## Learning Project Ideas:

Some beginner-level project ideas that you should do while learning~

- **System Monitor** - Develop a shell script that monitors system usage such as CPU, memory, and disk usage. It can send an alert to the user when certain thresholds are reached.

- **Multi-container application with Docker Compose** - Create a multi-container application using docker-compose, which allows you to define and run a multi-docker container as a single service.

- **Load-balancing with Kubernetes** - Configure load balancing for a Kubernetes cluster by creating a service that distributes traffic across multiple pods.

- **Ansible playbook for security hardening** - Develop an ansible playbook that automates security hardening tasks, such as disabling unnecessary services and setting up firewalls.

- **Jenkins pipeline** - Create a Jenkins pipeline that automates the entire software delivery process including building, testing and deploying applications.

**Learning Resources:**
There are a few free amazing resources that you must check out and get started with:

[Kunal Kushwaha](https://youtube.com/playlist?list=PL9gnSGHSqcnoqBXdMwUTRod4Gi3eac2Ak): This is an amazing free DevOps boot camp by Kunal Kushwaha on his youtube channel to get started with.

[TechWorld with Nana](https://youtube.com/playlist?list=PLy7NrYWoggjwV7qC4kmgbgtFBsqkrsefG): To learn basic concepts of various tools, you can check this youtube channel.

[That DevOps Guy](https://www.youtube.com/@MarcelDempers/featured): This youtube channel is completely based on DevOps learnings by MarcelDempers.

[Pradumna Saraf](https://github.com/Pradumnasaraf/DevOps): This is one of the best resources by Pradumna Saraf you can find on his GitHub to get notes, play labs or anything else to get started.

Sometimes it becomes quite difficult to set up systems for running DevOps tools getting head clear with the doubts. So a paid course can also be an option in this scenario.

[Kodekloud](https://kodekloud.com/learning-path-devops-basics/): This is one of the best DevOps courses out there by Mumshad Mannambeth. They have hands-on lab practices after lecture videos and also have a playground where you can do whatever you have learned through the lectures. And that's what I'm doing too.

[TechWorld with Nana](https://www.techworld-with-nana.com/devops-bootcamp): Another amazing paid course by Nana you can do.


EddieHub

Community of inclusive Open Source people - Collaboration 1st, Code 2nd! Join our GitHub Org 👇 - EddieHub

github.com

Join this amazing GitHub community to get started with your open-source journey while learning DevOps to grow faster. They welcome newcomers open handedly.


> Learn -> Contribute -> Collaborate -> Grow

---


That's All!! GO🏄‍♀️ and start your DevOps journey today!!