시스템 아키텍트DevOps 엔지니어

분산 애플리케이션 아키텍처에서 모니터링 및 로깅을 어떻게 구성할 수 있나요?

Hintsage AI 어시스턴트로 면접 통과

답변.

분산 IT 아키텍처에서 모니터링 및 로깅 구성은 시스템의 안정성 확보, 오류 식별 및 분석, 서비스 성능 평가 등에서 핵심적입니다. 모든 서비스에 대해 중앙집중식 로깅 및 메트릭 시스템을 구현하는 것이 중요합니다.

일반적인 단계:

  1. 중앙집중식 로깅 — 모든 서비스가 단일 시스템(예: ELK 스택: Elasticsearch, Logstash, Kibana 또는 Grafana Loki)에 로그를 기록합니다.
  2. 트랜잭션 추적 — 서비스 간의 요청 “경로”를 추적하기 위해 분산 추적 시스템(예: Jaeger, Zipkin)을 사용합니다.
  3. 모니터링 및 알림 — 메트릭 수집 및 시각화를 위해 Prometheus, Grafana를 사용하고 알림을 설정합니다.

Python에서 로깅 설정 예:

import logging from pythonjsonlogger import jsonlogger logger = logging.getLogger() logHandler = logging.StreamHandler() formatter = jsonlogger.JsonFormatter() logHandler.setFormatter(formatter) logger.addHandler(logHandler) logger.setLevel(logging.INFO) logger.info('Service started', extra={'service': 'orders', 'env': 'prod'})

주요 특징:

  • 전체 인프라에 대한 단일 투명성 창을 제공합니다.
  • 다중 환경에서 인시던트 검색 및 분석을 간소화합니다.
  • 구성 요소의 저하 또는 장애에 신속하게 대응할 수 있도록 합니다.

함정 질문.

모든 서비스의 모든 작업을 INFO 수준에서 항상 로깅해야 하나요?

답변: 아니요, 이렇게 하면 로그 양이 급격히 증가하고 성능 저하가 발생하며 실제 오류를 찾기 어렵게 될 수 있습니다. 로그 레벨의 의미를 지키는 것이 좋으며(DRAG는 디버깅용, ERROR는 심각한 문제용, INFO는 중요한 이벤트용).


인프라 수준(CPU, RAM)에서만 메트릭을 수집하고 애플리케이션 수준 메트릭은 무시할 수 있나요?

답변: 아니요. 애플리케이션 수준 메트릭(예: 응답 시간, 오류 수)은 비즈니스 분석 및 신속 대응에 필수적이며, 서비스 로직에서의 “병목 현상”을 이해하는 데 도움이 됩니다, 하드웨어만이 아닙니다.


분산 시스템에서 HTTP 요청의 표준 추적만으로 충분한가요?

답변: 잘못된 것입니다. 서비스 체인을 포함하는 복잡한 시나리오에서는 모든 단계에서 요청 처리 경로와 시간을 보기 위해 유니크한 Trace-Id가 필요함에 따라 완전한 분산 추적이 필요합니다.