Continuous Delivery Flashcards
(21 cards)
What does Continuous Delivery (CD) do?
Automatically moves a software product from a source code repository through to the staging environment, and at the press of a ‘release’ button, it can be moved to production.
What does Continuous Deployment (CD) do?
Automatically moves a software product from a source code repository to the production environment, without the need to press a ‘release’ button.
What is the reason for the first principle: Create a Repeatable Process?
A repeated process quickly becomes a routine one.
What is the reason for the second principle: Automate Almost Everything?
- No mistakes if automation is correct
- Cheaper
- Faster
- Can record logs (which are usually better than humans)
What is the reason for the third principle: Version Control For Everything?
- If something breaks, you can return to the exact previous working state
- Any team member should be able to build any version of the application, on demand
What is the reason for the fourth principle: If It Hurts, Do It More Frequently?
- Building frequently improves the process
- Eventually, it won’t be painful
- Smaller changes are easier to manage
What is the reason for the fifth principle: Build Quality In?
- It is expensive to require lots of communication between Development and Staging
- Testing should be obsessive: defects caught early are cheaper to fix.
What is the reason for the sixth principle: Done Means Released?
- A feature should only be considered ‘done’ once it has been released to a production-like environment
What is the reason for the seventh principle: Everyone Is Responsible?
- The team succeeds or fails as a unit, not as individuals.
- Collaboration prevents blame-shifting (which is not progress)
What is the reason for the eighth principle: Continuous Improvement?
- Teams should reflect on successes and failures to improve processes and prevent future errors.
What are the 8 principles of Continuous Delivery?
- Create a repeatable process
- Automate almost everything
- Version control for everything
- If it hurts, do it more frequently
- Build quality in
- Done means released
- Everyone is responsible
- Continuous Improvement
What is A/B Testing?
Occurs in the production environment:
1. A small percentage of customer traffic is sent to a new working interface.
2. If (after some time) customers are unhappy, the traffic is sent back to the old interface.
What is Canary Testing?
Occurs in the production environment:
1. A small percentage of customer traffic is sent to a new maybe-working version.
2. If (after some time) customers are unhappy, the traffic is sent back to the old version.
What is Blue/Green Testing?
Occurs in the production environment:
1. The production environment (blue) is swapped with the staging environment (green)
2. If customers are unhappy, the swap is reversed (else it is made permanent)
How can we achieve continuous delivery?
Through fast, automated feedback on the production readiness of your applications, every time there is a change
What condition should software always be in?
Production ready, or releasable
How does continuous delivery help avoid the biggest source of waste in software development?
Because it’s much easier to get new, experimental features into production
When should testing be done?
All the time, not just once the software has been developed
Who is responsible for quality?
Everyone
What is more important than delivering functionality?
Keeping the system working and in a good state
How does continuous delivery reduce the risk of release?
Releasing a small, extensively tested, change (and being able to revert immediately) is not a risky thing to do