새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
Scouter와 Pinpoint 어떤걸 사용해야할까
목표 D-day : 91 일
리마인드 카운트 : 13번
# 학습 목표
- 애플리케이션 모니터링 도구에 대해 학습을 합니다.
- APM으로 사용하는 스카우터와 핀포인트에 대해 학습을 하고 비교해보겠습니다
APM 정의
APM (Application Performance Management)은 조직이 애플리케이션 및 코드의 성능 문제를 신속하게 식별하고 해결하기 위한 프로그램입니다.
APM 솔루션은 웹 사이트, 소프트웨어 애플리케이션 및 서비스에서 원격 측정 데이터를 수집, 모니터링 및 분석합니다. 이를 통해 애플리케이션 전반에 걸쳐 엔드 투 엔드 가시성을 확보하여 애플리케이션 및 서비스 종속성을 확인하고 오류나 속도 저하를 해결할 수 있습니다.
APM은 과거 데이터를 저장하고 활용하여 변화를 표면화하며, 대기 시간 및 처리량과 같은 주요 성능 지표에서 이상값을 탐지합니다.
엔드 투 엔드 가시성이란?
서비스 전반의 모든 작동 경로를 모니터링하고 분석할 수 있도록 하는 것을 의미합니다.
APM이 왜 필요할까?
APM이 필요한 이유를 간단하게 키워드로 정리해보겠습니다.
키워드
- 모니터링 : 애플리케이션의 성능 데이터를 지속적으로 수집 및 분석합니다.
- 문제식별 : 성능 저하나 오류를 신속하게 감지합니다.
- 해결 : 성능 문제를 빠르게 수정하여 최적의 상태를 유지합니다.
APM은 성능 모니터링으로 애플리케이션의 매우 중요한 역할이며, 비즈니스에도 많은 이점을 제공합니다.
-
복구 시간 단축
APM 도구를 워크플로에 도입하면 가장 즉각적인 이점입니다.
잘 활용된 APM 도구는 문제를 조기에 자주 식별할 수 있습니다.
서비스 중단 및 기타 중요한 사고로 부터 빠르게 복구할 수 있기 때문입니다.
또한 사고에 대응하기보다는 중요한 메트릭을 적극적으로 측정하여 문제를 사전에 완화할 수 있습니다.
-
빠른 결함 진단
모든 문제가 다운 타임을 초래하지 않습니다. 많은 결함과 기타 소프트웨어 버그는 중단없이 사용자의 경험에 미칠 수 있습니다. “대충 짐작”하는 방식의 문제 진단을 없애고 정확한 원인을 찾을 수 있습니다.
결함을 진단하기 쉬울수록 개발자는 새로운 기능을 구축하는 데 더 많은 시간을 할애할 수 있습니다. 이는 더 안정적이고 성능 좋은 애플리케이션을 만드는 데 도움이 됩니다. 빠른 결함 수정으로 고객 이탈을 줄일 수 있습니다.
-
엔지니어링 생산성 향상
APM의 주요 초점은 프로덕션 환경의 상태와 모니터링이지만, 사전 프로덕션 환경에도 통합할 이유가 있습니다.
개발 및 스테이징 환경은 프로덕션 환경과 같은 트래픽을 처리하지 않지만, APM을 통합하면 일반적인 단위 및 통합 테스트로는 놓칠 수 있는 작은 문제를 식별할 수 있습니다. 이 추가 정보는 결함이 발생하기 전에 이를 예방하는 데 도움이 됩니다.
예외 처리에서 시스템 성능까지, 개발 및 테스트 팀이 더 많은 정보를 가질 수록 고객에게 노출되기 전에 제품을 더욱 정밀하게 조정할 수 있습니다.
-
비용 절감 잘못 설계된 애플리케이션은 비용이 빠르게 증가할 수 있습니다. APM 도구를 사용하면 생산성과 안정성의 이점 외에도 애플리케이션 성능에 대한 통찰력을 통해 적절한 양의 리소스를 사용하여 애플리케이션을 운영할 수 있도록 기본 인프라를 조정할 수 있습니다.
이는 CPU 및 메모리 요구 사항의 변화나 더 효율적인 코드 설계 등으로 나타날 수 있지만, 결과는 동일합니다: 애플리케이션을 유지하는 데 필요한 비용을 줄일 수 있는 기회가 생깁니다.
-
고객 만족도 APM 도구를 사용하는 모든 이점은 하나의 결과로 이어집니다: 고객 만족도. 불필요한 지출을 식별하고 줄이거나, 제품의 안정성을 개선하거나, 더 많은 기능을 효율적으로 출시하는 데 사용되든, 그 최종 결과는 더 행복하고 만족한 고객입니다.
스카우터와 핀포인트
한국에서 사용하는 대표적인 오픈 소스 APM으로 스카우터와 핀포인트를 비교해보겠습니다
더 다양한 상용 APM이나 오픈 소스 APM도 존재하지만 “선택의 역설”(The Paradox of Choice)로 선택과 집중을 해보겠습니다.
스카우터
APM 스카우터는 애플리케이션 성능 모니터링 도구로, 애플리케이션의 성능 및 동작을 실시간으로 모니터링하고 분석합니다. 스카우터는 네트워크 패킷을 수집하여 트랜잭션을 추적하고, InfluxDB를 사용해 성능 데이터를 저장합니다. 또한, 애플리케이션의 아키텍처를 분석하여 서비스 간의 종속 관계를 시각화하고 성능 문제를 탐지 및 해결하는 데 도움을 줍니다.
키워드
- 네트워크 패킷 분석 방식
- influxDB 사용
- 가벼움
핀포인트
핀포인트(Pinpoint)는 애플리케이션 성능 모니터링(APM) 도구로, 대규모 분산 시스템의 성능 및 동작을 실시간으로 모니터링하고 분석합니다. 핀포인트는 각 서비스의 트랜잭션 경로를 추적하고, 분산된 서비스 간의 호출 관계를 시각화하여 애플리케이션의 성능 문제를 식별합니다. 또한, 성능 데이터를 수집 및 분석하여 이상 징후를 탐지하고, 문제를 해결하는 데 도움을 줍니다.
키워드
- Trace ID 기반 트랜잭션 추적
- HBase 사용
- 분산 추적
비교
추적 방식
스카우터는 네트워크 패킷 분석을 하며, 핀포인트는 Trace ID 기반 트랜잭션 추적을 합니다.
이 차이로 인해 스카우터와 핀포인트의 차이가 발생하게 됩니다.
- 네트워크 패킷 캡처는 네트워크 레벨에서 모든 트래픽을 모니터링하고 분석하는 데 유리하며, 애플리케이션 성능에 영향을 거의 주지 않습니다. 하지만 애플리케이션 내부 동작에 대한 상세한 정보를 제공하지 못하며, 암호화된 트래픽을 처리하는 데 어려움이 있습니다. 네트워크 문제 해결과 보안 분석에 적합합니다.
- Trace ID 기반 트랜잭션 추적은 애플리케이션 레벨에서 트랜잭션의 경로를 추적하고 성능 병목을 분석하는 데 유리합니다. 분산 시스템에서 특히 유용하며, 애플리케이션 내부 동작에 대한 상세한 정보를 제공합니다. 그러나 에이전트 설치로 인해 애플리케이션 성능에 영향을 줄 수 있으며, 초기 설정과 관리가 복잡할 수 있습니다. 애플리케이션 성능 최적화와 마이크로서비스 아키텍처 분석에 적합합니다.
정리
네트워크 패킷 캡처 | Trace ID 기반 트랜잭션 추적 | |
---|---|---|
설명 | 네트워크 레벨에서 모든 트래픽을 모니터링하고 분석. 애플리케이션 성능에 영향 거의 없음. | 애플리케이션 레벨에서 트랜잭션 경로를 추적하고 성능 병목을 분석. 분산 시스템에서 유용. |
장점 | 네트워크 문제 해결과 보안 분석에 적합. 애플리케이션 내부 동작에 대한 상세 정보 제공하지 않음. | 애플리케이션 내부 동작에 대한 상세 정보 제공. 애플리케이션 성능 최적화와 마이크로서비스 아키텍처 분석에 적합. |
단점 | 암호화된 트래픽 처리 어려움. | 에이전트 설치로 인해 애플리케이션 성능에 영향. 초기 설정과 관리 복잡. |
저장 방식
스카우터는 InfluxDB로 실시간 시계열 데이터를 저장하는 목적이며, 핀포인트는 Hbase를 사용하여 분산 저장과 대용량 데이터 처리가 가능한 데이터베이스를 사용하기에 차이가 발생하게 됩니다.
설명
- 실시간 데이터 수집 및 처리
- InfluxDB: 실시간 데이터 수집에 최적화되어 있으며, 초 단위로 데이터를 수집하여 빠른 응답이 가능합니다. 이는 실시간 모니터링 및 분석에 매우 유리합니다. 그러나 매우 높은 삽입 속도가 지속되면 성능 저하가 발생할 수 있습니다.
- HBase: 실시간 데이터 수집도 가능하지만, 주로 배치 처리 및 대규모 데이터 스트리밍에 더 적합합니다. 분산 환경에서 대규모 데이터를 효율적으로 처리할 수 있지만, 설정 및 운영의 복잡성이 증가할 수 있습니다.
- 데이터 압축 및 저장 효율성
- InfluxDB: 시계열 데이터에 대한 고유한 압축 및 집계 기능이 있어 저장 공간 효율성을 높이고 쿼리 성능을 향상시킵니다.
- HBase: 데이터 복제 및 분산 저장을 통해 데이터 손실을 방지하고, 분산 컴퓨팅을 통해 대규모 데이터를 처리합니다. 그러나 압축 및 저장 효율성은 사용 사례에 따라 다를 수 있습니다.
- 확장성 및 관리
- InfluxDB: 단일 노드 또는 소규모 클러스터 환경에서 관리가 용이하고, 설치 및 설정이 간단합니다. 그러나 대규모 데이터 세트에서는 확장성이 제한될 수 있습니다.
- HBase: 수평 확장이 용이하며, 대규모 데이터 세트에서 높은 성능을 유지할 수 있습니다. 하지만 초기 설정 및 지속적인 운영 관리가 복잡할 수 있습니다.
- 실시간 데이터 수집 및 빠른 응답이 중요한 경우 InfluxDB가 더 적합할 수 있다.
- 대규모 데이터 처리 및 확장성이 중요한 경우 HBase가 더 나은 선택일 수 있습니다.
정리
항목 | 구분 | InfluxDB | HBase |
---|---|---|---|
실시간 데이터 수집 및 처리 | 장점 | 실시간 데이터 수집에 최적화, 초 단위 데이터 수집, 빠른 응답 가능 | 실시간 데이터 수집 가능, 대규모 데이터 스트리밍에 적합 |
단점 | 매우 높은 삽입 속도가 지속되면 성능 저하 발생 가능 | 설정 및 운영의 복잡성 증가 | |
데이터 압축 및 저장 효율성 | 장점 | 시계열 데이터에 대한 고유한 압축 및 집계 기능, 저장 공간 효율성 높음, 쿼리 성능 향상 | 데이터 복제 및 분산 저장을 통해 데이터 손실 방지, 분산 컴퓨팅으로 대규모 데이터 처리 |
단점 | 특정 사용 사례에서만 최적화 가능 | 압축 및 저장 효율성은 사용 사례에 따라 다름 | |
확장성 및 관리 | 장점 | 단일 노드 또는 소규모 클러스터 환경에서 관리 용이, 설치 및 설정 간단 | 수평 확장 용이, 대규모 데이터 세트에서 높은 성능 유지 |
단점 | 대규모 데이터 세트에서는 확장성 제한 가능 | 초기 설정 및 지속적인 운영 관리 복잡 |
- 실시간 데이터 수집 및 빠른 응답이 중요한 경우 InfluxDB가 더 적합할 수 있다.
- 대규모 데이터 처리 및 확장성이 중요한 경우 HBase가 더 나은 선택일 수 있습니다.
총 정리
특징 | 스카우터(Scouter) | 핀포인트(Pinpoint) |
---|---|---|
데이터 수집 방식 | 에이전트 기반 수집, 네트워크 패킷 캡처 | 에이전트 기반 수집, Trace ID를 사용한 트랜잭션 추적 |
데이터 전송 방식 | 실시간 전송, 압축 및 집계 전송 | 비동기 전송, 버퍼링 및 배치 전송 |
데이터 저장 | 메모리 및 디스크 저장 | HBase 및 Elasticsearch 사용, 분산 저장 |
특징 | 실시간 모니터링, 네트워크 트래픽 모니터링 가능 | 트랜잭션 경로 추적 및 시각화, 대규모 데이터 저장 및 빠른 검색 |
- Scouter는 실시간 모니터링과 네트워크 트래픽 모니터링에 강점을 가집니다.
- Pinpoint는 트랜잭션 추적 및 시각화, 대규모 데이터 저장 및 검색에 강점을 가집니다.
댓글남기기