DevOps Interview Questions: Prepare and ace your way through the interview.
What is the need for DevOps?
In my opinion, this answer should start by explaining the general industry trend. Rather than releasing big batches of features at once, companies are attempting to gauge consumer response to features one by one through a series of releases. There are many advantages that arise from these improvements like quick feedback from customers, increased quality of software, etc. and that all leads to high customer satisfaction.
To achieve this, companies are required to:
- Increase deployment frequency
- Lower failure rate of new releases
- Shortened lead time between fixes
- Faster mean time to recovery in the event of new release crashing
DevOps fulfils all these requirements and helps in achieving seamless software delivery.
How is DevOps different from Agile / SDLC?
Agile is a set of values and principles concerning how to develop, for example, software. you can follow the Agile values and principles in order to create software, but you should be aware that it may only work in the developer’s laptop or in a test environment. If you want to streamline the process of delivering your software and efficiently execute it within your production infrastructure, you need DevOps tools and techniques.
Whereas Agile software development methodology is only concerned with the development of software, DevOps focuses on the development and deployment of software as well as operational concerns like operational reliability and operational security.
Which are the top DevOps tools?
The most popular DevOps tools are mentioned below:
- Git : Version Control System tool
- Jenkins : Continuous Integration tool
- Selenium : Continuous Testing tool
- Puppet, Chef, Ansible : Configuration Management and Deployment tools
- Nagios : Continuous Monitoring tool
- Docker : Containerization tool
How do all these tools work together?
Here is a generic logical flow which would automate delivery and streamline work. However, depending on your organizational requirements, the flow may be slightly different.
- Developers produce code and that code is managed by tools like Git and others. Programmers will submit their code to the Git repository and if there are any changes to it, it will be committed to this repository.
- Jenkins retrieves this code from the repository with the Git plugin and then builds it with tools like Ant or Maven.
- Configuration management tools like puppet make deployment & provisioning of the testing environment and then Jenkins pushes the tested code to the test environment, on which testing is performed using tools like selenium.
- After testing the code, Jenkins sends it to the production server for deployment. The production server is maintained with the help of a tool like Puppet.
- Upon return from deployment, It is monitored by Nagios and similar software.
- Docker provides an environment for testing to see if a specific feature is working.
What are the advantages of DevOps?
Technical benefits:
- Continuous software delivery
- Less complex problems to fix
- Faster resolution of problems
Business benefits:
- Faster delivery of features
- More stable operating environments
- More time available to add value (rather than fix/maintain)
Mention some of the core benefits of DevOps?
- aster development of software and quick deliveries.
- DevOps methodology is flexible and adaptable to changes easily.
- Compared to the previous software development models confusion about the project is decreased due to which the product quality is increased.
- The gap between the development team and operation team is bridged. i.e, the communication between the teams has been increased.
- Efficiency is increased by the addition of automation of continuous integration and continuous deployment.
- Customer satisfaction is enhanced.
What is the most important thing DevOps helps us achieve?
The primary objective of DevOps is to help get updates into production as quickly as possible while minimizing the risks of software quality assurance and compliance. For more on this, check out this DevOps tutorial blog.
You can, of course, highlight some of the additional positive effects of DevOps such as improved communications between teams (e.g. Ops and Dev team), or collaboration that yields higher quality software and a higher degree of customer satisfaction.
Explain with a use case where DevOps can be used in industry/ real-life.
There are a lot of industries that use DevOps, so you can talk about any of those and then reference an example as follows
Etsy is a peer-to-peer e-commerce website which specialises in vintage and handmade goods. As well as well as custom-manufactured goods. The site frequently faces downtime. That experience left millions of Etsy users who sold their wares on the website, their shops experiencing significant drops in revenue, in potential danger of departing for another platform.
Under the tutelage of a new technical management team, Etsy transitioned from its waterfall model to a more agile approach, releasing new updates twice a week that impacted site operations for hours at a time. Today, Etsy has automated deployments and delivers 50 updates a day with less downtime.
Explain the different phases in DevOps methodology?
- Plan – In this stage, all the requirements of the project and everything regarding the project like time for each stage, cost, etc are discussed. This will help everyone in the team to get a brief idea about the project.
- Code – The code is written over here according to the client’s requirements. Here codes are written in the form of small codes called units.
- Build – Building of the units is done in this step.
- Test – Testing is done in this stage and if there are mistakes found it is returned for re-build.
- Integrate – All the units of the codes are integrated into this step.
- Deploy – codeDevOpsNow is deployed in this step on the client’s environment.
- Operate – Operations are performed on the code if required.
- Monitor – Monitoring of the application is done over here in the client’s environment.
What are the KPIs that are used for gauging the success of a DevOps team?
KPI Means Key Performance Indicators are used to measure the performance of a DevOps team, identify mistakes and rectify them. This helps the DevOps team to increase productivity and which directly impacts revenue.
There are many KPIs which one can track in a DevOps team. Following are some of them:
- Change Failure rates: This is used to measure the number of failures in deployments.
- Meantime to recovery (MTTR): The time is taken to recover from a failed deployment.
- Lead time: This helps to measure the time taken to deploy on the production environment.
- Deployment frequency: This measures how frequently a new feature is deployed.
- Change volume: This is used to measure how much code is changed from the existing code.
- Cycle time: This is used to measure total application development time.
- Customer Ticket: This helps us to measure the number of errors detected by the end-user.
- Availability: This is used to determine the downtime of the application.
- Defect escape rate: This helps us to measure the number of issues that are needed to be detected as early as possible.
- Time of detection: This helps you understand whether your response time and application monitoring processes are functioning correctly.