
흩어진 MSA 로그를 하나의 식별자로 꿰어 복잡한 전시 로직의 실체를 드러내다
마이크로서비스 아키텍처에서 발생하는 복잡한 전시 누락 이슈를 해결하기 위한 SSG 프론트서비스개발팀의 분투기를 다룹니다. 단순히 로그를 쌓는 것을 넘어, 요청 흐름을 시각화하고 직접 API를 재현할 수 있는 실행형 도구 '영원희'를 통해 운영 효율과 서비스 성능을 동시에 잡은 경험을 공유합니다.
복잡한 데이터 가공 로직이 포함된 MSA 환경의 백엔드 개발자나 운영 효율화를 고민하는 데브렐 엔지니어에게 강력히 추천합니다.
복잡한 전시 로직과 MSA 환경으로 인해 특정 상품이나 배너가 노출되지 않을 때 원인을 파악하기 위해 여러 시스템의 DB와 로그를 수작업으로 대조해야 하는 번거로움이 있었다. 단순 조회 결과만으로는 전처리, 외부 API 호출, 후처리 로직 중 어느 단계에서 데이터가 누락되었는지 즉각적으로 판별하기 어려웠다.
logGroupId라는 단일 식별자를 통해 요청의 시작부터 끝까지의 흐름을 묶고, Kafka와 MongoDB를 이용해 비동기적으로 로그를 수집하여 시간 순서대로 시각화하는 디버깅 도구 '영원희'를 구축했다. 2.0 버전에서는 Swagger 명세와 연동하여 화면에서 직접 API를 호출하고 재현할 수 있는 실행형 디버깅 기능을 추가했다.
분산된 로그를 한눈에 파악할 수 있게 되어 운영 대응 속도가 획기적으로 개선되었으며, 로그 추적 과정에서 발견된 불필요한 중복 API 호출을 제거하여 서비스 성능 최적화에도 기여했다. 상품 및 기획전 유효성 검증 등 전시 운영 데이터를 해석하는 기반 도구로 확장되었다.
Trade-off
메인 서비스의 부하를 최소화하기 위해 비동기 처리를 도입했으나, 보안 및 보관 비용 이슈로 인해 수집된 로그 데이터는 1시간 동안만 유지된다는 제한 사항이 있다. 또한 초기 버전은 특정 서비스에 국한되어 전사적인 활용도가 낮았던 한계가 있었다.
마이크로서비스 환경에서 각 서비스 간의 호출 경로를 고유 식별자로 연결하여 요청의 전체 흐름을 추적하는 기법이다.
애플리케이션의 주 로직이 로그 기록 작업으로 인해 지연되지 않도록 별도의 큐나 메시지 브로커를 사용하는 방식이다.
시스템의 내부 상태를 외부로 출력되는 데이터(로그, 메트릭, 트레이스 등)를 통해 명확히 파악할 수 있는 능력을 의미한다.