In the afternoon it was the turn of Paul Stack (@stack72) and his “Continuous Integration to Continuous Delivery”
I was expecting a lot from this session, and I am happy to say that I was not disappointed!
I have seen Paul’s Continuous Integration talk before, and I was very curious to see how you would transition from Continuous Integration to Continuous Delivery/Continuous Deployment.
Paul went on to explain that the core practices of Continuous Delivery break down as follows:
- Continuous Integration
- Configuration Management
- Dependencies
- Documentation
- Environment
- App Configurations
- Data
- Tests
- Unit
- Integration
- Functional/Acceptance
- Performance/Load
- Penetration
Now, getting all these things in place is no small task, and it is only something that can be achieved over a period of time, it is not going to happen over night. However, once you have it in place, you can build and deploy (as Paul showed) your web application to a web server in a matter of seconds. When you sit and think about this, this is actually very impressive! When I saw this in action, something suddenly clicked with me. It was the separation of the build and test build configuration and the deploy build configuration. What this meant is that you can have your Continuous Integration build running which prepares the package ready for deployment (which can run every time you check in some code) and another build configuration which is responsible for doing the actual deployment. Clever! Paul then when on to discuss what turned into a very hot topic, namely Feature Switching. Paul contends that the strategy of using Feature Branching ultimately leads to a number of time consuming merging of the source code (perhaps not as hard when using Distributed Source Control) which could be avoided with the use of toggling features on and off when required. Having thought about it, and listened to the discussion that came from it, it is hard to argue. For more information on the subject, have a look at Martin Fowlers blog post here.
Again, another great session, and I am very much looking forward to tomorrow.
Recommended Reading:
- Continuous Integration: Improving Software Quality and Reducing Risk
- Continuous Integration in .NET
- Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation
Recommended Tools/Software:
- TeamCity
- NetSparker
- Git
- Mercurial
- OpenWrap
- NuGet`
- NUnit
- NSubstitute
- StoryQ
- specflow
- Chef
- puppet
- Schema Compare
- SQL Source Control
- Hyperic
- Zabbix
- pingdom
Wow, that was a long list.
comments powered by Disqus