새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.

6 분 소요

목표 D-day : 91 일
리마인드 카운트 : 13번

# 학습 목표

  • 애플리케이션 모니터링 도구에 대해 학습을 합니다.
  • APM으로 사용하는 스카우터와 핀포인트에 대해 학습을 하고 비교해보겠습니다

APM 정의

APM (Application Performance Management)은 조직이 애플리케이션 및 코드의 성능 문제를 신속하게 식별하고 해결하기 위한 프로그램입니다.

APM 솔루션은 웹 사이트, 소프트웨어 애플리케이션 및 서비스에서 원격 측정 데이터를 수집, 모니터링 및 분석합니다. 이를 통해 애플리케이션 전반에 걸쳐 엔드 투 엔드 가시성을 확보하여 애플리케이션 및 서비스 종속성을 확인하고 오류나 속도 저하를 해결할 수 있습니다.

APM은 과거 데이터를 저장하고 활용하여 변화를 표면화하며, 대기 시간 및 처리량과 같은 주요 성능 지표에서 이상값을 탐지합니다.

엔드 투 엔드 가시성이란?

서비스 전반의 모든 작동 경로를 모니터링하고 분석할 수 있도록 하는 것을 의미합니다.

APM이 왜 필요할까?

APM이 필요한 이유를 간단하게 키워드로 정리해보겠습니다.

키워드

  • 모니터링 : 애플리케이션의 성능 데이터를 지속적으로 수집 및 분석합니다.
  • 문제식별 : 성능 저하나 오류를 신속하게 감지합니다.
  • 해결 : 성능 문제를 빠르게 수정하여 최적의 상태를 유지합니다.

APM은 성능 모니터링으로 애플리케이션의 매우 중요한 역할이며, 비즈니스에도 많은 이점을 제공합니다.

  1. 복구 시간 단축

    APM 도구를 워크플로에 도입하면 가장 즉각적인 이점입니다.

    잘 활용된 APM 도구는 문제를 조기에 자주 식별할 수 있습니다.

    서비스 중단 및 기타 중요한 사고로 부터 빠르게 복구할 수 있기 때문입니다.

    또한 사고에 대응하기보다는 중요한 메트릭을 적극적으로 측정하여 문제를 사전에 완화할 수 있습니다.

  2. 빠른 결함 진단

    모든 문제가 다운 타임을 초래하지 않습니다. 많은 결함과 기타 소프트웨어 버그는 중단없이 사용자의 경험에 미칠 수 있습니다. “대충 짐작”하는 방식의 문제 진단을 없애고 정확한 원인을 찾을 수 있습니다.

    결함을 진단하기 쉬울수록 개발자는 새로운 기능을 구축하는 데 더 많은 시간을 할애할 수 있습니다. 이는 더 안정적이고 성능 좋은 애플리케이션을 만드는 데 도움이 됩니다. 빠른 결함 수정으로 고객 이탈을 줄일 수 있습니다.

  3. 엔지니어링 생산성 향상

    APM의 주요 초점은 프로덕션 환경의 상태와 모니터링이지만, 사전 프로덕션 환경에도 통합할 이유가 있습니다.

    개발 및 스테이징 환경은 프로덕션 환경과 같은 트래픽을 처리하지 않지만, APM을 통합하면 일반적인 단위 및 통합 테스트로는 놓칠 수 있는 작은 문제를 식별할 수 있습니다. 이 추가 정보는 결함이 발생하기 전에 이를 예방하는 데 도움이 됩니다.

    예외 처리에서 시스템 성능까지, 개발 및 테스트 팀이 더 많은 정보를 가질 수록 고객에게 노출되기 전에 제품을 더욱 정밀하게 조정할 수 있습니다.

  4. 비용 절감 잘못 설계된 애플리케이션은 비용이 빠르게 증가할 수 있습니다. APM 도구를 사용하면 생산성과 안정성의 이점 외에도 애플리케이션 성능에 대한 통찰력을 통해 적절한 양의 리소스를 사용하여 애플리케이션을 운영할 수 있도록 기본 인프라를 조정할 수 있습니다.

    이는 CPU 및 메모리 요구 사항의 변화나 더 효율적인 코드 설계 등으로 나타날 수 있지만, 결과는 동일합니다: 애플리케이션을 유지하는 데 필요한 비용을 줄일 수 있는 기회가 생깁니다.

  5. 고객 만족도 APM 도구를 사용하는 모든 이점은 하나의 결과로 이어집니다: 고객 만족도. 불필요한 지출을 식별하고 줄이거나, 제품의 안정성을 개선하거나, 더 많은 기능을 효율적으로 출시하는 데 사용되든, 그 최종 결과는 더 행복하고 만족한 고객입니다.

