Top DevOps Interview Questions
1. What are the Benefits of DevOps
Benefits of DevOps are as follows:
- Release Velocity: Following DevOps practices for Software Development helps in increasing release velocity. We can release code to production more often.
- Shorter Development Cycle: With Devops approach, we have continuous software delivery. The complete Development cycle from design phase to deployment in productions becomes shorter.
- Defect Detection: With DevOps approach, we can identify the defects much earlier and the same can be fixed before releasing to production thus helps to increase the quality of software.
- Fast Recovery from Failure: In any case of Failure, we can recover very fast with the DevOps process.
- Collaboration: With DevOps silos between development and operations is broken that removes the wall of confusion and better collaboration between dev and ops helps in more productive teams.
2. What are the DevOps tools that you use?
We use following tools in DevOps
- Jenkins: Jenkins is a popular open source automation server used as a continuous integration tool. We can build, test, run, deploy and deliver software.
- GIT: Version Control System that helps to track code changes.
- Docker: It is popular Containerization tool.
- Ansible, Puppet or Chef: Popular configuartion Management tools.
- Nagios: Nagios is used for Continuous monitoring and setting up of alerts based upon threshold values.
- Selenium: Continuos Testing tool.
3. Explain DevOps workflow in your Organization or How do all DevOps tools work together?
Below is the general logical flow in our organization:
- Jira tool is used for writing all the requirement and tasks and tracking them.
- Based on the assigned tasks, Developers develop the code and check-in the code in the GIT repository. GIT is the version control system.
- After the developer’s code is committed in the repository, Jenkins pulls this code from the repository and build it using Ant or Maven.
- Build process is automated using Jenkins.
- During the build process, automated tests run to validate the code checked in by the developer.
- Configuration Management tool like Puppet or Ansible is used to deploy and provision test environment and then Jenkins release this code in the test environment.
- Tools like selenium are used to test the code.
- Once the code is tested, next Jenkins send it for deployment on the production server.
- To Deploy the same code on multiple hosts, Docker images are used.
- Once the code is deployed to Production, it is monitored using Continuous Monitoring tools like Nagios.
4. What is CICD in DevOps?
CICD stands for Continuous Integration and Continuous Delivery.
Continuous Integration: It is development practice in which all the developers are required to integrate code into the main branch several times a day. Each code check-in is verified and an automated build is triggered and tested and it helps to detect errors early. Thus CI concept helps to remove the problem of finding later occurrences of issues.
Continuous Delivery: It is development practice by which software is delivered in shorter cycles. All the changes whether it is new features, configuration changes, bug fixes and moved to production safely and quickly that helps to achieve Low-risk releases, Faster time to market, higher quality software and reducing costs.
5. What is Version Control and its benefits?
Version Control is a system that records changes to a files over the time. It allows you to revert files to a previous state, revert entire project to a previous state, you can see who last modified a particular file and compare changes over the time.
Benefits of Version Control System(VCS):
- All the team members can work freely on any file at any time. Changes can be done later to a common version using VCS.
- Versioning is maintained by VCS, you can check any past version of file or project anytime.
- You can track what is changed in a particular file by which commit.
- Distributed VCS like GIT allows every team member to have the complete project as a local clone/repository.
6. Which VCS tool are you using?
You can describe about the VCS tool used in your environment. GIT and SVN are common Version Control systems.
7. What is GIT and what are its benefits?
GIT is a distributed version control system that helps to track changes to a file and revert back to any particular change or commit. By distributed, it implies that it does not rely upon a central server for storing all the code, files or project. Instead, each developer clones a copy of repository referred as local repository on his local machine so there is no danger of losing data in case of any server outage.
8. How do you take DevOps approach with Amazon Web Services?
As per DevOps, infrastructure is treated as code. AWS can help you to automate your infrastructure using services like CloudFormation, Terraform. We can use AWS cloudformation to create and deploy AWS resources by using templates. We can design our build process, which can create deployable units. All the dependencies and parameters can be passed in the templates. CloudFormation can read these templates and deploy the applications in the AWS cloud.
9. Which scripting languages you use for DevOps?
You can name the scripting language you are comfortable with and using in your environment. Some of the popular scripting languages are:
- Bash: On Unix based system, Bash or shell scripting is commonly used for automating things.
- Python: Python is very popular programming language that can also be used for automation.
- Perl: It can also be used for automation of tasks.
- Groovy: It is Java based and can be used for scripting purpose for build and automation tasks.
10. Which monitoring tool you use in your environment?
You can describe about the Monitoring tools used in your environment. Some of the popular monitoring tools are Nagios, zabbix, Prometheus etc.
11. What is use of Nagios?
Nagios is an open source tool to monitor IT infrastructure, systems, and network. We can configure alerts based upon threshold values for different critical components like CPU usage, memory consumption, disk space usage of file systems etc.
12. What is the difference between a container and Virtual Machine?
Virtual Machines are managed by a Hypervisor and represent hardware level Virtualization while containers do not have a hypervisor layer and they represent Operating system level virtualization. A container is lightweight compared to a VM.
13. What is a Docker container?
A docker container is a lightweight unit of software that packages up code and all its dependencies so that applications run quickly and works uniformly on all computing environments. Containers are created from docker images
We will update this post with more questions soon.