Project Rewrite - Overview
Introduction
HealthMetrics current monolithic system suffers from high-coupling and an outdated technology stack. It also does not scale well with business opportunities and its engineering resources.
HealthMetrics wishes to adopt an architectural style where it can build applications that are resilient, highly scalable, independently deployable, and are able to evolve quickly.
HealthMetrics will reimagine and rewrite its current system into a set of microservices under Project Rewrite.
Solving the Real Problem
While this project aims to rewrite and reimplement the existing platform with a microservices architecture, it is important to know that writing microservices itself won't solve the real problem.
Our real problems are:
- high-coupling;
- effective scaling;
- outdated tech stack.
Microservices architecture, through its very nature, will help us solve these with some effort. It will also introduce additional challenges.
Goal
- To have an architecture where we can have multiple squads work in parallel, with limited dependencies
- To have front ends that are optimised for their target audience
- To use event sourcing where necessary
Phases
This project is separated into planning/design, coding, deployment and post-deployment phases.
Major tasks in the planning phase:
- Domain modelling
- Designing microservice architecture
- Microservice operation in production
- Monolith migration
Key Roles
CTO
- to lead and align on project directions
- to communicate with internal, and external stakeholders
- to liaise with the company Board to ensure Company-level support
- to secure a budget for necessary resources
Head of Product
- to work with the Architect team on strategic domain modeling
- to restructure the team and secure enough resources to fit the microservices squad implementation
Solutions Architect
- to own domain modeling process (both strategic and tactical)
- to work with the Product team on strategic domain modeling
- to work with the Frontier team on tactical domain modeling and microservices architecture design
- to enlist and engage experts in the domain modeling process
Head of Engineering
- to liaise and guide engineering teams in their tasks
- to restructure the team and secure enough resources to fit the microservices squad implementation
- to enable and upskill the engineering team to work on distributed systems
- to enlist and engage experts on microservices architecture design
Frontier Team
- to own the microservices architecture design implementation
- to work with the architect on tactical domain modeling and microservices architecture design
DevOps Team
- to own and work on microservices CI/CD, health check, logging and monitoring
- to identify cross-cutting concerns with the Frontier team
Challenges
More than a few... stay tuned while we bring you some of the challenges we faced.
Credits to Advent Phang for the overview.