서비스 분리 → Kafka로 비동기 이벤트 → 분산 트랜잭션 한계 경험
사이드 프로젝트에서 Spring Boot로 사용자 서비스와 알림 서비스를 분리하는 마이크로서비스 구조를 처음 만들었습니다. 서비스 간 통신에서 동기 REST와 비동기 이벤트를 구분하는 기준을 잡는 게 가장 어려웠습니다. 알림처럼 즉각적인 응답이 불필요한 작업은 Kafka 토픽으로 분리했고, 주문 생성처럼 결과를 즉시 써야 하는 흐름은 REST로 유지했습니다. 분산 환경에서 트랜잭션 일관성이 어렵다는 걸 처음 실감한 건 서비스 한 쪽이 실패했을 때 롤백 범위를 정하지 않아 데이터가 일부만 반영된 경우였습니다.
각 서비스를 독립 배포하는 구조가 편의성과 복잡도를 동시에 가져온다는 걸 직접 다뤄보며 배웠습니다.