Interview Questions Flashcards
- What do you know about DevOps?
https://www.simplilearn.com/tutorials/devops-tutorial/devops-interview-questions
Be Creative:deploy back with azure and front with aws using IaC, Terraform
Your answer must be simple and straightforward. Begin by explaining the growing importance of DevOps in the IT industry. Discuss how such an approach aims to synergize the efforts of the development and operations teams to accelerate the delivery of software products, with a minimal failure rate. Include how DevOps is a value-added practice, where development and operations engineers join hands throughout the product or service lifecycle, right from the design stage to the point of deployment.
- How is DevOps different from agile methodology?
DevOps is a culture that allows the development and the operations team to work together. This results in continuous development, testing, integration, deployment, and monitoring of the software throughout the lifecycle.
Check Images
Agile is a software development methodology that focuses on iterative, incremental, small, and rapid releases of software, along with customer feedback. It addresses gaps and conflicts between the customer and developers.
DevOps addresses gaps and conflicts between the Developers and IT Operations.
- Which are some of the most popular DevOps tools?
Selenium Puppet Chef Git Jenkins Ansible Docker
Check them out
- 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. Getting a rough picture of the development process is always a good idea.
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 - This is the most crucial step of the application development. Test the application and rebuild, if necessary.
Integrate - Multiple codes from different programmers are integrated into one.
Deploy - Code is deployed into a cloud environment for further usage. It is ensured that any new changes do not affect the functioning of a high traffic website.
Operate - Operations are performed on the code if required.
Monitor - Application performance is monitored. Changes are made to meet the end-user requirements.
*Check Image**
- Mention some of the core benefits of DevOps.
The core benefits of DevOps are as follows:
Technical benefits Continuous software delivery Less complex problems to manage Early detection and faster correction of defects Business benefits Faster delivery of features Stable operating environments Improved communication and collaboration between the teams
- How will you approach a project that needs to implement DevOps?
The following standard approaches can be used to implement DevOps in a specific project:
Stage 1
An assessment of the existing process and implementation for about two to three weeks to identify areas of improvement so that the team can create a road map for the implementation.
Stage 2
Create a proof of concept (PoC). Once it is accepted and approved, the team can start on the actual implementation and roll-out of the project plan.
Stage 3
The project is now ready for implementing DevOps by using version control/integration/testing/deployment/delivery and monitoring followed step by step.
By following the proper steps for version control, integration, testing, deployment, delivery, and monitoring, the project is now ready for DevOps implementation.
- What is the difference between continuous delivery and continuous deployment?
- Continuous Delivery 2.Continuous Deployment
- Ensures code can be safely deployed on to production 2.Every change that passes the automated tests is deployed to production automatically
- Ensures business applications and services function as expected 2.Makes software development and the release process faster and more robust
- Delivers every change to a production-like environment through rigorous automated testing 2.There is no explicit approval from a developer and requires a developed culture of monitoring
Check Image
- What is the role of configuration management in DevOps?
- Enables management of and changes to multiple systems.
- Standardizes resource configurations, which in turn, manage IT infrastructure.
- It helps with the administration and management of multiple servers and maintains the integrity of the entire infrastructure.
- How does continuous monitoring help you maintain the entire architecture of the system?
Check Image
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.
- 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.
- Large partner ecosystem - AWS supports a large ecosystem of partners that integrate with and extend AWS services.
- Name three important DevOps KPIs.
- Meantime to failure recovery - This is the average time taken to recover from a failure.
- Deployment frequency - The frequency in which the deployment occurs.
- Percentage of failed deployments - The number of times the deployment fails.
- Explain the term “Infrastructure as Code” (IaC) as it relates to configuration management.
- Writing code to manage configuration, deployment, and automatic provisioning.
- Managing data centers with machine-readable definition files, rather than physical hardware configuration.
- Ensuring all your servers and other infrastructure components are provisioned consistently and effortlessly.
- Administering cloud computing environments, also known as infrastructure as a service (IaaS).
- How is IaC implemented using AWS?
Start by talking about the age-old mechanisms of writing commands onto script files and testing them in a separate environment before deployment and how this approach is being replaced by IaC. Similar to the codes written for other services, with the help of AWS, IaC allows developers to write, test, and maintain infrastructure entities in a descriptive manner, using formats such as JSON or YAML. This enables easier development and faster deployment of infrastructure changes.
- Why Has DevOps Gained Prominence over the Last Few Years?
Before talking about the growing popularity of DevOps, discuss the current industry scenario. Begin with some examples of how big players such as Netflix and Facebook are investing in DevOps to automate and accelerate application deployment and how this has helped them grow their business. Using Facebook as an example, you would point to Facebook’s continuous deployment and code ownership models and how these have helped it scale up but ensure the quality of experience at the same time. Hundreds of lines of code are implemented without affecting quality, stability, and security.
Your next use case should be Netflix. This streaming and on-demand video company follow similar practices with fully automated processes and systems. Mention the user base of these two organizations: Facebook has 2 billion users while Netflix streams online content to more than 100 million users worldwide.
These are great examples of how DevOps can help organizations to ensure higher success rates for releases, reduce the lead time between bug fixes, streamline and continuous delivery through automation, and an overall reduction in manpower costs.
We will now look into the next set of DevOps Interview Questions that includes - Git, Selenium, Jenkins.
- What are the fundamental differences between DevOps & Agile?
The main differences between Agile and DevOps are summarized below:
- Characteristics
- Agile
- DevOps
- Work Scope
- Only Agility
- Automation needed along with Agility
- Focus Area
- Main priority is Time and deadlines
- Quality and Time management are of equal priority
- Feedback Source
- The main source of feedback - customers
- The main source of feedback - self (tools used for monitoring)
- Practices or Processes followed
- Practices like Agile Kanban, Scrum, etc., are followed.
- Processes and practices like Continuous Development (CD), Continuous Integration (CI), etc., are followed.
- Development Sprints or Release cycles
- Release cycles are usually smaller.
- Release cycles are smaller, along with immediate feedback.
- Agility
- Only development agility is present.
- Both in operations and development, agility is followed.
- What are the anti-patterns of DevOps?
Patterns are common practices that are usually followed by organizations. An anti-pattern is formed when an organization continues to blindly follow a pattern adopted by others but does not work for them. Some of the myths about DevOps include:
- Cannot perform DevOps → Have the wrong people
- DevOps ⇒ Production Management is done by developers
- The solution to all the organization’s problems ⇒ DevOps
- DevOps == Process
- DevOps == Agile
- Cannot perform DevOps → Organization is unique
- A separate group needs to be made for DevOps
- What are the benefits of using version control?
Here are the benefits of using Version Control:
- All team members are free to work on any file at any time with the Version Control System (VCS). Later on, VCS will allow the team to integrate all of the modifications into a single version.
- The VCS asks to provide a brief summary of what was changed every time we save a new version of the project. We also get to examine exactly what was modified in the content of the file. As a result, we will be able to see who made what changes to the project.
- Inside the VCS, all the previous variants and versions are properly stored. We will be able to request any version at any moment, and we will be able to retrieve a snapshot of the entire project at our fingertips.
- A VCS that is distributed, such as Git, lets all the team members retrieve a complete history of the project. This allows developers or other stakeholders to use the local Git repositories of any of the teammates even if the main server goes down at any point in time.
- Describe the branching strategies you have used.
To test our knowledge of the purpose of branching and our experience of branching at a past job, this question is usually asked.
Below topics can help in answering this DevOps interview question -
- Release branching - We can clone the develop branch to create a Release branch once it has enough functionality for a release. This branch kicks off the next release cycle, thus no new features can be contributed beyond this point. The things that can be contributed are documentation generation, bug fixing, and other release-related tasks. The release is merged into master and given a version number once it is ready to ship. It should also be merged back into the development branch, which may have evolved since the initial release.
- Feature branching - This branching model maintains all modifications for a specific feature contained within a branch. The branch gets merged into master once the feature has been completely tested and approved by using tests that are automated.
Task branching - In this branching model, every task is implemented in its respective branch. The task key is mentioned in the branch name. We need to simply look at the task key in the branch name to discover which code implements which task.
- Can you explain the “Shift left to reduce failure” concept in DevOps?
Shift left is a DevOps idea for improving security, performance, and other factors. Let us take an example: if we look at all of the processes in DevOps, we can state that security is tested prior to the deployment step. We can add security in the development phase, which is on the left, by employing the left shift method. [will be depicted in a diagram] We can integrate with all phases, including before development and during testing, not just development. This most likely raises the security level by detecting faults at an early stage.
- What is the Blue/Green Deployment Pattern?
This is a method of continuous deployment that is commonly used to reduce downtime. This is where traffic is transferred from one instance to another. In order to include a fresh version of code, we must replace the old code with a new code version.
The new version exists in a green environment and the old version exists in a blue environment. After making changes to the previous version, we need a new instance from the old one to execute a newer version of the instance.
- What is Continuous Testing?
Continuous Testing constitutes the running of automated tests as part of the software delivery pipeline to provide instant feedback on the business risks present in the most recent release. In order to prevent problems in step-switching in the Software delivery life-cycle and to allow Development teams to receive immediate feedback, every build is continually tested in this manner. This results in significant increase in speed in a developer’s productivity as it eliminates the requirement for re-running all the tests after each update and project re-building.
- What are the benefits of Automation Testing?
Some of the advantages of Automation Testing are -
Helps to save money and time.
Unattended execution can be easily done.
Huge test matrices can be easily tested.
Parallel execution is enabled.
Reduced human-generated errors, which results in improved accuracy.
Repeated test tasks execution is supported.
- What is Automation Testing?
Test automation or manual testing Automation is the process of automating a manual procedure in order to test an application or system. Automation testing entails the use of independent testing tools that allow you to develop test scripts that can be run repeatedly without the need for human interaction.
- What are the benefits of Automation Testing?
Some of the advantages of Automation Testing are -
- Helps to save money and time.
- Unattended execution can be easily done.
- Huge test matrices can be easily tested.
- Parallel execution is enabled.
- Reduced human-generated errors, which results in improved accuracy.
- Repeated test tasks execution is supported.
- How to automate Testing in the DevOps lifecycle?
Developers are obliged to commit all source code changes to a shared DevOps repository.
Every time a change is made in the code, Jenkins-like Continuous Integration tools will grab it from this common repository and deploy it for Continuous Testing, which is done by tools like Selenium.
- Why is Continuous Testing important for DevOps?
Any modification to the code may be tested immediately with Continuous Testing. This prevents concerns like quality issues and release delays that might occur whenever big-bang testing is delayed until the end of the cycle. In this way, Continuous Testing allows for high-quality and more frequent releases.
- What are the key elements of Continuous Testing tools?
Continuous Testing key elements are:
- Test Optimization - It guarantees that tests produce reliable results and actionable information. Test Data Management, Test Optimization Management, and Test Maintenance are examples of aspects.
- Advanced Analysis - In order to avoid problems from occurring in the first place and to achieve more within each iteration, it employs automation in areas like scope assessment/prioritization, changes effect analysis, and static code analysis.
- Policy Analysis - It guarantees that all processes are in line with the organization’s changing business needs and that all compliance requirements are met.
- Risk Assessment - Test coverage optimization, technical debt, risk mitigation duties, and quality evaluation are all covered to guarantee the build is ready to move on to the next stage.
- Service Virtualization - Ensures that real-world testing scenarios are available. Service visualisation provides access to a virtual representation of the needed testing phases, ensuring its availability and reducing the time spent setting up the test environment.
- Requirements Traceability - It guarantees that no rework is necessary and real criteria are met. To determine which needs require additional validation, are in jeopardy and performing as expected, an object evaluation is used.
- 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
* *Check Image**
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
- What is the git command that downloads any repository from GitHub to your computer?
Check Image