AI: 성능 모니터링 – Continuous Profiling
ㅁ 성능 모니터링
1. Continuous Profiling
ㅇ 정의:
애플리케이션이 운영되는 동안 CPU, 메모리, I/O, 네트워크 사용량 등 성능 지표를 지속적으로 수집하고 분석하여 병목 지점을 실시간 혹은 주기적으로 식별하는 기법.
ㅇ 특징:
– 실시간 또는 준실시간으로 성능 데이터를 수집
– 코드 변경 없이 운영 환경에서 동작 가능
– 장기적인 성능 추세 분석 가능
– 오버헤드 최소화를 위해 샘플링 기반 수집 방식을 주로 사용
ㅇ 적합한 경우:
– 마이크로서비스 환경에서 서비스별 리소스 사용량 추적이 필요한 경우
– 프로덕션 환경에서 간헐적으로 발생하는 성능 저하 원인 분석
– 장기간의 성능 데이터 축적을 통한 최적화 포인트 발굴
ㅇ 시험 함정:
– “Continuous Profiling은 개발 환경에서만 사용하는 기술이다” → X (운영 환경에서도 사용)
– “Continuous Profiling은 특정 시점의 스냅샷만 제공한다” → X (지속적 수집)
– “Continuous Profiling은 성능 오버헤드가 커서 운영 환경에 적합하지 않다” → X (샘플링 기법으로 오버헤드 최소화)
ㅇ 시험 대비 “패턴 보기” 예시:
– O: “Continuous Profiling은 운영 환경에서 장기간 성능 데이터를 수집해 병목을 식별한다.”
– X: “Continuous Profiling은 코드 변경 후 QA 환경에서만 사용한다.”
– O: “Continuous Profiling은 샘플링 기반으로 동작하여 오버헤드를 줄인다.”
– X: “Continuous Profiling은 특정 시점의 CPU 사용량만 측정한다.”
ㅁ 추가 학습 내용
Continuous Profiling과 APM(Application Performance Monitoring)의 차이점은 다음과 같다.
APM은 요청 단위의 트랜잭션 추적과 서비스 레벨 지표를 제공하며, 주로 애플리케이션의 전반적인 성능 상태를 모니터링한다.
Continuous Profiling은 코드 레벨에서 함수 호출 스택, CPU 샘플링, 메모리 할당 패턴 등 저수준 성능 데이터를 장기간 수집하여 세밀한 성능 분석이 가능하다.
Continuous Profiling 관련 핵심 학습 요소는 다음과 같다.
– eBPF 기반 프로파일링 기법: 커널 레벨에서 저오버헤드로 성능 데이터를 수집하는 방식
– Flame Graph 해석 방법: 함수 호출 관계와 자원 사용 비중을 시각적으로 분석
– 샘플링 주기 설정: 짧을수록 정확도는 높아지나 오버헤드 증가, 길어질수록 오버헤드는 줄지만 세밀한 데이터 손실 가능
– 보안 및 개인정보 보호 고려사항: 운영 환경 데이터 수집 시 로그나 메모리 내에 민감정보가 포함될 수 있으므로 필터링 및 마스킹 필요