The asynchronous, uncoordinated and continuous delivery of more than 35 microservices

posted by Alex Voica on 09 Feb 2017

Welcome to the Ocado Technology Webinars, where you can hear from the people building the ground-breaking, game-changing technology that powers Ocado, the world's largest online-only grocery retailer.

In this webinar Clayton Wells, OSP webshop team leader Ocado Technology, talks about the challenges involved in delivering more than 35 microservices.

Deploy Change diagram

Key Takeaways

  • The more software development teams grow, the harder it becomes to coordinate their efforts
  • A good software architecture can be a great enabler for later development practices
  • The architecture built by the Ocado Technology webshop team is stateless, resilient, and includes a comprehensive fallback strategy
  • Microservices can provide more stability than a monolith architecture if developers think of embedding resiliency right into the system
  • There is a close link between continuous delivery and the ability of microservices to start up independently of other dependent microservices
  • Ocado Technology created a microservices-based architecture that abstracts features away from the server level and implements them at the service level
  • Resiliency and fallback shouldn’t be a secondary thought when designing an architecture, they are a primary concern
  • There is no one-size-fits-all approach to fallback strategies
  • Using off-the-shelf tools or libraries such as Hystrix to enable resilience in complex distributed systems can provide better results compared to a DIY approach
  • Continuous delivery often implies questioning current paradigms, ways of thinking and practices
  • Having backwards compatible code allows developers to continuously push changes while maintaining stability intact
  • Technical debt increases exponentially based on the number of microservices deployed

00:14: Ocado Technology has created a way for two dozen developers to continuously deploy software into production without having to coordinate with other developers

00:54: The architecture built by the webshop team is stateless, resilient, and includes a comprehensive fallback strategy

01:24: Stateless microservices make deployment and scaling (up or down) simple

02:06: Why idempotent endpoints are very useful in the context of resiliency and fallback strategies

02:53: Microservices should have single responsability for a given algorithm or functionality

03:48: Keeping your data local to your microservices abstracts your data structure and accessibility away from the database level

04:32: If you have twenty microservices where each microservice has a 1% chance of failure, then the chance of failure for a call to those microservices could be as high as 20%

05:42: The main property of resiliency Ocado Technology looks for in microservices is the ability of a microservice to start up independently of dependant services

06:25: Ocado Technology creates microservices that have no start-up processes built into the start cycle of the server

07:47: Having good (and graceful) recovery mechanisms creates a solid base for building a fallback strategy

08:57: The fallback strategy for any new feature should be planned well in advance of developing the respective feature

09:36: Storing data locally, especially for configuration services, avoids bringing down the whole system when a fallback occurs

10:21: Hystrix is a very good tool when dealing with fallbacks and is the primary tool used at Ocado Technology for this purpose

10:48: A recap of the microservices architecture principles employed by Ocado Technology

11:38: Adopting Agile and continuous delivery practices means developers need to be more disciplined as software teams become responsible for the entire development pipeline

14:14: A look at the Ocado Technology software development cycle

14:54: Deploying code into production doesn’t necessarily imply the release of a feature or functionality

15:49: Why Ocado Technology keeps feature deployments as small as possible

16:56: Feature flags allow Ocado Technology to have backwards compatible code running alongside new code

18:40: Implementing feature flags enables the decoupling of releases from deployment

19:43: New features shouldn’t replace old code

20:17: Having a suite of good, robust test that the development team trusts is an essential part of the continuous delivery process

21:56: Versioning can duplicate development efforts and increase app size, therefore it should only be used when backwards compatibility is not achievable

23:02: A good clean-up strategy helps avoid the situation where technical debt spirals out of control

24:52: Ocado Technology built an advanced system that allows four development systems across two locations to work on more than 35 microservices

25:25: A comparison of the Ocado webshop before and after adopting our best practices and concluding remarks

More about our webinars

You can keep up to date with the webinars by subscribing to our YouTube channel. This article provides clickable links that take you directly to the highlighted part of the video clip.

categories: Ocado Technology News