Devops the word is formed by Dev+ops, where dev refers to development and ops refers to operation. This is mainly a software development methodology or practice, where the development and operation team works together in a cross-platform to serve an automated, hassle-free and zero downtime service to users.
Why DevOps?
We’ve to know the history of SDLC to know the history of DevOps. I’m trying to describe in sort about the earlier method of SDLC. The waterfall model was first introduced in SDLC. This was a liner-sequential model which was too easy to understand but there was a problem in that next phase cannot be processed earlier. So the process was slow and other teams need to wait for the earlier teams to complete the job. It was also hard to return to back stage if any mistake happened to the earlier team. The model follows the phases like Analysis>>Design>>Implementation>>Testing>>Maintenance [fig:01]. If the process is in the testing stage then it was too hard to return to implementation design or any other earlier stages. Some other limitations were high risk, not good for ongoing projects and overall not good for a complex project.
Agile is an iterative approach to project management and SDLC, which helps the teams to deliver projects faster. Here the full job was divided into different sprints and after the end of the sprints, the product should be delivered. Poor resource planning, cost and time, Limited documentation, No finite end of the job, because it was a process of providing products step by step and no one can think how the outcome looks like. As agile has no finite end so it’s not easy to measure the cost, resource and time.
The solution of the limitation of these processes is devops, here dev means the development team and ops mean the operation team. This is a full package or solution of Development and operations cost measurement, Continuous Integration and Continuous Delivery, Less CAPEX and OPEX, Minimum Outage and higher quality product service to customers. This is a continuous process and anyone can modify the project as per the requirements of the Customers with zero downtime and also revert to the same process.
How to be a DevOps engineer?
In this section, I will my best to inform you how to be a DevOps Engineer or what to learn one by one to practice in DevOps practical field.
First of all, we have to learn the basics to advance Linux. Here it can be any test of Linux like Ubuntu, Redhat, Cent-OS, Mint, Fedora, Oracle Linux or any type may be. Here the question is why we learn Linux when about 90% of people are using Windows Operating Systems. The answer is Linux is an open source kernel and people are using windows in percent 90+ but more than 90+ percent of applications are running on Linux kernel. It allows Multi-User and Muti-Tasking at a time with a powerful shell and multiple flavors. It also provides high security and no need for antivirus to operate. We need to know for the development of the Windows operating system, Linux-OS is used. Considering these points we need to learn Linux from the basic to expert level.
After that, we need to learn Source code management tools like Git, Github, Gitlab, bit-bucket etc. Here we must need to know at least one tool. The most familiar and used tool is Git/GitHub. A DevOps Engineer must know these tools so that he can collaborate with the developers.DevOps Engineer needs deep knowledge of push, pull, stage, status, log tracked and other operations of Source Code Management tools [ I will discuss this deeply in the next blogs ]
The next stage of a DevOps Engineer is to learn Docker. The same code is written by developers and needs to run in every type of OS like MAC, Linux, Windows android etc. Docker ensures the service by creating a virtualization Environment with lightweight and reusability.
Docker which is used in production is called the docker swarm. Mainly is a clustering and scheduling tool for Docker containers. With Swarm, IT administrators and developers can establish and manage a cluster of Docker nodes as a single virtual system. Swarm mode also exists natively for Docker Engine, the layer between the OS and container images.
The next tool a DevOps Engineer needs to know about is CI/CD pipelines. The well-known CI/CD pipeline is Jenkins. The automation process starts with Jenkins and is the most vital part of DevOps. I will discuss Jenkins in depth in the next blogs. For today we have to keep in mind that the most used CI/CD pipeline is Jenkins. It helps DevOps Engineer to Build, Test and Deploy code in any infrastructure automatically within seconds.
Another important tool for DevOps Engineers is to learn Kubernetes. This is a tool that helps to revive or auto-scaling the services. It May occur any type of unexpected error at running a project it may destroy or among different types of services anyone can destroy. Kubernetes helps the project to revive automatically providing instructions to operate. This is like as Orchestration of docker which helps to operate the docker container in an organized way.
Another important tool to know as a DevOps Engineer is cloud infrastructure. At present, the use of the cloud instead of using physical servers is increasing. As DevOps Engineers we need to know about multiple clouds as the requirements of different clients are not the same but at least one cloud knowledge is mandatory. AWS can be the best starting of the cloud journey.
The knowledge of IaC-like Terraform [invented by Hasi Corp ] will take you to next level. Provisioning, cloud formation type works handle with terraform. It maintains its syntax and language named HCL which is valid on any cloud. By using terrform we can deploy code to any cloud but the best way to manage the configuration of the infrastructure a DevOps Engineer needs to know ansible /chef. Automatic configuration management and handling are easy to Ansible.
Once the application is deployed by these processes We need to monitor the application with grafana, Zabbix,nagios etc monitoring tools. This is not mandatory to use the prefix tools, but as per the requirements and policy of the organization we need to use that monitoring tools.
I can summarize that if we know these tools hopefully we can be good practitioners of DevOps Engineers.
Thanks for reading my first blog. I shall try my best to explain all the processes in detail in my next blogs.