20 August 2021

#CICD

#CICD
What is Continuous Integration?
What is Continuous Deployment?
What is Continuous Delivery?
What CI/CD best practices are you familiar with? Or what do you consider as CI/CD best practice?
What is a Software Repository?
What ways are there to distribute software? What are the advantages and disadvantages of each method?
What is caching? How does it works? Why is it important?
What is Reliability? How does it fit DevOps?
What "Availability" means? What means are there to track Availability of a service?
What types of tests are you familiar with?
What is Chaos Engineering?
What is "infrastructure as code"? What implementation of IAC are you familiar with?
What Continuous Integration solution are you using/prefer and why?
What deployment strategies are you familiar with or have used?
What do you think about the following sentence?: "implementing or practicing DevOps leads to more secure software"
What is a configuration drift? What problems is it causing?
What is Distributed Tracing?
What is GitOps?
Explain mutable vs. immutable infrastructure
Explain "Software Distribution"
Explain stateless vs. stateful
Explain "Open Source"
Explain test-driven development (TDD)
Explain agile software development
Explain Declarative and Procedural styles. The technologies you are familiar with (or using) are using procedural or declarative style?
Why are there multiple software distributions? What differences can they have?
How a web server works?
How do you manage build artifacts?
How do you perform plan capacity for your CI/CD resources? (e.g. servers, storage, etc.)
How would you structure/implement CD for an application which depends on several other applications?
How do you measure your CI/CD quality? Are there any metrics or KPIs you are using for measuring the quality?
How to deal with a configuration drift?
Where do you store CI/CD pipelines? Why?
Are you familiar with "The Cathedral and the Bazaar models"? Explain each of the models
Can you describe an example of a CI (and/or CD) process starting the moment a developer submitted a change/PR to a repository?
Describe the workflow of setting up some type of web server (Apache, IIS, Tomcat, ...)
Describe me the architecture of service/app/project/... you designed and/or implemented
Do you know what is a "post-mortem meeting"? What is your opinion on that?
Do you have experience with testing cross-projects changes? (aka cross-dependency)
Have you contributed to an open source project? Tell me about this experience
Would you prefer a "configuration->deployment" model or "deployment->configuration"? Why?
You are given a pipeline and a pool with 3 workers: virtual machine, baremetal and a container. How will you decide on which one of them to run the pipeline?
You need to install periodically a package (unless it's already exists) on different operating systems (Ubuntu, RHEL, ...). How would you do it?
You joined a team where everyone developing one project and the practice is to run tests locally on their workstation and push it to the repository if the tests passed. What is the problem with the process as it is now and how to improve it?
In today's fast-paced world of software development, success is synonymous with efficiency, rapid deployment, and minimal disruptions. CI/CD pipelines serve as the catalyst for achieving agile development and smoother software delivery. CI/CD, an acronym for Continuous Integration and Continuous Deployment, represents a holistic approach aimed at automating the integration of code changes and their seamless deployment into production. This ensures that your software is in a state of perpetual readiness for deployment, emphasizing incremental updates over unwieldy, error-prone releases. Continuous Integration (CI): Developers craft code and seamlessly upload it to a shared repository. Continuous Deployment (CD): Once the code emerges unscathed from the rigorous CI phase, it's primed for deployment. - Source Control Management (SCM): This is the digital heart where developers store their code, often utilizing Git-based repositories such as GitHub or GitLab. - Build Tools: These are the skilled artisans that compile, package, and optimize your code for deployment. Popular options include Jenkins, Travis CI, and CircleCI. - Artifact Repositories: Where the precious gems of your code, like Docker images and application binaries, are safely stored for deployment. - Deployment Tools: The automation wizards that wave their magic wands to dispatch your code to different environments, be it Kubernetes, Docker Swarm, or serverless platforms. - Testing Automation: A battalion of unit, integration, and end-to-end tests that vigilantly safeguard your code's quality and functionality. Benefits of CI/CD: - Faster Delivery: Smaller, more frequent releases mean quicker feature updates and bug fixes. - Enhanced Collaboration: Developers can simultaneously work on different features, creating harmonious, conflict-free collaboration.

No comments:

Post a Comment

Most views on this month