DevOps 101: All (kind of) you need to know about DevOps

Vlad Antsitovich
8 min readMay 27, 2022

--

If you are a developer DevOps is something that you cannot avoid. It is a really big part of the software development process and understanding it can help you to bring your care up.

DevOps is not something to add complication to your life rather it’s something to make your life a lot easier.

Alert: It’s not article about how to became a DevOps Engineer, it is about how to make you more confident in this. And I really hope you can find this article really helpful.

But if you want to become a DevOps Engineer here is Step by step guide for you.

I recommend to check out this DevOps comprehensive course for beginners where you can cover a lot of key terms and technologies.

Also check out From Zero to DevOps Engineer — DevOps Roadmap for YOUR specific background

And if you want to learn more check out Atlassian article and RedHat topic.

Introduction to DevOps

What is DevOps?

DevOps is a combination of software developers (dev) and operations (ops).

Check out What is DevOps? explanation video.

So basically DevOps is a set of practices, tools, and a cultural philosophy that automate and integrate the processes between software development and IT teams.

DevOps is all about the unification and automation of processes, and DevOps engineers are instrumental in combining code, application maintenance, and application management.

Check out DevOps Best Practices and Anti-Patterns article by Spacelift.

I would also recommend to take a look at DevOps is dead. Embrace platform engineering talk.

What is DevSecOps?

DevSecOps stands for development, security, and operations.

DevSecOps means thinking about application and infrastructure security from the start. It also means automating some security gates to keep the DevOps workflow from slowing down.

Check out What is DevSecOps? explanation video.

What is Site Reliability Engineering (SRE)?

Check out What is Site Reliability Engineering (SRE)? explanation video.

To understand the difference between DevOps and SRE check out DevOps vs. SRE explanation video.

Configuration Management

Configuration Management — is defining, controlling, releasing, changing, documenting, and reporting the configuration of items in a system. As a result Configuration Management is an important DevOps process.

Without proper Configuration Management we cannot properly build, test, maintain or support a system.

DevOps Tools

Here is a great article about DevOps Tools you should definitely check out.

DevOps Best Practices

CI/CD

CI/CD introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment.

CI (Continuous Integration)

The CI always refers to continuous integration, which is an automation process for developers. Successful CI means new code changes to an app are regularly built, tested, and merged to a shared repository.

Check out What is Continuous Integration? explanation video.

CD (Continuous Delivery and Continuous Deployment)

The CD refers to continuous delivery and/or continuous deployment, which are related concepts that sometimes get used interchangeably. Both are about automating further stages of the pipeline, but they’re sometimes used separately to illustrate just how much automation is happening

Source: https://www.redhat.com/en/topics/devops/what-is-ci-cd

Check out What is Continuous Delivery? explanation video.

Also check out Continuous Deployment vs. Continuous Delivery explanation video.

Continuous Testing

Check out What is Continuous Testing? explanation video.

CI/CD pipeline

A CI/CD pipeline is a series of steps that must be performed in order to deliver a new version of software. CI/CD pipelines are a practice focused on improving software delivery throughout the software development life cycle via automation.

Check out more about CI/CD pipeline.

Also check out Practical Tips & Tricks for CI/CD Success video.

CI/CD Tools

CI/CD tools can help a team automate their development, deployment, and testing. Some tools specifically handle the integration (CI) side, some manage development and deployment (CD), while others specialize in continuous testing or related functions.

There is a lot of CI/CD platforms, but in this article I will only cover GitHub Actions.

GitHub Actions

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD.

Check out How to build a CI/CD pipeline with GitHub Actions in four simple steps video.

Deployment Strategies

Deployment strategies define how you want to deliver your software.

There are various types of deployment strategies but here we will look only 2 most popular: Blue/Green Deployment and Canary Deployment.

Also check out Application deployment and testing strategies and Understand Deployment Strategies articles.

Infrastructure as Code (IaC)

Infrastructure as Code (IaC) is the managing and provisioning of infrastructure through code instead of through manual processes.

With IaC, configuration files are created that contain your infrastructure specifications, which makes it easier to edit and distribute configurations.

Check out What Does Infrastructure as Code Mean? explanation video.

Hypervisor

A hypervisor is computer software or hardware that enables you to host multiple virtual machines. Each virtual machine is able to run its own programs. A hypervisor allows you to access several virtual machines that are all working optimally on a single piece of computer hardware.

Check out What is Hypervisor? explanation video.

Virtual Machines

Check out Virtualization and What is a virtual machine? explanation videos.

Containerization

Containerization is the packaging together of software code with all it’s necessary components like libraries, frameworks, and other dependencies so that they are isolated in their own “container.”

