Most Frequently asked CI CD DevOps Interview Questions (2020)
The move to modern application development and the need for rapid and continuous deployment make a strong DevOps-enabling platform, a key component in the IT arsenal.
Applications are designed around smaller, independent microservices modules. The decomposition of applications into smaller components has distinct advantages of designing software more efficiently and producing them in a more robust way - both of which are ideally matched with the market needs today. This approach however adds complexity in the IT operations application layer.
For IT operations 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 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 costReduced 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 assuranceBetter 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 assumptionsReduced assumptions CI/CD replaces testing assumptions with knowledge, thereby eliminating all cross-platform errors at the development stage.
- Faster time to marketFaster time to market Faster test and QA cycles enable organizations to get quality products and services to market faster and more efficiently.
- Software health measurabilitySoftware 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.
Q: What is Continuous Integration (CI) ?
During this process, developers identify bugs at early stages of the development cycle, fix them, and test in an iterative manner. Every time there is a new code change or a bug fix, the build or code compilation process takes place in the developer's private workspace. The developer then integrates the changes into the main code base. 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 Deployment (CD) ?
After the build process and packaging in the CI phase, the final build package is automatically deployed for user acceptance testing before it is released to production. More and more modern applications are running as microservices and containers as the unit of deployment on a platform. The platforms could be any public-cloud environment or containers for platform-as-a-service like Red Hat OpenShift or Pivotal Cloud Foundry. As containers are portable, platform is synonymous with standard operating system like Red Hat, Ubuntu, and others, abstracting the cores and memory required at application run time
Q: What is Continuous Testing (CT) ?
- Connuous tesng (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 maer 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 connuous process, it cannot be tagged at the end, but needs to be seamlessly interwoven into the soware 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 applicaon's change, which affects funconality.
Q: What is Continuous Delivery (CD) ?
Continuous delivery differs slightly from continuous deployment. Both are continuous and automated, but the application is not released into production immediately with CD. There is a gate-keeping process where the latest build package goes through a test-automation process to validate compatibility and interoperability before it's released to production. Automating the process of promoting a new build into production and reverting back to an old build version is less painful and lowers risk.
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 f rom a niche to a mainstream strategy employed by 25 percent of Global 2000 organizations," Gartner said in a report.
Q: What are DevOps benifits?
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 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: Why Automated Testing is Essential for CI/CD
- Automated tesng allows us to execute tests in parallel, across mulple servers/containers, speeding up the tesng process
- There is more consistency in automated tesng. Automaon ensures that soware 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 tesng makes it tough to update and be agile. For example, if you switch to a new CI server plaorm, the enre manual tesng process has to be reiniated. When you have automated tests, however, most of the configuraon is done automacally. As a result, you can migrate to new environments quickly
- Maximizing workforce is crucial in a development project. Repeve tesng steps, when automated, 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 tesng. Automated tesng works well to validate minor changes connuously.
Q: Top 5 Automation Testing Tools in Continuous Testing
- Testsigma is a SaaS soware 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 connuous tesng. It has several features, such as Test Data Management, Object Repository, and integraon with CI/CD tools.
- Selenium is an automated tesng tool used extensively for web applicaon tesng. It supports mulple operang systems and browsers along with various programming languages such as Java, Groovy, Python, C#, PHP, Ruby,
For Connuous Tesng, Selenium may not be sufficient, and other tools such as Robot Framework and similar opons need to be considered. However, integraon can be a big challenge.
There are many other test automaon frameworks (open source and commercial) similar to Selenium available on the market today.
- IBM Raonal Funconal Testeris beneficial for storyboard tesng and test scripng. It offers API, funconal UI, and performance tesng. It enables Shi-Le tesng and helps developers by idenfying bugs early in the development cycle
- Tricens Tosca does a great job in test coverage in automaon tesng. It provides feedback and helps to fix bugs early. Using a model-based approach, it helps to reduce maintenance costs. A Model is an abstracon of a funconality. When changes are made to the model, Test Cases are automacally synchronized to fit the new model.
- Unified Funconal Tesng(UFT) has advanced image-based object recognion features and reusable test components. These help to reduce redundancy and help to convert manual tests to automated tests. Test scripts in UFT are craed 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 tesng might be more appropriate, in some instances. To have a tester, manually test something that can be automated is a waste of tester's potenal. 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, based on the fact that the human brain can become weary of seeing the tests mulple mes in a day. For example, cross-browser compability tesng is one funcon which can be easily automated. Ensure all your automated tests are reliable and do not generate false posives - due to uncontrolled starng state or environment variaons, 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 enre CT process
Keeping in mind the more significant, long term benefits of automaon 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 starng 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 server etc.
- 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 onpremise 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 multitenancy, 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 blue-green deployment
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.