What DevOps concepts and tools to learn?
Tags: devops, beginners
Published: 2021-12-28 14:03:21

You need to learn to become a DevOps engineer and what are the tasks and responsibilities of a devops engineer, First you need to understand that there are two main parts when creating an application, DevOps between two main departments. Development and Operations
The development part where software developers program the application and test it, The operation team part where application is deployed and maintained on a server.
DevOps is a link between the two development and operation now this is a bit too abstract so let's dive into the details to really understand the devops tasks and which tools are needed to carry out these tasks
It all starts with the application developers team will program an application with any technology stack different programming languages build tools etc and they will of course have a code repository to work on the code in a team one of the most popular ones today is git
Now you as a devops engineer will not be programming the application but you need to understand the concepts of how developers work which git workflow they're using also how the application is configured to talk to other services or databases as well as concepts of automated testing and so on
Now that application needs to be deployed on a server so that eventually users can access it right that's why we're developing it so we need some kind of an infrastructure on-premise servers or cloud servers and these servers need to be created and configured to run our application again you as a devops engineer may be responsible for preparing the infrastructure to run the application and since most of the servers where applications are running are linux servers
You need knowledge of linux and you need to be comfortable using command line interface because you will be doing most of the stuff on the server side using command line interface so knowing basic linux commands installing different tools and software on servers, Understanding linux file system basics of how to administer a server, How to ssh into the server and so on you also need to know basics of networking and security for example to configure firewalls to secure the application but also open some ports to make application accessible from outside as well as understand how ip addresses ports and dns works however to draw a line here between it operations and devops you don't have to have advanced super operating system or networking and security skills and be able to administer the servers from start to finish
There are own professions like network and system administrators security engineers and so on that really specialize in one of these areas so your job is to understand the concepts and know all this to the extent that you're able to prepare the server to run your application but not to completely take over managing the servers and whole infrastructure nowadays as containers have become the new standard you will probably be running your application as containers on a server this means you need to generally understand concepts of virtualization and containers and also be able to manage containerized applications on a server one of the most popular container technologies today is docker so you definitely need to learn it
Great so now we have developers who are creating new features and bug fixes on one side and we have infrastructure or servers which are managed and configured to run this application the question now is how to get these features and bug fixes from development team to the servers to make it available to the end users so how do we release the new application versions basically and that's where the main tasks and responsibilities of devops comes in with devops the question is not just how we do this in any possible way but how we do this continuously and in an efficient fast and automated way so first of all when the feature or bug fix is done
We need to run the tests and package the application as an artifact like jar file or zip etc so that we can deploy it that's where build tools and package manager tools come in some of the examples are maven and gradle for java applications for example npm for javascript applications and so on so you need to understand how this process of packaging testing applications work as i mentioned containers are being adopted by more and more companies as a new standard so you will probably be building docker images from your application as a next step this image must be saved somewhere right in an image repository
So docker artifact repository on nexus or docker hub etc will be used here so you need to understand how to create and manage artifact repositories as well and of course you don't want to do any of this manually instead you want one pipeline that does all of these in sequential steps so you need build automation and one of the most popular build automation tools is Jenkins of course you need to connect this pipeline with git repository to get the code so this is part of continuous integration process where code changes from the code repository get continuously tested and you want to deploy that new feature or bug fix to the server after it's tested built and packaged which is part of continuous deployment process where code changes get deployed continuously on a deployment server and there could be some additional steps in this pipeline like sending notification to team about the pipeline state or handling failed deployment etc but this flow represents the core of the CICD pipeline and the CICD pipeline happens to be at the heart of the devops tasks and responsibilities
So as a devops engineer you should be able to configure the complete ci cd pipeline for your application and that pipeline should be continuous that's why the unofficial logo of devops is an infinite cycle because the application improvement is infinite new features and bug fixes get added all the time that need to be deployed
**Infrastructure  **where our application is running. Nowadays many companies are using virtual infrastructure on the cloud instead of creating and managing their own physical infrastructure these are infrastructure as a service platforms like aws google cloud azure linux etc one obvious reason for that is to save costs of setting up your own infrastructure but these platforms also manage a lot of stuff for you making it much easier to manage your infrastructure .