상품 조회가 몰리는 시간이면 결제까지 함께 느려지고, 알림 문구 하나를 고치려 해도 전체 시스템을 다시 배포해야 하며, 작은 장애 하나가 서비스 전체를 멈춰 세웁니다. 하나로 뭉친 시스템을 오래 운영해 본 개발자라면 익숙한 장면입니다. 마이크로서비스 아키텍처는 이 문제에 대한 답이지만, 서비스를 나누는 순간 분산 트랜잭션과 데이터 정합성, 장애 전파라는 새로운 숙제가 따라옵니다. 이 책은 "MSA는 좋다"는 이야기가 아니라, 실제 현장에서 무엇을 어떻게 나누고, 어떻게 잇고, 어떤 문제를 어떻게 막는지를 다룹니다.
이 책은 네 부분으로 흐릅니다. 먼저 서비스를 나누고 잇는 기본기를 다진 뒤, 이커머스·배달·핀테크·스트리밍·메시징·예약·물류·SaaS·IoT·커뮤니티라는 열 가지 실전 도메인 사례를 하나씩 풀어냅니다. 이어서 이 사례들이 공통으로 부딪히는 분산 트랜잭션, 최종 일관성, 장애 전파, 멱등성을 설계 원칙으로 정리하고, 마지막으로 "언제 도입하고 어떤 순서로 옮겨갈 것인가"라는 현실적인 전략으로 마무리합니다. 쉬운 개념에서 시작해 실무 설계 판단까지, 앞부분만 읽어도 기본 감각을 잡을 수 있도록 점진적으로 구성했습니다.
책 전체에는 가상의 이커머스 플랫폼 온마켓(OnMarket)이 함께 자랍니다. 온마켓은 처음엔 하나의 모놀리식으로 출발하지만, 장을 거치며 재고·결제·배송·알림·검색 서비스로 하나씩 갈라지고, 이벤트로 이어지며, 회복탄력성을 갖춰 갑니다. 다른 도메인 사례를 읽을 때도 "이 아이디어를 온마켓에 적용한다면?"이라고 떠올리도록 설계했습니다. 그리고 모든 사례와 원칙은 단 하나의 문장으로 수렴합니다. "경계로 나누고, 이벤트로 잇고, 실패를 설계한다."
이 책은 REST API를 만들어 봤고 데이터베이스 트랜잭션이 익숙한, 이제 시스템을 여러 서비스로 나누는 일을 고민하기 시작한 실무 개발자를 위한 책입니다. 특정 언어나 프레임워크에 매이지 않고 설계 관점에서 서술하되, 필요한 곳에서는 Spring Boot·Kafka·Redis·Kubernetes 같은 실무 도구를 구체적으로 언급합니다. 책을 덮을 때 여러분의 손에는, 낯선 시스템을 마주해도 "이건 어떤 서비스로 나누고, 어떤 이벤트로 잇고, 어디서 실패를 막아야 하는가"를 스스로 그려 낼 수 있는 설계 감각이 남을 것입니다.