서비스 분리 기준 설계·서비스 간 통신 방식·분산 트레이싱으로 MSA 운영 결
MSA 기반 시스템 개발에서 가장 먼저 고민한 것은 서비스 경계를 어디서 나눌 것인가였습니다. 도메인 기준으로 분리했을 때 서비스 간 의존도가 낮아지고 각 서비스가 독립적으로 배포될 수 있어야 MSA의 이점이 실현됐습니다. 경계가 잘못 나뉘면 결국 서비스들이 강하게 결합돼 모놀리스보다 관리하기 어려워졌습니다.
서비스 간 통신은 동기와 비동기 방식을 용도에 맞게 구분해 사용했습니다. 즉각 응답이 필요한 경우는 REST, 이벤트 기반 처리는 메시지 큐를 활용했고, 장애가 한 서비스에 전파되지 않도록 타임아웃과 재시도 정책을 각 호출에 설정했습니다.
운영 단계에서는 분산 트레이싱 도구로 요청 흐름을 추적했습니다. 여러 서비스를 거치는 요청에서 어느 구간에서 지연이 발생하는지를 확인하지 않으면 원인 파악이 어려웠고, 트레이싱 ID를 로그에 포함하는 것이 장애 대응 속도를 높이는 핵심이었습니다.