DevOps is not a thing! — Part I

Vibhanshu Biswas
9 min readFeb 20, 2021
Image credit: smartsheet.com

The working aspect of a DevOps engineer is vast hence this article has been divided in two parts so as to maintain the readability. This is the Part I of the article. If you wish to read the second half of this article then follow the below link.

I have heard a lot of people saying that they are learning DevOps. To these people I would like to extend my knowledge. First of all DevOps is not a thing nor a technology, rather it is a role where your job is to bridge the gap between your developers and the operations team. Yes in this role you own these two teams or at least you should think it that way. Because only then you will justify your role.

“DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.” — Amazon AWS

What I mean is that you want to deliver high quality and frequent software updates or products without harassing the developers and the Operation guys. So as we have established the intent of this role lets look at some tools which are going to make this job a bit easier on you.

Source Control

Image credit: dev.to

Source control is the heart of this software industry. If you are not using one then you are in a world of pain, believe me. Source control makes it easier to maintain source code for any software. All your developers work off a centralized repository where they save their code. You would argue -

“What’s in that? Why not use a simple server and put our code over there. Everyone can access it easily and it will be a safe house of our code”

Well it’s not that simple. A source control’s job is much more than that. It serves itself as a management tool to maintain code in individual branches as a snapshot. Where you can have multiple copies of code and experiment if you like so. It gives flexibility to developers to make trial and errors.

(To be honest I know a few organizations who still maintain excel sheets to manage their source code or the iterations that they made to it.) relatable?

Tools of trade:

  • Github
  • Gitlab
  • Bitbucket

Resources to extend your knowledge:

  • Git & GitHub Crash Course For Beginners
  • Learn git concepts, not commands

Tip: Start with Github, create a free repository, experiment a lot (like break stuff as much as possible). If you have ever been a developer create scenarios and solve them.

Software Environments

Image credit: toolsqa.com

If source control is the heart of the software industry then Software environments are the body of that heart. Without software environments our code can’t function and is useless. Before the software is made available to the consumers it needs to be developed, tested and then taken to the public. So for this purpose various environments are deployed to make it easier for the whole process to achieve its full efficiency. Why do we need it? Well for one thing lets say you dont want to upset your customer because you just wrote a bad piece of code and accidentally ran it on the production environment. Do you want that to happen?

Tools of trade:

  • NA

Resources to extend your knowledge:

Linux

linux-logo
Image credit: onlogic.com

Linux is an Operating system just like Microsoft Windows (If you did not know). Majority of all cloud infrastructure runs on Linux. Why so? Because it does not cost for licensing (well most of it). It is safe from common “viruses”. The best of all is the resource usage which is quite minimal (Ubuntu 18.04 server edition consumes ~110 MB on a fresh installation). And on Cloud all these factors matter a lot. So it makes it kind of an obvious choice for an organization. As resource usage is crucial on cloud one way to achieve this was to strip down the UI part of it.

“But how am I going to use it without a User interface?”

All the things are done with the help of Terminal or Console (command line interface a.k.a CLI) in Linux and almost everything is practically doable in terms of operations. So you don’t need to be a total geek about Linux, just a basic set of commands is great to get you started. Rest of the things will come with experience and at the time of need.

Tools of trade:

Resources to extend your knowledge:

  • Introduction to Linux — highly recommended for beginners
  • Important Linux Commands for Beginners: Linux Tutorial
  • Nano Editor Fundamentals
  • Vim Basics in 8 Minutes

Tip: Read or watch a small tutorial about Linux, install Linux in a virtual box or use the WSL in Windows 10 and start doing your things with terminal. If stuck just google and you will find a ton of free resources.

Cloud Services

Image credit: educba.com

Most of the Infrastructure that is in place or the internet that you use is deployed on the cloud (unless you are a financial or health institution — you guys are way too paranoid about your data leaks). Cloud service is nothing but a predefined set of services which perform a specific function provided by a Cloud provider. One such common service is a VM (virtual machine) where your code gets deployed such as services, web jobs, API, web servers etc. One of the leading markets of cloud services is Amazon Web Services or AWS in short. They offer a whopping 175 services to choose from. So do you need to master all of them or even all at once? The answer is ‘No’ because not all services are going to be applicable for your use case.

There are a few other Big fish in the ocean such as Microsoft Azure, Google cloud Platform, Alibaba Cloud, IBM cloud etc. But it’s good to start with AWS as it offers greater control and modularity in order to create Lego-like blocks, and also gives the very basic services which almost all the organizations use free for 12 months with a decent usage cap(Also the documentation is simple and very easy to follow). So you can master the following service.

Tools of trade:

  • EC2
  • EC2 auto scaling
  • S3 storage
  • EBS
  • Cloudfront
  • IAM
  • ELB
  • Route 53
  • Lambdas with SQS
  • Setting up basic web servers behind proxies such as Nginx and apache

Resources to extend your knowledge:

  • AWS Training Center
  • Installing Nginx
  • Route 53 — routing traffic
  • Static Sample website

Tip: Create a free account in AWS, find any sample web project and deploy it using EC2 by creating a web server and put it behind a proxy server. If serving a static site use Cloudfront to host. Just make sure that you are setting up permissions properly otherwise it might be exploited and can lead to a hefty bill.

Docker or Containerization

Image credit: cloudsavvyit.com

After the above set of tools are under your belt it is great to move towards Dockers or Containers. Containerization is a process where you package your environment and the business logic in an image file which can be run in a virtual environment. Docker is one such technology.

But why docker?

  1. Because you can have an environment setup as a predefined image
  2. You can easily run these docker images on your local system even for development.

Why is this great? Because it becomes the universal truth no matter which cloud service you are running it under or where. I may have gotten a bit carried away but the truth is that, you always want a level of consistency while running your piece of software and docker gives you that. You can be particularly sure that if it runs on your local machine then it certainly would run on your other software environments (excluding external setup issues). So it gives that level of confidence.

The true power of containerization comes with running these containers in a Docker swarm (Docker Swarm is an orchestration management tool that runs on Docker applications. It helps end-users in creating and deploying a cluster of Docker nodes.) or Kubernetes cluster (Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.). But they may be a bit advanced topics for you now. So rather concentrate on getting a command of docker first.

Tools of trade:

Resource to extend your knowledge:

  • Learn Docker in 12 Minutes 🐳
  • Docker Full Course — Learn Docker in 5 Hours | Docker Tutorial For Beginners | Edureka
  • Getting started with swarm mode
  • Learn Kubernetes Basics

Tip: Wrap your sample web app project in docker images and then host them on an EC2 instance or locally and make them communicate. After that move over to Docker swarm, understand how it functions then move to Kubernetes.

The working aspect of a DevOps engineer is vast hence this article has been divided in two parts so as to maintain the readability. This was the Part I of the article. If you wish to read the second half of this article then follow the below link.

This article was created in efforts to introduce the newbies in the field of DevOps as in various channels and forums I have encountered confusions that they have and don’t have a very picture of it. If you wish to improve this article I welcome your suggestions. Some of the topics have just been touched on a very surface level so if you do not agree with its facts then please let me know I will correct it :)

If you have more to discuss then please comment below or we can discuss this over my Instagram handle: i_m_vibh or my Twitter handle: VibhanshuBiswas

--

--

Vibhanshu Biswas

I like clean git branches, I love music and I love my servers specially the micro ones ❤