The Asynchronous Uncoordinated Continuous Delivery of 35+ uServices
So you’ve embraced μServices and Continuous Delivery but as the number of your μServices grow, it has become harder and harder to keep your releases co-ordinated. Many resort to release trains to manage their deployments, where you can only do releases for a given service at a given time or in a specified order, but wouldn’t you like to not have to worry about any of that coordination, no matter how many μServices you need to deploy. Over at Ocado, they have managed to create an environment where they are able to release up to 35+ μServices at any time and in any order you want, asynchronously. Clayton and the Ocado team would like to share with you how we are doing it.
In order to create such an environment, you will need to look at more than just one thing or one area of practice you are doing. You need to take into account almost everything related to your environment and development life cycle. In order to achieve this goal, you will explore the following areas:
- Stateless μService Architecture
- Fallback strategies
- Continuous delivery practices
- Development approach and practices
Adopting this approach has allowed the Ocado E-commerce team to actively allow 20+ developers each able to continuously push changes all the way through to production in under 40min from the moment the change is committed, without needing to worry about the changes other developers are pushing through and no need to worry about each developer having to coordinate their releases and work with each other.