1. What is Devops?
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.
2. What is Continuous Integration?
Continuous integration is a software development practice where developers regularly merge their code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.
3. What is Continuous Delivery?
Continuous delivery is a software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage. When continuous delivery is implemented properly, developers will always have a deployment-ready build artifact that has passed through a standardized test process.
4. What is Infrastructure as Code?
Infrastructure as code is a practice in which infrastructure is provisioned and managed using code and software development techniques, such as version control and continuous integration. Thus, engineers can interface with infrastructure using code-based tools and treat infrastructure in a manner similar to how they treat application code. Because they are defined by code, infrastructure and servers can quickly be deployed using standardized patterns, updated with the latest patches and versions, or duplicated in repeatable ways.
5. What is Configuration Management?
Developers and system administrators use code to automate operating system and host configuration, operational tasks, and more. The use of code makes configuration changes repeatable and standardized. It frees developers and systems administrators from manually configuring operating systems, system applications, or server software.
6. What is continuous deployment?
Continuous deployment takes continuous delivery to the next level by having new changes in code integrated and delivered automatically into the release branch. More specifically, as soon as the updates passed all stages of the production pipeline, they are deployed directly to the end user without human intervention. Thus, to successfully utilize continuous deployment, the software artifacts must go through rigorously established automated tests and tools before deployed into the production environment.
7. What is continuous testing and its benefits?
Continuous testing is the practice of applying automated tests early, gradually and adequately in the software delivery pipeline. In a typical CI/CD workflow, builds are released in small batches. Therefore, it is impractical to manually perform test cases for each delivery. Automated continuous testing eliminates the manual steps and turn them into automated routines, which reduces human effort.
Benefits of continuous testing:
- Ensures the quality and speed of the builds.
- Enables faster software delivery and a continuous feedback mechanism.
- Detect errors as soon as they occur in the system.
- Reduce business risks. Evaluate potential problems before they become real problems.
8. What is version control and its uses?
Version control (or source control) is a repository in which all changes in the source code are stored and managed at all times. The version control provides an operating history of code development that allows developers to unwind if they made any mistakes, compare between versions and finalize with the best version of the code. All the code versions must be updated and checked into the version control, making it the single source of truth that is applicable for all environments.
9. What are the benefits of CI/CD?
– The combination of CI and CD unifies all code changes into one single repository and runs them through automated tests, thus fully develop the product throughout all phases and have it ready for deployment at all times.
– CI/CD enables organizations to roll out product updates as quickly, efficiently, and automatically as their customers expect them to be.
– CI/CD pipeline accelerates the release rate and reliability while mitigating the code changes and defects of your product. This will eventually result in much higher customer satisfaction.
10. Define a typical DevOps workflow
A typical DevOps workflow can be simplified into 4 stages:
– Version control: This is the stage in which the source code is stored and managed. The version control contains different versions of the code.
– Continuous Integration: In this step, developers start to build components and have them compiled, validated, then tested with code review, unit testing, and integration testing.
– Continuous Delivery: This is the next level of continuous integration, in which the release and testing processes are fully automated. CD ensures new releases are delivered quickly and sustainably to the end users.
– Continuous Deployment: After the application has successfully passed all testing requirements, it is automatically deployed on the production server for release without any human intervention.
11. List out some popular tools for DevOps?
Some of the popular tools for DevOps are
– ELK (Elasticsearch, Logstash, Kibana)
12. What is Chef?
It is a powerful automation platform which transforms infrastructure into code. In this tool, you can use write scripts that are used to automate processes.
13. Name some important network monitoring tools
Some most prominent network monitoring tools are:
– Icinga 2
14. What are the different phases in DevOps?
The various phases of the DevOps lifecycle are as follows:
– Plan: Initially, there should be a plan for the type of application that needs to be developed.
– Code: The application is coded as per the end-user requirements.
– Build: Build the application by integrating various codes formed in the previous steps.
– Test: Test the application and rebuild, if necessary.
– Integrate: Multiple code versions from different programmers are integrated into one.
– Deploy: Code is deployed into a production like environment for further usage.
– Operate: Operations are performed on the code if required.
– Monitor: Application performance is monitored. Changes are made to meet the end-user requirements.
15. How does continuous monitoring help you maintain the entire architecture of the system?
Continuous monitoring in DevOps is a process of detecting, identifying, and reporting any faults or threats in the entire infrastructure of the system.
– Ensures that all services, applications, and resources are running on the servers properly.
– Monitors the status of servers and determines if applications are working correctly or not.
– Enables continuous audit, transaction inspection, and controlled monitoring.
16. Explain the difference between a centralized and distributed version control system (VCS).
Centralized Version Control System
– All file versions are stored on a central server
– No developer has a copy of all files on a local system
– If the central server crashes, all data from the project will be lost
Distributed Control System
– Every developer has a copy of all versions of the code on their systems
– Enables team members to work offline and does not rely on a single location for backups
– There is no threat, even if the server crashes
17. Describe branching strategies you have used.
– Feature branching:
A feature branch model keeps all of the changes for a particular feature inside of a branch. When the feature is fully tested and validated by automated tests, the branch is then merged into master.
– Task branching:
In this model each task is implemented on its own branch with the task key included in the branch name. It is easy to see which code implements which task, just look for the task key in the branch name.
– Release branching:
Once the develop branch has acquired enough features for a release, you can clone that branch to form a Release branch. Creating this branch starts the next release cycle, so no new features can be added after this point, only bug fixes, documentation generation, and other release-oriented tasks should go in this branch. Once it is ready to ship, the release gets merged into master and tagged with a version number. In addition, it should be merged back into develop branch, which may have progressed since the release was initiated.
18. What is it shift left in Devops?
The traditional software development lifecycle when graphed on a paper has two sides, left and right. While the left side of the graph includes design and development, the right side includes production staging, stress testing, and user acceptance. To shift left in DevOps simply means the necessity of taking as many tasks on the right i.e. that typically happens toward the end of the application development process and incorporates them into earlier stages of a DevOps methodology.
19. Can you state and explain various key elements of continuous testing?
Various key elements of continuous testing are:
– Advanced analysis: Used for forecasting and predicting unknown future events
– Policy analysis: Meant for improving the testing process
– Requirement traceability: Refers to the ability to describe as well as follow the life of a requirement, from its origin to deployment
– Risk assessment: The method or process of identifying hazards and risk factors that can cause potential damage
– Service virtualization: Allows using virtual services instead of production services. Emulates software components for simple testing
– Test optimization: Improve the overall testing process
20. What is the difference between Asset Management and Configuration Management.
The process of monitoring as well as maintaining things of value to an entity or group is called an Asset Management.
Configuration Management refers to the process of controlling, identifying, planning for, and verifying the configuration items within service in support of Change Management.
21. What are the several KPIs used to gauge DevOps success?
KPIs is a contracted form of Key Performance Indicators. In order to measure the success of a DevOps process, several KPIs can be used. Some of the most popular ones are:
– Application performance
– Application usage and traffic
– The automated test pass percentage
– Change volume
– Customer tickets
– Defect escape rate
– Deployment frequency
– Deployment time
– Error rates
– Failed deployments
– Lead time
– Mean time to detection (MTTD)
– Meantime to recovery (MTTR)
22) What are the advantages of DevOps?
For this answer, you can use your past experience and explain how DevOps helped you in your previous job. If you don’t have any such experience, then you can mention the below advantages.
– Continuous software delivery
– Less complex problems to fix
– Faster resolution of problems
– Faster delivery of features
– More stable operating environments
– More time available to add value (rather than fix/maintain)
23) What is the difference between DevOps & Agile?
– Agility: DevOps provides agility in both Development and Operations but Agile provides agility in Development only.
– Processes/ Practices: Devops involves processes such as CI, CD and CT but Agile involves practices such as Agile Scrum and Agile Kanban.
– Release Cycles/ Development Sprints: DevOps involves smaller release cycles with immediate feedback but Agile involves smaller release cycles.
– Source of Feedback: In DevOps feedback is obtained from monitoring tools but in Agile feedback is obtained from customers.
– Scope of Work: In DevOps Agility and Automation are in scope but in Agile Agility is in scope.
24) What is the difference between continuous delivery and continuous deployment?
– Ensures code can be safely deployed on to production
– Ensures business applications and services function as expected
– Delivers every change to a production-like environment through rigorous automated testing
– Every change that passes the automated tests is deployed to production automatically
– Makes software development and the release process faster and more robust
– There is no explicit approval from a developer and requires a developed culture of monitoring
25) What is the role of AWS in DevOps?
AWS has the following role in DevOps:
– Flexible services: Provides ready-to-use, flexible services without the need to install or set up the software.
– Built for scale: You can manage a single instance or scale to thousands using AWS services.
– Automation: AWS lets you automate tasks and processes, giving you more time to innovate
– Secure: Using AWS Identity and Access Management (IAM), you can set user permissions and policies.