Java/JS 분산 시스템 경험 구체화
졸업 프로젝트에서 Node.js와 Java Spring Boot를 함께 쓰는 마이크로서비스 구조를 설계한 경험이 있습니다. 프론트엔드 BFF는 Node.js로, 인증·주문·결제 서비스는 Spring Boot로 분리했고 Kafka로 서비스 간 이벤트를 전달하는 구조를 썼습니다. 가장 어려웠던 건 분산 트랜잭션 처리였는데, 결제와 주문 상태가 동시에 업데이트되어야 할 때 한쪽이 실패하면 롤백이 복잡해지는 문제가 있었습니다.
Saga 패턴을 도입해 각 서비스가 보상 트랜잭션을 처리하는 방식으로 해결했습니다. 분산 환경에서 서비스 간 통신 실패를 가정하고 설계하는 것이 기본임을 실제로 겪으면서 배웠습니다. 앞으로도 이벤트 기반 통신과 보상 트랜잭션으로 분산 시스템의 일관성을 유지하는 방식을 유지하겠습니다. 앞으로도 이벤트 기반 통신과 보상 트랜잭션으로 분산 시스템의 일관성을 유지하는 방식을 유지하겠습니다.
분산 환경에서 서비스 간 통신 실패를 가정하고 설계하는 것이 안정성의 기본입니다. Saga 패턴이 복잡한 분산 트랜잭션을 각 서비스가 독립적으로 처리하게 만드는 핵심 구조입니다.