Harry Hunter

Case Study: The Key - Microservice Transformation

Microservice Transformation (2016/17) - Technical Architect

The Customer: Whole Portfolio

The Users: Development team

The Challenge

At The Key, we had a major legacy product with a monolithic codebase that was a nightmare to maintain. This made it difficult to move with agility and deliver new value to our users. The first version was written by the founder in his kitchen, so it was a bit sensitive!

The team was running into quality issues, and the number of incidents was increasing. To move forward, reduce incidents, and deliver new features more effectively, I was asked to re-architect the product and plan its migration.

The Approach

I adopted a 'Service-Oriented Architecture' or 'Microservices' approach. Working with a team of very smart engineers, we broke apart the monolithic product into core and tangential value streams.

For core streams, like 'Identity', we built new standalone services with an API-first approach. This enabled us to iterate quickly on the new service—for example, adding Two-Factor Authentication (2FA) to the identity service—while managing dependencies, as long as the API schema remained fixed.

For other value streams, we made value-based judgments on whether it was worthwhile to re-architect the functionality or leave it as is within the monolith.

Key Insights

  • Focus on core value streams: Not everything needs to be rebuilt. By identifying the most critical and problematic parts of the application, we could focus our efforts where they would have the most impact.
  • API-first is key for decoupling: Designing services with a stable API contract allowed teams to work independently and reduced the risk of breaking changes.
  • Value-based decisions are crucial: A pragmatic approach, weighing the cost and benefit of re-architecting each component, prevents over-engineering and ensures resources are spent wisely.

The Outcome

In the end, we only re-architected around 30% of the product from the ground up. However, this targeted approach allowed us to reduce incidents and escalations for the product by 70%, significantly improving stability and enabling the development team to focus on delivering new features rather than firefighting.