스카우터와 핀포인트

한국에서 사용하는 대표적인 오픈 소스 APM으로 스카우터와 핀포인트를 비교해보겠습니다

더 다양한 상용 APM이나 오픈 소스 APM도 존재하지만 “선택의 역설”(The Paradox of Choice)로 선택과 집중을 해보겠습니다.

스카우터

APM 스카우터는 애플리케이션 성능 모니터링 도구로, 애플리케이션의 성능 및 동작을 실시간으로 모니터링하고 분석합니다. 스카우터는 네트워크 패킷을 수집하여 트랜잭션을 추적하고, InfluxDB를 사용해 성능 데이터를 저장합니다. 또한, 애플리케이션의 아키텍처를 분석하여 서비스 간의 종속 관계를 시각화하고 성능 문제를 탐지 및 해결하는 데 도움을 줍니다.

키워드

  • 네트워크 패킷 분석 방식
  • influxDB 사용
  • 가벼움

핀포인트

핀포인트(Pinpoint)는 애플리케이션 성능 모니터링(APM) 도구로, 대규모 분산 시스템의 성능 및 동작을 실시간으로 모니터링하고 분석합니다. 핀포인트는 각 서비스의 트랜잭션 경로를 추적하고, 분산된 서비스 간의 호출 관계를 시각화하여 애플리케이션의 성능 문제를 식별합니다. 또한, 성능 데이터를 수집 및 분석하여 이상 징후를 탐지하고, 문제를 해결하는 데 도움을 줍니다.

키워드

  • Trace ID 기반 트랜잭션 추적
  • HBase 사용
  • 분산 추적

비교

추적 방식

스카우터는 네트워크 패킷 분석을 하며, 핀포인트는 Trace ID 기반 트랜잭션 추적을 합니다.

이 차이로 인해 스카우터와 핀포인트의 차이가 발생하게 됩니다.

  • 네트워크 패킷 캡처는 네트워크 레벨에서 모든 트래픽을 모니터링하고 분석하는 데 유리하며, 애플리케이션 성능에 영향을 거의 주지 않습니다. 하지만 애플리케이션 내부 동작에 대한 상세한 정보를 제공하지 못하며, 암호화된 트래픽을 처리하는 데 어려움이 있습니다. 네트워크 문제 해결과 보안 분석에 적합합니다.
  • Trace ID 기반 트랜잭션 추적은 애플리케이션 레벨에서 트랜잭션의 경로를 추적하고 성능 병목을 분석하는 데 유리합니다. 분산 시스템에서 특히 유용하며, 애플리케이션 내부 동작에 대한 상세한 정보를 제공합니다. 그러나 에이전트 설치로 인해 애플리케이션 성능에 영향을 줄 수 있으며, 초기 설정과 관리가 복잡할 수 있습니다. 애플리케이션 성능 최적화와 마이크로서비스 아키텍처 분석에 적합합니다.
정리
  네트워크 패킷 캡처 Trace ID 기반 트랜잭션 추적
설명 네트워크 레벨에서 모든 트래픽을 모니터링하고 분석. 애플리케이션 성능에 영향 거의 없음. 애플리케이션 레벨에서 트랜잭션 경로를 추적하고 성능 병목을 분석. 분산 시스템에서 유용.
장점 네트워크 문제 해결과 보안 분석에 적합. 애플리케이션 내부 동작에 대한 상세 정보 제공하지 않음. 애플리케이션 내부 동작에 대한 상세 정보 제공. 애플리케이션 성능 최적화와 마이크로서비스 아키텍처 분석에 적합.
단점 암호화된 트래픽 처리 어려움. 에이전트 설치로 인해 애플리케이션 성능에 영향. 초기 설정과 관리 복잡.

저장 방식

스카우터는 InfluxDB로 실시간 시계열 데이터를 저장하는 목적이며, 핀포인트는 Hbase를 사용하여 분산 저장과 대용량 데이터 처리가 가능한 데이터베이스를 사용하기에 차이가 발생하게 됩니다.

