Architecture & Design
Sharing system architecture and design decisions and experiences.
MSA Was Too Much for Us - Our Journey to Modular Monolith
Hello. I’m Jeongil Jeong, a backend developer working at a proptech platform. Our company had successfully completed a zero-downtime migration from a legacy Java Servlet monolithic service to MSA and was operating it in production. The process wasn’t easy, but we learned a great deal by experiencing...
February 20, 2026
[Reflections on MSA 7/7] Do We Really Need MSA?
Previous: [Reflections on MSA 6/7] Event-Based Data Consistency Issues and Solutions in MSA Over the past six parts, we’ve explored various aspects of MSA. How to divide services, how to communicate between them, how to respond to failures, and how to separate data while maintaining consistency. I’v...
January 22, 2026
[Reflections on MSA 6/7] Event-Based Data Consistency Issues and Solutions in MSA
Previous: [Reflections on MSA 5/7] How Should We Separate Data? In the previous part, we explored why we should separate DBs in MSA environments and how to solve the JOIN problem after separation. There were two methods: API Composition and Data Replication. But choosing “data replication” doesn’t m...
January 21, 2026
[Reflections on MSA 5/7] How Should We Separate Data in MSA?
Previous: [Reflections on MSA 4/7] How Failures Propagate and Where We Should Break the Chain In the previous part, we explored how failures propagate in MSA environments and various patterns to prevent them. From Timeout, Retry, to Circuit Breaker, there were many different approaches. But there’s ...
January 20, 2026
[Reflections on MSA 4/7] How Failures Propagate and Where We Should Break the Chain
Previous: [Reflections on MSA 3/7] Inter-Service Communication in MSA - How Should We Do It? In the previous part, we looked at communication methods between services in an MSA environment. We had various options from REST, gRPC, to message queues. However, regardless of which communication method y...
January 19, 2026
[Reflections on MSA 3/7] Inter-Service Communication in MSA - How Should We Do It?
Previous: [Reflections on MSA 2/7] How to Divide Services in MSA In the previous episode, we looked at how to divide services and the principles and considerations for setting boundaries. One of the things I thought about most while working in an MSA environment was “inter-service communication.” Wh...
January 16, 2026
[Reflections on MSA 2/7] How to Divide Services in MSA
Previous: [Reflections on MSA 1/7] What is MSA (Microservices Architecture)? In the previous episode, we explored the concept of MSA, its background, and various alternatives. If you’ve decided to adopt MSA, you now face the first question. “How do we divide services?” Why is this question important...
January 15, 2026
[Reflections on MSA 1/7] What is MSA (Microservices Architecture)?
As developers, I think we all encounter moments when we find ourselves pondering about MSA (Microservices Architecture). Each time, we fall into various considerations. I’ve also had moments of contemplating MSA before. However, it was mostly at the level of side projects or reading development arti...
January 14, 2026
From 16 Repositories to One - MSA Multi-Module Migration Story
Introduction Hello. I’m Jeongil Jeong, a 3rd-year backend developer working at a proptech platform. In March 2025, I joined the team and went through the process of converting 16 backend projects managed in individual Repositories into a multi-module structure based on a single Repository. I’d like ...
October 16, 2025
Is Gradual MSA Transition an Illusion? - Battling with Tightly Coupled Legacy Services
Hello, I’m Jeongil Jeong, a 3rd-year backend developer working at a proptech platform. I joined the team recently in March, and like many companies, our team was undertaking the grand journey of transitioning legacy services to Microservices Architecture (MSA) for better scalability and maintainabil...
July 21, 2025