How would I learn DevOps(If I had to Start Over)
I got this question many times like how should I start learning DevOps.
Well in this article we are gonna talk about
How should I learn DevOps by myself if I had to start from scratch?
There are certain caveats which I would like to mention -
Learning can different for everyone - The first one is the learning can be different for everyone there are certain topics which might be easy for you to understand but for some of you it might be a little difficult because you might be coming from a different programming background
Programming - Most important thing which is necessary if you are a beginner and if you want to learn DevOps is like you have to be a programmer and you should know some kind of a programming norm or you should have some kind of programming knowledge before starting to the DevOps that's the primary requirement which I would consider.
But since this is going to be a very foundation level guide which I have prepared for you so our main focus is for anyone who would like to start their DevOps journey from the scratch.
DevOps is a really big field with lots of components starting with a GitHub Jenkins, Ansible, Puppet, Kubernetes, Helm chart, and Docker but the main focus on the DevOps, the field is on continuous delivery as well as availability.
But don't worry we are gonna talk on each topic and each component in a bit more details and how can you start learning these components if you haven't have any experience before so the first component which I'm talking about is -
Table of Content
What is GitHub?
GitHub is a code repository where a developer can push their code so that it is available for other developers or other tools to fetch those code and execute those code.
You must be very much familiar with following GitHub Concepts -
- Pull Request
So you need to pull your code what I mean by pull once developer submits a code into the GitHub then you need to pull that code to deploy or to execute.
So the next component which I'm gonna talk about is Jenkins. After you pushed your code to GitHub or Bitbucket or SVN and once your code resides somewhere in your repository so from there you can access it.
Jenkins is something where we are going to set up our pipeline.Now it might be a little difficult to understand -
"What is the pipeline?"
In a very simple way, pipelines are continuous execution and deployment, and testing of a code.
So what happens in Jenkins is -
- You create your pipeline using scripts
- You write some tests to verify your code
- Jenkin's Pipeline will test your code based on the test cases which you have prepared and set up in the pipeline.
What if you do not know Jenkins?
1st Step - Install Jenkins
2nd Step - Create your first HelloWorld Pipeline
If you are going to learn Jenkins first try to set up a Jenkins pipeline by installing Jenkins somewhere on your development machine or laptop after that try to create some hello world pipeline in it and I know Jenkins has a very good really good documentation on how to set up this tool, so you can go and follow those tutorials so that is going to build up your basic on how to use Jenkins
3rd Step - Setup your Kubernetes jenkins pipeline on AWS
Taking a step further if you want to try setting up kubernetes jenkins pipeline on AWS then I would recommend following this post - How to setup kubernetes jenkins pipeline on AWS?
3. Continuous delivery
All right since we have talked about Git and Jenkins now there is one more concept Continuous delivery so continuous delivery concept is very much popular in the field of DevOps because you have to deliver the code continuously.
For that there are two components -
First we will fetch the code form GitHub.
Then that code will be deployed using Jenkins so that's how you're going to prepare your Continuous Environment where developers don't have to do anything manually by themselves.
On behalf of developers, Jenkins will take care of deployment, test execution and preparing your final release build.
This is how this continuous pipeline or continuous delivery model has been built around git and Jenkins, we will talk furthermore as we deep down into this article.
The next component which I am talking about here is the Docker.
Docker is a very crucial component in terms of the DevOps field because you can put your code inside your Docker container and you can ship this container to any other machine or any other server where you want to deploy your application.
But yeah Docker is an important concept you should know if you want to be an expert in the field of DevOps.
So let's consider an example you are a developer and you build an application using some programming language and after building that application you want to deploy it on production -
- You will compile your code
- After compiling and if there is no error then you are going to take out this code and deploy it on some remote server
- Then finally that code will run into the production that is your final objective
So what you did is - You just build your code manually you copied that code and put it on a remote server that is too manually and then finally you executed the code in the production.
Imagine if you can automate all these steps -
- Copying and putting it onto the remote server
- Deployment on the actual server
Moreover, most people are preferring Ansible because it's robust and it's open-source although you can use Puppet if your company is providing you a Puppet license . But it's more of a shift toward Ansible because it's open source and more robust.
Everyone wants to learn about Kubernetes and I have some lab sessions on setting up kubernetes on Ubuntu and CentOS uploaded on Kubernetes on my channel which you can go back and check. In the lab session, I have shown like if you want to start from scratch -
How will you install Kubernetes on Ubuntu and centos?
So all these tutorials are there you can go and check but if you are an absolute beginner and you don't know about Kubernetes then Kubernetes is a container orchestration tool. I know this word is a little bit more trendy but in a simple word if I explain -
If you have five or ten Docker containers running at the same time then how will you manage those containers?
Answer - Kubernetes
Kubernetes is a framework which is developed by Google and then it later released somewhere around 2015 or 2016 and then it became quite popular in the DevOps community and it is adopted very well so Kubernetes is a little bit more advanced topic and this is where I started because I had a little bit of background on Git, Jenkins, Ansible, and Docker so learning Kubernetes was a bit of a curve but it was easy for me to understand the Kubernetes concepts.
7. Helm chart
So if you know Kubernetes then after you can start learning about Helm chart because Helm chart is built to manage your Kubernetes task, so you should know Kubernetes before you start learning Helm chart.
How Helm chart comes into the picture, so, first of all, you have your application which you might have developed using some programming language it can be java, angular node.js vue.js, python or any programming language.
okay everything seems simple but who is going to manage Kubernetes?
The answer is a Helm chart. So Helm chart will help you to manage Kubernetes tasks so it is kind of an automation tool or automation framework which helps you to automate this kind of a Kubernetes task which you do daily, so Helm chart will help you in that case.
But if you are a beginner then I would not recommend going to learn Helm chart directly instead -
(Note - If you are already aware about Kuberntes and Docker then you can read more on - Getting Started with Helm Chart )
Okay since we have talked about all the component and the two concepts like continuous delivery and availability so now I would like you to evaluate yourself -
- What you know?
- What you want to know more?
- What you want to learn more?
If you are not familiar and if you are an absolute Beginner here then I would highly recommend learning something about Git or bitbucket or svn because these are the versioning tool which is necessary for you if you want to go into the DevOps.
8. Linux Bash Scripting
One more thing which I would like to mention is you should command your Linux also.
Because you're going to interact with the Linux server quite a lot if you are going to be a DevOp.
You should know and have to be a little bit fluent with your Linux command and because you need to perform all this operation on a terminal that is Putty.
For operating Putty, you should know the Linux command on your fingertips so if you don't know Linux command and if you are not very good with the Linux command then i would highly encourage you to learn some Linux basics.
These are my key giveaways like if you want to start learning your DevOps then focus on these components/topics and then go for some higher topics like
If you are an absolute beginner then go for Kubernetes installation on ubuntu and CentOS and how you gonna set up the Kubernetes cluster by yourself. Then go for more advanced topics like AWS or Google cloud platform but these are like a very later stage.
If you know the above concepts very well then it's really helpful to perform this kind of operation on a cloud but since if I'm assuming you you are a very beginner and so I would highly encourage you to learn these concepts before you jumping to some cloud platform or AWS so I hope you can start learning something after evaluating yourself like where you stand and which tool you want to focus and which component you want to focus on first.
If you have any questions then please reach out to me on -