모놀리식 환경: 로그 파일이 하나의 서버에만 존재하므로, 문제가 발생하면 해당 서버에 접속하여 로그 파일을 직접 확인하면 됩니다.
MSA의 문제점: 수십, 수백 개의 서비스 인스턴스가 각자 로그 파일을 생성합니다. 특정 요청 처리 중 발생한 오류를 찾기 위해, 어떤 서비스의 어떤 인스턴스에 로그가 남았는지 알 수 없어 문제 추적이 매우 어렵습니다.
해결책 (중앙 집중식 로깅 시스템):
핵심: 모든 로그를 한 곳에 모아 통합 검색이 가능하도록 만드는 것이 분산 로깅의 핵심입니다.
모놀리식 환경: 모니터링 대상이 되는 서버와 애플리케이션이 소수이므로, 각 서버의 CPU, 메모리 등을 개별적으로 확인하는 것이 가능합니다.
MSA의 문제점: 수많은 서비스 인스턴스와 그 기반 인프라(컨테이너, VM 등)의 상태를 개별적으로 모니터링하는 것은 불가능합니다. 전체 시스템의 건강 상태를 한눈에 파악할 수 있는 통합된 뷰가 필요합니다.
해결책 (중앙 집중식 모니터링 시스템):
문제점: MSA 환경에서 클라이언트의 요청 하나는 내부적으로 여러 마이크로서비스를 거쳐 처리됩니다. (e.g., API 게이트웨이 → 주문 서비스 → 결제 서비스 → 알림 서비스) 만약 전체 응답 시간이 느려졌을 때, 어떤 서비스 구간에서 병목이 발생했는지를 파악하기가 매우 어렵습니다.
분산 추적:
개념: 여러 서비스에 걸쳐 이루어지는 요청의 전체 여정(Journey)을 시각화하고, 각 단계에서 소요된 시간을 측정하여 성능 병목과 에러의 원인을 분석하는 기술입니다.
동작 원리:
Trace ID를 생성합니다.Trace ID를 계속해서 전파합니다.Trace ID와 함께 자신의 작업 단위를 나타내는 Span ID를 생성하여 로그나 추적 시스템에 기록합니다.Trace ID와 Span ID 정보를 재구성하여, 아래와 같은 타임라인 그래프(Gantt Chart) 형태로 보여줍니다.[ Trace ID: abc-123 ]
API Gateway: |██████████████████████████████████████| 300ms
└── 주문 서비스: |██████████████████████████| 200ms
└── 결제 서비스: |██████████| 100ms
└── 알림 서비스: |███| 30ms (비동기)
효과: 위와 같은 시각화를 통해, "결제 서비스에서 100ms나 걸려서 전체 응답이 느려졌구나!" 와 같이 병목 지점을 명확하게 식별할 수 있습니다.
대표적인 표준 및 도구: OpenTelemetry (표준), Jaeger, Zipkin