Ultimate CI CD DevOps Interview Questions (2022)
The move to modern application development and the need for rapid and continuous deployment make a strong DevOps-enabling platform.
To support this modern application architecture, the underlying middleware, runtime, and other application development resources, lifecycle management should be highly automated and abstract their complexity. Standardization and abstraction of systems not only make operations more effective in addressing developer needs but also help streamline the implementation process, thus improving the delivery of microservice-based applications.
In this post, questions from CI CD Interviews will be answered for Experienced and Freshers. We're trying to share our experience and learn how to help you make progress in your career.
Q: What is CI-CD?
Continuous Integration and continuous Delivery (CI/CD) is a set of software practices and techniques that enable the frequent release of small batches of code changes, with extensive visibility and traceability.
It typically involves the creation of a largely automated pipeline that orchestrates the build, test and deployment of software across staged environments, ultimately leading to deployment in production.
Q: What is Continuous Integration (CI)?
Continuous Integration (CI) is a software process in which developers often incorporate their code changes into a main code repository, triggering an automatic build and allowing teams to find bugs early in the development cycle, fix them, and test iteratively.
Depending on the size of the development team, these multiple builds could be running in parallel. Shorter build times lead to developer creativity that can breed innovation.
Q: What is Continuous Delivery?
Single Click Deployment : Continuous delivery is an extension of continuous integration that ensures you can efficiently and sustainably deliver new updates to your customers. which allowing you to deploy your app at any time by simply clicking a button.
Q: What is Continuous Deployment (CD)?
Fully Automated Pipeline : Continuous deployment takes continuous delivery a step further. So that any change that passes through all stages of your production pipeline is released to your customers using this method. no need for human interference, and only a failed test can prevent a new change from going into production.
Q: What is Continuous Testing (CT)?
- Continuous testing (CT) is like an armor in the CI/CD pipeline process. It buffers the developers by squashing bugs. It ensures that end-user experience remains uncompromised no matter how many releases happen.
- CT can also be called a safety net, as it protects the end user experience in spite of accelerated processes.
- Since it is a continuous process, it cannot be tagged at the end, but needs to be seamlessly interwoven into the software delivery pipeline.
- It establishes a stable test environment with valid test data at all stages of development
- Tests should be wide to adapt to an application's change, which affects functionality.
Q: Is Bamboo a CI CD tool?
Bamboo's an Atlassian CI/CD server. Bamboo enables developers to create, integrate and test source code automatically like other CI/CD servers, preparation of the app for deployment. In addition, Bamboo interacts with other tools such as Jira (project management) and Hipchat, from Atlassian (team communication).
Q: How do we manage and monitor Spring Boot application in production?
Spring Boot Actuator is a Spring Boot sub-project that adds monitoring and management capabilities for your production-ready apps. It offers a number of HTTP or JMX endpoints with which you can communicate.
The Prometheus (a tool for monitoring) endpoint is provided by the Spring Boot Actuator, which
regularly pulls this endpoint for metric data and offers graphic representation for data.
Grafana, which is rich in graphical representation, could also be used.
Refer Spring Boot Actuator + Prometheus + Grafana Example
Below is Grafana graph, which pulled data from Prometheus.
Q: What are benefits of CI-CD?
CI/CD offers several important benefits for development and test organizations:
- Faster identification and resolution of defects : CI/CD allows an elegant way to establish the appropriate quality gates in the development and testing process. A fast feedback loop to the developers ensures that bugs are addressed early in the development cycle
- Reduced overhead cost : Finding a bug at the development stage is the cheapest possible way to find it. If the same bug was to be fixed in any other environment, it would cost more. CI/CD requires some upfront overhead cost, but these are more than offset by the time and expense saved along the way.
- Better quality assurance : CI/CD enables QA teams to release deployable software at any point in time. Without it, projects are prone to delayed releases because of unforeseen issues which arise at any point in the traditional development and test process.
- Reduced assumptions : CI/CD replaces testing assumptions with knowledge, thereby eliminating all cross-platform errors at the development stage.
- Faster time to market : Faster test and QA cycles enable organizations to get quality products and services to market faster and more efficiently.
- Software health measurability : By establishing continuous testing into the automated integration process, software health attributes such as complexity can be tracked over time.
- Better project visibility : Frequent code integration provides the opportunity to identify trends in build success and failure and make informed decisions to address them. With CI/CD, dev and test teams can access real-time data on the code quality metrics to innovate new improvements and support decisions.
Checkout our related posts :
Q: What is DevOps?
DevOps can be defined as a culture that primarily focuses on improved collaboration, communication and integration between Dev and Ops teams. It is an umbrella term that is also described as a philosophy and cultural change that paves way for a paradigm shift.
DevOps principles not only enhance the performance of software development and operations, but also show a positive impact on the web service development and quality assurance aspects. DevOps lays a path for a culture of knowledge and information sharing that bridges communication gaps among IT teams, thus facilitating establishment and continuous delivery.
"By 2020, DevOps will evolve from a niche to a mainstream strategy employed by 25 percent of Global 2000 organizations," Gartner said in a report.
Q: What is the use of Ansible in DevOps?
Ansible is the most popular DevOps open source tool for IT Configuration Management, Deployment & Orchestration.
This tool is easy to use while still being powerful enough to automate complex multi-tier IT application environments.
Refer Ansible Interview Questions for more interview questions.
Q: How DevOps tools work together?
Below is a generic logical flow that automates it for a smooth delivery. However this flow may vary from organisation to organisation as required.
- The code is created by developers, and Version Control System software such as Git etc. manage this source code.
- This code is committed to the Git repository by developers and any modifications made to the code are committed to this repository.
- Jenkins uses the Git plugin to take this code out of the repository and build it using software like Ant or Maven.
- Configuration management software such as puppet deploy and test environment provisions and then Jenkins releases this code on the test environment in which testing is conducted using tools such as selenium.
- When the code has been tested, Jenkins sends it to the production server for deployment (even production servers are provided and managed by resources such as puppets).
- It is continuously tracked by tools like Nagios after deployment.
- Docker containers provide the test environment for testing the build features.
How does terraform integrate with github and public cloud?
The majority of businesses are migrating to the public cloud. Managing infrastructure in a secure and controlled manner is a critical step for businesses.
Check out this Terraform + GCP + Git Example to learn how to use terraform to provision infrastructure on GCP while keeping the infrastructure code in a github repository.
Q: Why is DevOps important? In software delivery, how can DevOps support teams?
Organizations have to redesign their product deployment processes in today's digitalised environment to be more stable and agile to keep up with the competition.
This is where the notion of DevOps comes into the frame. DevOps plays a key role in creating versatility and agility for the entire pipeline of software development, from design to implementation and to end-users. DevOps is the solution for the continuous updating and enhancement of goods to bring together a more streamlined and efficient operation.
Q: What are DevOps benefits?
DevOps is a pure Developer-Operations collaboration that provides improved process delivery, enhanced business agility and efficient integration for enterprise of any size. Below are Key DevOps Benefits :
- Improves quality and time for innovation
- Treats infrastructure as code
- Ensures smaller and faster deployments, ensuring faster time-to-market
- Improves ROI, the key to any business success
- Mitigates risk by reducing time to delivery
- Identifies problems and provides smooth and effective resolution
Q: How to implement database deployment automation with Liquibase tool? Liquibase provides database CI and streamlines the process of reworking database changes with deployment automation. Developers can handle database code the same way they treat application code with Liquibase, and verify an updated version of the database modification into source code control.
Liquibase is an open source database schema migration and version control tool. It supports most major databases and a variety of schema change file formats, including XML, SQL, YAML, and JSON. It is database vendor independent, which implies it is not dependent on any database-specific syntax. It has the ability to create database change documentation.
Refer Spring Boot + Liquibase Example for more details.
Q: What are DevOps core functions?
The core development and infrastructure activities of DevOps are:Software development :
- Code building
- Code coverage
- Unit testing
Q: How you relate DevOps with Agile Process?
While agile software development focuses on the collaboration between the business and its developers, DevOps focuses on collaboration between developers, IT operations and security teams. Agile software development provides business agility, while DevOps provides IT agility, enabling the deployment of reliable and predictable applications with shorter release cycles.
DevOps can be termed as 'complementary' to agile software development, as it extends continuous integration and continuous release by making the code 'production-ready with high value to customer'.
The goal of DevOps is to successfully deploy features into production without causing any disruption to other services, while quickly detecting and correcting incidents as and when they occur during the DevOps lifecycle.
Q: 19. What are some tools used for DevOps? Describe your experience working with any of these
There are various tools in a standard DevOps lifecycle to support various phases of product growth. The most popular DevOps tools are mentioned below:
- Version Control System tool : Git, Bitbucket, SVN, Mercurial, CVS
- Continuous Integration tool : Jenkins, Teamcity, Bamboo, Hudson
- Continuous Testing tool : Junit, TestNG, Selenium
- Configuration Management and Deployment tools : Puppet, Chef, Ansible, Docker, uDeploy
- Continuous Monitoring tools : Splunk, ELK Stack, Kibana, Nagios
- Containerization tool : Docker
Q: Why Automated Testing is Essential for CI/CD
- Automated testing allows us to execute tests in parallel, across multiple servers/containers, speeding up the testing process
- There is more consistency in automated testing. Automation ensures that software behaves the way it is expected to and reduces human errors or bias.
- In a CI/CD pipeline, tools and frameworks have to be adjusted quickly to meet changing demands. Manual testing makes it tough to update and be agile. For example, if you switch to a new CI server platform, the entire manual testing process has to be re-initiated. When you have automated tests, however, most of the configuration is done automatically. As a result, you can migrate to new environments quickly
- Maximizing workforce is crucial in a development project. When testing steps is automated, it free up the engineers to focus on other high-value tasks
- When changes are small in a CI/CD pipeline, they sll need all the effort that goes into testing. Automated testing works well to validate minor changes continuously.
Q: Top 5 Automation Testing Tools in Continuous Testing
- Testsigma is a SaaS software using a Shi-Le approach. It uses natural language
statement to produce steps and is easy to use for manual testers. Wring tests is easy and
helps save me.
Testsigma requires a mature test environment and infrastructure that supports continuous testing. It has several features, such as Test Data Management, Object Repository, and integration with CI/CD tools.
- Selenium is an automated testing tool used extensively for web application testing. It
supports multiple operating systems and browsers along with various programming languages such
as Java, Groovy, Python, C#, PHP, Ruby,
For Continuous Testing, Selenium may not be sufficient, and other tools such as Robot Framework and similar options need to be considered. However, integration can be a big challenge.
There are many other test automation frameworks (open source and commercial) similar to Selenium available on the market today.
- IBM Rational Functional Tester beneficial for storyboard testing and test scripting. It offers API, functional UI, and performance testing. It enables Shi-Le testing and helps developers by identifying bugs early in the development cycle
- Tricens Tosca does a great job in test coverage in automation testing. It provides feedback and helps to fix bugs early. Using a model-based approach, it helps to reduce maintenance costs. A Model is an abstraction of a functionality. When changes are made to the model, Test Cases are automatically synchronized to fit the new model.
- Unified Functional Testing(UFT) has advanced image-based object recognition features and reusable test components. These help to reduce redundancy and help to convert manual tests to automated tests. Test scripts in UFT are crated using Visual Basic Scripts which requires a considerable amount of scripng knowledge.
Q: How to Identify Tests for Automation?
It is impossible to automate 100% of tests - manual testing might be more appropriate, in some instances. To have a tester, manually test something that can be automated is a waste of tester's potential. A broad rule of thumb will be to automate all those tests that are executed frequently. These tests, when running manually, can be prone to errors. For example, cross-browser compatibility testing is one function which can be easily automated. Ensure all your automated tests are reliable and do not generate false positives - due to uncontrolled starting state or environment variations, etc.
The second rule would be to automate all those tests that are dependent on a person. Dependency on developers and testers is risky if the concerned personnel are not available during a crucial phase. A testers absence will affect the entire CT process
Keeping in mind the more significant, long term benefits of automation will build the criteria around which tests need to be automated.
It is beer to start with a small set of reliable, automated tests and add to them over me, instead of starting with many unreliable automated tests.
Q: What is Cloud Computing?
Cloud computing is providing on-demand computing resources, from applications to data centers around the internet.Cloud computing has become the preferred way to deliver enterprise applications - and the chosen choice for companies to extend their infrastructure or introduce new technologies
Q: What are benefits of Cloud Computing?
- Elastic resources: Scale up or down quickly and easily to meet a demand.
- Self-service: All the required IT resources with selfservice access.
- Metered service: You only pay for what you use.
Q: What are different types of Cloud?
Based on a cloud location, we can classify cloud as:
- Public: A public cloud is where users don't need to purchase hardware, software, or supporting infrastructure, which is owned and managed by the providers.
- Private: A private cloud is pretty much same as public cloud and has similar advantages, but is provisioned for a single organization over private infrastructure.
- Hybrid: As name suggests hybrid cloud is a type of cloud computing where private/on-premises cloud infrastructure integrates with public cloud services..
- IaaS: Infrastructure-as-a-Service
- PaaS: Platform-as-a-Service
- SaaS: Software-as-a-Service
Q: What is Containerization?
A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings.
- The modern platform has essential component components for Linux containers. Today, a robust DevOps environment is installed on the Docker project in the most common Linux Container Format. Docker is a container open source software platform that makes application deployment simpler and also enables the use of containers for applications.
- Containerization based on virtualization allows any application bundled in a container which can be run without the hassles of any dependency like libraries.
- They create a sort of isolated partition within a single operating system.
Q: What is containers Orchestration in Kubernetes?
While containers are effective at the heavy lifting while instantiating an image or application component on a single hosting environment, most modern applications are comprised of many components that span multiple hosts that in turn could be in various geographic regions. This is where orchestration and management become a question.
Applications generally are built up of individually containerized components/micro services that
must be managed for the application to perform as expected.
- Container orchestration is the process of managing or organizing multiple containers in this fashion. For example: Docker Swarm, Kubernetes, Mesos and Marathon
- Kubernetes is an open source platform initially developed by engineers at Google, which automates container operations. It allows you to build application services that span multiple containers, schedule those containers across a cluster, scale those containers, and manage the health of those containers over time. Kubernetes handles container deployments and orchestration as a cluster manager by using a declarative model that enables the user to define their application needs.
Q: What is PaaS?
As the name suggests, PaaS (Platform as a Service) provides you with computing platforms which
usually include the operating system, programming language execution environment, database, web
- The real benefit of Cloud computing is the operational agility provided by the Cloud platform in which we don't have to worry about IT infrastructure and we can just focus on building our apps
- In PAAS the capability provided to the consumer is to deploy applications created using programming languages, libraries, services, and tools supported by the provider onto the cloud infrastructure.
- The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment
- PAAS originated from shared IT service model wherein multiple tenants ran applications on shared systems
- Containerization is an ability to virtualize the Operating System (OS) resources instead of the underlying hardware while it sits directly on top of the bare meta
Q: What is in OpenShift Container Platform?
Let's understand what OpenShift Container platform is
- RedHat OpenShift Container Platform is a PAAS offering from RedHat, which was formally known as OpenShift Enterprises
- It is a supported distribution of Kubernetes using Docker containers and DevOps tools for accelerated application development.
- Open Shift also allows you to have highly available, self-healing, and auto-scaling applications without any of the manual setup that would typically need to be done in a traditional environment whether they're on premise or in the public cloud.
- OpenShift includes a full complement of open source programming languages giving polyglot choice to developers.
Q: What are Benefits of OpenShift?
Let's understand what OpenShift Container platform is
- Provides a container management platform for your complex IT infrastructure.
- Kubernetes is the industry leading open source container orchestration framework and Red Hat OpenShift Container Platform is the leading enterprise distribution of Kubernetes
- Enables your development team to focus on designing and testing applications rather than spending excessive time in managing and deploying containers.
- It includes containerization for multi-tenancy, automatic provisioning, automatic application scaling, continuous integration, and self-service for developers.
Q: What Are Deployment Strategies?
A deployment strategy is a way to change an application or to update it. The goal is to make the
transition in a way that the consumer barely notices the changes, without downtime. Using a
is the commonest technique.
The new version (the blue version) is being built for testing and evaluation, while the users are still using the stable version (the green). The users are moved to the blue version when it's available. You can go back to the Green version if a problem occurs.
Q: What Is Rolling Strategy?
A rolling rollout gradually replaces instances of an application's prior version with instances of the application's current version. A rolling deployment usually waits for new pods to get ready through a readiness test until the old modules are scaled down. The rolling deployment can be halted if a serious problem occurs.
Q: What Is Canary Deployments?
All rolling deployments in OpenShift Origin are canary deployments; it checks a new version (the canary) before replacing all the old instances. Unless the readiness test never works, then the canary instance and deployment will be disabled.