Last week we held our monthly techday, this time the topic was an introduction to Continuous Delivery.
I did a 60 minute talk with lots of room for discussion. As software developers we love tools, but the focus of the talk was on people, process and the different characteristics of our products, customers and production-configurations.
People and Process
We discussed several ways of handling adding features like working on the master,feature switching, branch by abstraction and feature branching. Most developers were comfortable working on the master, but there were different use cases in which branching was more suitable. We also discussed ways of handling configurations and applying configurations to environments in the pipeline.
Deployment vs Delivery
Although deployment is a big part of delivery, delivery is about actually delivering working software, conforming to functional and non-functional requirements and demonstrated in a production(-like) environment. And while automating the delivery process is one of the most valuable and best things to do, automated should not be confused with automatic: there are several points of the process that need manual intervention and not every deployment actually gets released to the customer.
We talked about several tools in different categories, and these were our favourites:
- Configuration Management: git and nothing else.
- Continuous Integration: Jenkins, although Bamboo deserves some further investigation because of the staging and build plans.
- Testing: Selenium, SOAPUI, JUnit, JMeter, DBUnit, you name it. We actually built a framework on top of Selenium that gives the user a small DSL that expresses test scripts in natural languages.
- Pipelining: Jenkins Pipeline plugin seems to do the job, but Go and Bamboo seem to offer comparable features.
- Infrastructure and Environment Management: Puppet. Tried Chef (high learning curve and lots of dependencies) and ControlTier (hard to manage, no current development and documentation out-of-date).
- Build and Deployment Scripting: Maven, although it has some nasty features that can get in your way.
We put the theory into practice and designed and built several (parts of) pipelines and found how easy it is to implement a pipeline using above tools, once the design of the pipeline is OK.
In a month or so we’ll organize another techday (topic TBA). Keep an eye on our twitter in case you want to join. Pizza and beer is on us!
Do you have experience with continuous delivery? Please tell us about it in the comment section below.