Growing a microservice estate organically; from monolith to microservices

By Myles McDonnell

Elevator Pitch

This presentation demonstrates a process for building a large Go based microservice system from ground zero that maximises velocity at the outset of the project by avoiding fine grained deployment assets whilst laying the foundations of a highly distributed microservice architecture.

Description

The advantages of a microservice architecture are well known. However, development and operation of a large microservice estate comes with overheads that can slow down development velocity considerably, often referred to as Microservice Premium.

This presentation demonstrates an approach to developing a large microservice estate using Go that enables maximum velocity at the outset of the project by deferring the decomposition of concerns into separate deployment assets. This is achieved using carefully crafted interprocess communication abstractions (RPC and Asynchronuous model IPC) in conjunction with other techniques such dependency injection that effectively guard against inadvertent tight coupling of code between those concerns whilst also paving the way for a low friction shift toward fine grained microservices and a highly distributed architecture.

In addition to a conceptual discussion around the benefits of this approach and the problems is solves this presentation includes concrete code examples that demonstrate how code bases evolve and cell divide over time as the system and the team building the system grow in size and complexity and it becomes advantageous to do so.

Notes

This presentation and the associated open source code has been developed over the last 16 months during which time as Head of Platform Services for an ambitious startup in the maritime shipping industry I built and lead a team of Go engineers in the development of large microservice estate (~100 services and growing) using technologies such as Kafka, gRPC, GraphQL, Kubernetes, AWS, Concourse and others. During this time the team expanded from 1 (me) to around 70 engineers split over 2 locations (London and Kiev).