이번 강의에서는 마이크로서비스 네트워크에서 로그 집계(log aggregation)를 구현하는 방법을 알아보겠습니다. 로그는 소프트웨어 애플리케이션에서 발생하는 이벤트의 기록이며, 각 로그에는 이벤트가 발생한 시간과 이벤트의 세부 정보가 포함됩니다. 로그는 문제 해결과 디버깅의 핵심 도구로 사용되며, 애플리케이션이 어떤 상황에서 어떤 동작을 했는지 재구성하는 데 도움을 줍니다.
로그는 시스템에서 발생하는 다양한 이벤트의 기록입니다. 로그는 보통 타임스탬프와 함께 기록되며, 이는 이벤트가 언제 발생했는지를 알려줍니다. 로그를 통해 다음과 같은 질문에 대한 답을 찾을 수 있습니다:
로그는 크게 trace, debug, info, warn, error 같은 심각도(severity) 수준으로 구분됩니다. 이는 개발자가 시스템의 상태를 더 잘 이해할 수 있도록 돕고, 프로덕션 환경에서는 성능에 영향을 미치지 않도록 중요한 이벤트들만 로그로 남기게 합니다.
모놀리식 애플리케이션에서는 모든 코드가 단일 코드베이스에 있기 때문에 모든 로그가 단일 위치나 서버에 기록됩니다. 이는 로그를 찾고 문제를 해결하는 데 있어 비교적 간단합니다. 개발자는 특정 폴더나 파일에서 모든 로그를 확인할 수 있습니다.
하지만 마이크로서비스 아키텍처에서는 각 서비스가 독립적으로 실행되며, 각각의 서비스가 별도의 로그를 생성합니다. 따라서 여러 위치에 분산된 다양한 로그 파일을 확인해야 하므로, 이는 매우 복잡하고 시간 소모적인 작업이 됩니다. 예를 들어, 하나의 요청이 여러 마이크로서비스를 거친다면, 개발자는 여러 컨테이너에서 로그를 확인해야만 문제를 정확히 파악할 수 있습니다.
이러한 문제를 해결하기 위해 중앙화된 로그 집계(Centralized Logging) 방법을 도입할 수 있습니다. 중앙화된 로그 집계는 모든 서비스에서 생성된 로그를 수집하여 하나의 중앙 위치에 저장하는 방식입니다. 이렇게 하면 개발자는 모든 로그를 한곳에서 확인