Telemetry (텔레메트리)
# Telemetry
마이크로서비스 아키텍처에서 Telemetry는 발생가능한 이슈를 대비하기 위해 반드시 필요한 요소이다. Monitoring, Logging을 포함하여 Alerting 기능과 각 서비스 간 Tracing이 가능한 도구를 제공하여 지속적이고 효과적으로 모니터링하고 이슈에 대응할 수 있도록 해야한다. Telemetry는 기본적으로 컨테이너 환경에서는 Container 내부에 로그를 남기지 않으며 대부분 수십대 많게는 수백대의 컨테이너를 관리 하기 때문에 이에 대한 가시성을 확보 및 로그를 관리 하는 역할을 담당한다.
# Telemetry 주요 기능
# Monitoring
모니터링은 인프라 및 응용 프로그램의 성능이나 효율성을 확인하는 작업이다. Monitoring을 위해서는 metric 수집, logging, Tracing 영역에서의 데이터 수집 및 분석이 필요하다. MSA 구조에서 대상의 성능이나 효율성을 확인하고, AWS에서는 AWS CloudWatch, OSS로는 Prometheus등이 있다. 모니터링은 각 대상에게서 수집한 Metric을 통해 대상 리소스의 사용률 등을 수치로 표현하는 기능을 수행한다.
# Logging
Logging은 MSA 구조에서 대상의 log들을 수집해서 보여주는 서비스로, AWS에서는 AWS ElasticSearch가 있고, OSS로는 EFK 혹은 ELK가 있다. 각 대상에 배포된 Agent 역할을 하는 forwarder들이 로그를 수집해 aggregator가 그 로그를 취합하고, aggregator가 저장한 로그들을 Kibana등의 Visualization tool을 사용해 사용자 혹은 관리자에게 보여준다.
# Tracing
Tracing은 마이크로 서비스 아키텍처에서 발생한 Event를 발생한 순서대로 나열하여 추적할 수 있게 해주는 기능이다. AWS에서는 AWS X-Ray가 있고, OSS로는 Zipkin이나 Jaeger, Spring Cloud Sleuth, OpenTracing 등이 있다. 시간 순으로 요청을 보여주고 어떤 단계에서 성공 혹은 실패를 했는지 보여주기 때문에, MSA에서 어떤 부분에 오류가 발생했는지를 쉽게 파악할 수 있다.