A very opinionated continuous delivery implementation. It's not perfect, it may or may not work for your organisation, but it tries to follow the sense of correctness and conventions agreed by all stakeholder.
2. Challenges
● How can I deploy this to production?
● How can I be sure that this will work in
production?
● How long does it take to go to production?
3. Answers
Question #1 How can I deploy this to
production?
● Delivery Pipeline
● Stages
● Automation from day one
● Discipline
4. Q#1 How can I deploy this to production?
● Delivery Pipeline
o Build once, promote to different environment/stages
o Deploy early, break early, fix early
o Master/trunk as production ready branch
No revert, but incremental changes
5. Q#1 How can I deploy this to production?
● Stages
o Development
Developer
o Test
Developer + QA
o Integration
QA
o Staging
QA
o Production
Everyone
6. Q#1 How can I deploy this to production?
● Automation from day one
o Infrastructure as code
puppetize!
o Avoid dirty hack
Never SSH to machine
Use API whenever possible
o One click deployment
Launch machine and provision
Automated code deployment
7. Q#1 How can I deploy this to production?
● Discipline
o … best practices
o … conventions or configuration?
o Company as one big team
o It’s not about you and me, it’s about us!
o If I screw up, I will screw the whole company!
8. Answers
Question #2 How can I be sure that this will
work in production?
● Environment similarity
● Build/Deploy similarity
● Efficient testing
9. Q#2 How can I be sure that this will work in
production?
● Environment setup matters
o development on top of virtual machine, same setup
as production
o other environments are small sets of production
machine
o same configuration on every environment
10. Q#2 How can I be sure that this will work in
production?
● Build/Deploy similarity
o Same package for all environment
o Same deployment step for all environment
o A switch to differentiate each environment
o Differences on configuration for each environment
Test different configuration
More eyes to verify changes
11. Q#2 How can I be sure that this will work in
production?
● Efficient testing
o Unit test during build time
unit test & coverage
o Automated Smoke & Functional test in
test/integration
Feature = Feature + Test
o Automated Regression test in staging
o Post deployment test
12. Answers
Question #3 How long does it take to go to
production?
● 10 minutes
o Parallel provisioning
o Parallel deployment
o Parallel testing
13. Responsibility vs Headache
● Whose responsibility?
o Everyone’s responsibility
● Whose headache
o Everyone’s headache