CI/CD Flashcards
What are the key goals and benefits of implementing Continuous Integration (CI), Continuous Deployment (CD), and Continuous Delivery (CD)?
- CI: frequently integrate code changes into a shared repository. Promoteas early detection of integration issues and ensures a consistent codebase
- CD: extends CI by automating the deployment process, enabling rapid and reliable releases
- Continuous Delivery: ensures software is always in a deployable state
How do CI/CD practices contribute to improving software quality, development speed, and collaboration among teams?
- reducing manual errors
- improving testing
- encouraging smaller, manageable code changes
- faster development cycles and automated processes lead to quicker feature delivery
- collaborative practices foster communication and shared ownership
Can you describe a specific example of how you’ve set up a robust CI/CD pipeline for a complex application?
- CI/CD pipeline comprised stages for linting, unit testing, integration testing, and artifact generation.
- GitHub for version control
- Docker containers for consistency across environments
How did you ensure a pipeline is reliable, efficient, and adaptable to changes in the development process?
- ensured reliability by employing automated testing suites at each stage
- used test-driven development practices
- ensured adaptability by using infrastructure as code
Explain how you’ve integrated different types of tests (unit, integration, regression, etc.) into a CI/CD pipeline?
- Unit tests validated individual components’ functionality
- integration tests verified interactions between services
- used parallel testing to run tests concurrently
- prioritized smoke tests to quickly catch critical issues
- employed feature toggles to enable/disable specific functionality during testing
How would you approach managing database schema changes and migrations as part of your CD pipeline?
- use database migration tools to manage schema changes and migrations as code
- incorporate schema change scripts into our deployment process to ensure they are applied automatically with new releases
- minimise downtime by using blue-green deployments or canary releases
- maintain backward compatibility to ensure uninterrupted service
- implement database monitoring to promptly address performance issues and regressions
How would you implement strategies like canary deployments or feature toggles to ensure a smooth and risk-controlled release process?
- Canary deployments involve releasing changes to a subset of users to validate their impact before full deployment
- Route a small percentage of user traffic to the new version while monitoring performance and errors
- Feature toggles allow enabling/disabling features dynamically
- Use these toggles to introduce new features gradually and manage risk