Continuous delivery practices were implemented for an RTB project at Kenshoo to allow for faster development and delivery. This included having a single code branch, comprehensive testing at the unit, integration, behavioral, and staging levels, keeping builds stable, ensuring the master branch is always deployable, conducting rigorous code reviews, using real-time feedback, managing upgrades carefully, and A/B testing. It is important to constantly monitor builds and collect feedback to own the process.
7. 1.
The Obvious
● Single branch
● Full, Fast, Reliable coverage
● Full deployment automation
● Fast feedback
● ABCD - Always Be Continuously
Deploying
8. ● Unit: complete functional coverage
● Integration: with external systems - thin!
● Behavioral: we use Cucumber
● Staging: verify actual server upgrade
2.
Four-Layer Test Suite
17. 7.
Keep Upgrade in Mind (1)
Use the “Parallel Change” pattern when
changing cross-node APIs / Data
1.
Write: old
Read: both
2.
Write: new
Read: both
3.
Write: new
Read: new
deploy deploy
23. Appendix A.
Partial Tool List
Testing: JUnit, Cucumber, Nose
Build / CI: Jenkins, Gradle, JaCoCo
Code Review: GitHub
Provisioning: Puppet
Deployment: Fabric, boto
Monitoring: Metrics, Graphite
24. Appendix B.
Are You Ready?
Unit
Coverage
> 90%?
Good
Staging
Tests?
Informative
Monitors?
Builds Are
Kept
Green?
No API
Breaking
Changes?
Rigorous
Code
Reviews?
Support
Has Your
Phone
Number?
Do You
Own it?
Not
Ready
No Yes
credit: tal.salmona@kenshoo.com