Check out Containerization explanation video.

Virtual Machines vs Containers

They are both can solve the same problem but they approach it differently.

VMs are the larger of the two, typically measured by the gigabyte and containing their own OS, which allows them to perform multiple resource-intensive functions at once. Docker Containers is much smaller and faster than Virtual Machines.

Check out Virtual Machines vs Containers explanation video.

Of course, we have Pros and Cons to using Containers and VMs, but we will not dive into that.

https://www.docker.com/resources/what-container

Docker

Docker helps us to solve the “it works on my machine” problem.

It’s common problem where your application can work on your environment/machine but other developers can’t run it because they get strange errors. For example, they forgot to install some tool or add a file that they need. This is why Docker was created.

Docker is a platform that is built on top of Linux concepts for building, running and shipping applications. It allows us to use consistently develop, test, and run our applications at each stage. It’s like we use the same environment/machine for each stage of our development, testing, and shipping.

Docker terms we need to know:

  • Docker Image is what we use to create your running container. It’s just a template that we use to create and run Docker Container.
  • Dockerfile is a file that includes instructions on how to build a Docker Image.
  • Docker Container is an isolated running an instance of your Docker Image environment that allows you to package your application and its dependencies in an easy-to-share way. It is portable, isolated, and lightweight. You can use Docker Image to instantiate as many containers as you want. You can think about Docker Container as like a box that contains everything your application needs to run.

How to use Docker?

Here few steps we need to start using Docker:

  1. Install Docker
  2. Run Docker Container from the Docker Image (you can use you own Docker Image or get it from DockerHub)

Note: To “Dockerize” your application just simply add the file with the name: Dockerfile. This Docker file should include all instructions that your application needs. So instead of directly running your application like npm run dev we tell the Docker to run it and set up everything we need.

I recommend checking out Docker Tutorial for Beginners [FULL COURSE in 3 Hours]

Dockerfile

RUN is an image build step, the state of the container after a RUN command will be committed to the container image. A Dockerfile can have many RUN steps that layer on top of one another to build the image.

CMD is the command the container executes by default when you launch the built image. A Dockerfile will only use the final CMD defined. The CMD can be overridden when starting a container with docker run $image $other_command.

Check out useful docker commands.

Docker Networking

One of the reasons Docker containers and services are so powerful is that you can connect them together. Check out Docker Networking.

Docker Compose

Compose is a tool for defining and running multi-container Docker applications. Each of the containers run in isolation but can interact with each other when required.

docker manages single containers

docker-compose manages multiple container applications

Learn more about Docker: [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12].

Automation and Orchestration

Automation is about doing a task automatically instead of do it manually.

Orchestration is basically just a bunch of automation tasks all put together into one big ecosystem or system.

Kubernetes (k8s)

Kubernetes is an open-source orchestration system for automating the deployment, scaling, and management of containerized applications.

Kubernetes provides an API to control how and where those containers will run.

Check out What is Kubernetes? and Kubernetes 101 explanation videos.

I highly recommend checking out Kubernetes: The Documentary. Here is Part 1 and Part 2

And here is a good Kubernetes Crash Course for Absolute Beginners.

To learn more about Kubernetes check out more resources: [1], [2], [3], [4]

Kubernetes vs. Docker

The conversation around Kubernetes vs. Docker is often framed as either-or: should I use Kubernetes or Docker? This is like comparing apples to apple pie, and it’s a common misconception that you must choose one or the other.

Check out Kubernetes vs. Docker explanation video.

Helm

Helm is the best way to find, share, and use software built for Kubernetes. Helm helps you manage Kubernetes applications.

Check out Helm explanation video.

If you want to learn more about Helm here is a good course for you.

Terraform

Terraform is an open-source Infrastructure as Code (IAC) tool that can provision resources in the cloud.

Check out Terraform explanation video.

If you want to learn more about how to use Terraform here is Complete Terraform Course — From BEGINNER to PRO!

GitOps

GitOps is an evolution of Infrastructure as Code (IaC) and a DevOps best practice that leverages Git as the single source of truth. It’s operational framework that takes DevOps best practices used for application development such as version control, collaboration, compliance, and CI/CD tooling, and applies them to infrastructure automation. It is used to automate the process of provisioning infrastructure.

GitOps = IaC + MRs/PRs + CI/CD

IaC is a version control system agnostic. GitOps, on the other hand, uses only Git.

Check out What is GitOps? explanation video.

Wow, you may be overwhelmed right now but doesn’t it cool? As I said before DevOps is a really big topic and now you know a good piece of it. Thanks for reading this article and see you later!

--

--

Responses (2)