Interview-1: DevOps Interview Questions

Basics of DevOps, CI/CD, IaC, Container, Docker, K8S, Jenkins

What is DevOps ?

In simple words- The engineering discipline of optimizing both Development and Operations to enable the realization of business goals through rapid feedback, stable, responsive and flexible IT.

In just 3 words we can say- “Better“, “Faster“ and “Cheaper“. If you would like to achieve all these 3 things, then DevOps is the one.

Basically, the DevOps engineer works starts from the initial stage of SDLC only i.e., from the Planning > Analysis > Design > Implementation > Testing & Integration > Maintenance.

Here’s, how the DevOps cycle looks like-

CI/CD (Continuous Integration/Continuous Delivery)-

  • Continuous Integration- Let’s say, a team of developers are building a software by writing a different part of functionality of that software, once done they will put all those changes in a version control (i.e., Git, GitHub, Azure DevOps). The CI server will check for the “Check-In“ and then it will create the “Build“, which will get distributed across multiple delivery agents.

    • Define- Automating the process of merging code changes from multiple contributors into a single project.
  • Continuous Delivery- Once the delivery of that “Build”, gets into a environment (i.e., Test, Dev, UAT), that is called a CD.

    • Define- Part of the software development process that involves delivering applications to users.

Continuous Delivery vs Continuous Deployment-

Continuous Delivery (CD)- Automates the software release process but having the manual intervention for the production release.

Continuous Deployment (CD)- Fully automates the release process with no manual approval.

Infrastructure as Code (IaC)-

In the old days, when we were having just 1 App Server, 1 Web Server and 1 DB Server, at that point of time, it was easy to install the OS, software’s, all pre-requisites and maintain those things at one infrastructure. But, when the demand get’s increases and we need to perform these operations on multiple App/Web/DB Servers, then “CHEF, PUPPET, ANSIBLE“ comes into the picture, by using these tools we can automate the process of creating multiple infrastructure.

In simple words, we are having some automated scripts and we are using the different serves and cloud platforms to build multiple infrastructure in one go.

  • Define- Infrastructure as Code (IaC) is a DevOps practice that uses code to manage infrastructure instead of manual processes.

  • Tools-

    • Terraform

    • Ansible

    • Puppet

    • Chef

    • AWS CloudFormation

    • AWS ResourceManager

Container-

Now, when IaC get’s complicated, the concept of Container got introduced, let’s see with an example-

Suppose, you just need a package which should consist of very basic things like some pre-requisites software, Windows OS, ability to install some WAR/JAR file, TOMCAT that’s it. So, instead of having a bulky and complex package, we will opt for a container which will only contain those stuff. We will take that container and will proceed with our workflow. On our daily, we can compare it with our ZIP-LOCK Pouches, in which we are caring the stuff, which is required for that particular period of time.

  • Define- Containers in DevOps are lightweight, portable environments that encapsulate an application and all its dependencies.

  • Software’s-

    • Docker

    • AWS ECS

    • RED HAT OPENSHIFT

Docker-

  1. Docker is a set of Platform as a service product that uses OS-level virtualization to deliver software in packages called containers.

  2. Docker is an open platform for developing, shipping, and running applications.

Container vs Docker-

A container is a unit of software that runs applications, while Docker is a platform that helps create and run containers.

Kubernetes(k8s)-

When we started using the containers and again now we are having multiple containers, maybe around 50. Then, at this point of time, it will be difficult to manage them like which container is up and running, which container went down and why. So now, the Container Management concept came into the picture.

Container Management Tools-

  • Kubernetes

  • Docker Swarm

  • Mesos

  • Nomad

  • Rancher Labs

Using these tools we can get the details about which containers are down/up & running, reaching their threshold (in terms of memory, RAM, disk space).

  • Define- Kubernetes is considered an orchestration tool because it automates the deployment, scaling, management, and networking of containerized applications across a cluster of servers.

But still we need to define container range, where system container is located…etc.!! And Here, Cloud came into picture i.e., Serverless Computing (Serverless computing is a cloud-based model for building and running applications without managing servers.).

Jenkins-

  • It is an open-source automation server used for software development’s continuous integration and delivery (CI/CD).

  • Using Jenkins, we can automate the processes like after every 5mins the report should get generated and all the reports generated in an hours, should get transferred to the client end using the pipeline.

  • Jenkins is flexible and we can add the n no.of plugins you want to add in it.

Source

Happy Learning!! 😁