설명
  1. 실시간 데이터 수집 및 처리
    • InfluxDB: 실시간 데이터 수집에 최적화되어 있으며, 초 단위로 데이터를 수집하여 빠른 응답이 가능합니다. 이는 실시간 모니터링 및 분석에 매우 유리합니다. 그러나 매우 높은 삽입 속도가 지속되면 성능 저하가 발생할 수 있습니다.
    • HBase: 실시간 데이터 수집도 가능하지만, 주로 배치 처리 및 대규모 데이터 스트리밍에 더 적합합니다. 분산 환경에서 대규모 데이터를 효율적으로 처리할 수 있지만, 설정 및 운영의 복잡성이 증가할 수 있습니다.
  2. 데이터 압축 및 저장 효율성
    • InfluxDB: 시계열 데이터에 대한 고유한 압축 및 집계 기능이 있어 저장 공간 효율성을 높이고 쿼리 성능을 향상시킵니다.
    • HBase: 데이터 복제 및 분산 저장을 통해 데이터 손실을 방지하고, 분산 컴퓨팅을 통해 대규모 데이터를 처리합니다. 그러나 압축 및 저장 효율성은 사용 사례에 따라 다를 수 있습니다.
  3. 확장성 및 관리
    • InfluxDB: 단일 노드 또는 소규모 클러스터 환경에서 관리가 용이하고, 설치 및 설정이 간단합니다. 그러나 대규모 데이터 세트에서는 확장성이 제한될 수 있습니다.
    • HBase: 수평 확장이 용이하며, 대규모 데이터 세트에서 높은 성능을 유지할 수 있습니다. 하지만 초기 설정 및 지속적인 운영 관리가 복잡할 수 있습니다.
  • 실시간 데이터 수집 및 빠른 응답이 중요한 경우 InfluxDB가 더 적합할 수 있다.
  • 대규모 데이터 처리 및 확장성이 중요한 경우 HBase가 더 나은 선택일 수 있습니다.
정리
항목 구분 InfluxDB HBase
실시간 데이터 수집 및 처리 장점 실시간 데이터 수집에 최적화, 초 단위 데이터 수집, 빠른 응답 가능 실시간 데이터 수집 가능, 대규모 데이터 스트리밍에 적합
  단점 매우 높은 삽입 속도가 지속되면 성능 저하 발생 가능 설정 및 운영의 복잡성 증가
데이터 압축 및 저장 효율성 장점 시계열 데이터에 대한 고유한 압축 및 집계 기능, 저장 공간 효율성 높음, 쿼리 성능 향상 데이터 복제 및 분산 저장을 통해 데이터 손실 방지, 분산 컴퓨팅으로 대규모 데이터 처리
  단점 특정 사용 사례에서만 최적화 가능 압축 및 저장 효율성은 사용 사례에 따라 다름
확장성 및 관리 장점 단일 노드 또는 소규모 클러스터 환경에서 관리 용이, 설치 및 설정 간단 수평 확장 용이, 대규모 데이터 세트에서 높은 성능 유지
  단점 대규모 데이터 세트에서는 확장성 제한 가능 초기 설정 및 지속적인 운영 관리 복잡
  • 실시간 데이터 수집 및 빠른 응답이 중요한 경우 InfluxDB가 더 적합할 수 있다.
  • 대규모 데이터 처리 및 확장성이 중요한 경우 HBase가 더 나은 선택일 수 있습니다.

총 정리

특징 스카우터(Scouter) 핀포인트(Pinpoint)
데이터 수집 방식 에이전트 기반 수집, 네트워크 패킷 캡처 에이전트 기반 수집, Trace ID를 사용한 트랜잭션 추적
데이터 전송 방식 실시간 전송, 압축 및 집계 전송 비동기 전송, 버퍼링 및 배치 전송
데이터 저장 메모리 및 디스크 저장 HBase 및 Elasticsearch 사용, 분산 저장
특징 실시간 모니터링, 네트워크 트래픽 모니터링 가능 트랜잭션 경로 추적 및 시각화, 대규모 데이터 저장 및 빠른 검색
  • Scouter는 실시간 모니터링과 네트워크 트래픽 모니터링에 강점을 가집니다.
  • Pinpoint는 트랜잭션 추적 및 시각화, 대규모 데이터 저장 및 검색에 강점을 가집니다.

참조

태그:

카테고리:

업데이트:

댓글남기기