Continuous Delivery
A talk by Alex Bolboaca @alexboly
Can You Drive With Your Eyes
Closed?
Can You Develop Without Feedback?
Obama doing politics
Can You Develop Without Feedback?
Obama learning to program
So, Feedback!
Why Continuous Delivery?
Fast, High Quality feedback on more levels:
1. Is this feature useful?
2. Is this feature stable?
3. Can this feature be deployed?
4. Is the feature correct?
5. Is the code quality at good standards?
The Pipeline
Source: http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
The Sibling
Source: http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
How to Get To Continuous Delivery?
Warning!
Advice on this topic is
very context dependent
I will give you hints but
you have to find your
own way
Instead of solutions,
grasp the principles and
philosophy
0. Source Control
● Pick one: git, svn, TFS ...
● Define your:
– Main branch (e.g. master)
– Integration branch (e.g. login)
0'. Integration Policy
● Many variations
● Example:
– Feature branches and personal branches
– Every day you merge the feature branch into your personal branch
– When your story / task is done, you merge your personal branch into
the feature branch
– Every day someone merges the integration branch into the feature
branch
– Once the feature is done, it is merged in the integration branch
1. Automated Build
● Can you build the system with one click?
● If not, start with a local script before
moving to a build server
1I. Measure Code Quality
● Can you find most common mistakes automatically?
● FxCop, JsLint, Sonar, Emma, …
● Start by ignoring all rules except the most
important
● The build should fail if the metrics go down from
previous version
● Publish evolution graphs on the server
1II. Automated Validation (Code)
● Did you make a mistake?
● Unit tests
● Use the code coverage metric as a trend
● Focus your tests on the most common
sources of bugs
1V. Automated Validation (Feature)
● Is the feature working?
● Acceptance tests
● Selenium or similar tools
V. Automated Deployment
● Can you deploy with one click?
● Has more phases. Example:
– Stop tomcat
– Upload jar to deploy directory
– Update tomcat configuration
– Start tomcat
– Figure out if tomcat started successfully
– Figure out if app is working (smoke test)
V'. Containers!
● Admin configures container
● Dev takes container, deploys application on it
● Dev checks that the app works on the
container
● Container gets deployed to server
VI. Monitoring
● Is the application working on long term?
● Monitoring:
– Smoke test
– Transform tests into monitoring features
– Performance, Scalability, Security ...
VII. Self-Healing
● What do you do when the app fails?
● Use monitoring to self heal!
– if hard drive is full, save logs to S3
– if out of memory, restart server or scale to next
Amazon instance
– If high traffic from limited number of IPs, block them
(DoS response)
The Pipeline
Source: http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment
Contact Me
Alexandru Bolboaca
alex.bolboaca@mozaicworks.com
@alexboly
Any other questions?
“The important thing is to never
stop questioning”

Continuous delivery