APM(Application Performance Monitoring)은 메트릭스 수집, 요청 추적 및 실시간 오류 진단을 포함하는 소프트웨어 성능 모니터링의 포괄적인 접근 방식입니다. Gartner IT Glossary, 2024에 따르면, APM은 세 가지 핵심 영역을 결합합니다: 사용자 경험 모니터링, 애플리케이션 아키텍처 장애 감지, 그리고 깊이 있는 사고 진단을 위한 실행 데이터 분석입니다.
핵심 요점
APM(Application Performance Monitoring)은 소프트웨어 운영 데이터의 수집, 시각화 및 분석을 포함하는 애플리케이션 성능 관리 분야입니다. 개별 메트릭스(CPU, 메모리)의 포인트 모니터링과 달리, APM은 홀리스틱한 관점을 제공합니다: 사용자 관점에서 애플리케이션이 어떻게 동작하는지, 구성 요소가 어떻게 상호작용하는지, 그리고 병목이 어디서 발생하는지를 파악할 수 있습니다.
APM 개념은 2010년대에 모노리시스 애플리케이션에서 마이크로서비스 아키텍처로의 전환과 함께 등장했습니다. 서비스수가 10~15업체를 초과했을 때, 전통적인 모니터링 방법은 작동하지 않았습니다 — 어떤 특정 서비스가 안나 요청을 늘리고 있는지 확인하는 것이 불가능했기 때문입니다. APM 솔루션은 분산 트레이싱과 자동 서비스 맵 구축을 통해 이 문제를 해결했습니다.
Grand View Research (2024)에 따르면, APM 시장은 82억 미국 달러로 평가되며 연 11.5%씩 성장하고 있습니다. 주요 동력으로는 클라우드 이전, 마이크로서비스 수 증가, 그리고 모바일 애플리케이션 및 웹 서비스에서의 사용자 경험 품질에 대한 요구 증가가 있습니다.
현대 APM은 애플리케이션 상태의 완전한 그림을 형성하는 세 가지 유형의 데이터로 구축되어 있습니다. 메트릭스는 수치적 집계치입니다: 응답 시간, 요청 수, 오류율. 이든은 “무슨 일이 일어나고 있는가”라는 질문에 답하고 임계값에 기초한 경보를 설정할 수 있습니다.
트레이싱(분산 트레이싱)은 “왜 이런 일이 일어나고 있는가”라는 질문에 답합니다. 각 수신 요청은 모든 마이크로서비스, 데이터베이스, 그리고 외부 호출을 통해 추적됩니다. APM 시스템은 메트릭스와 트레이싱을 결합합니다: 응답 시간 메트릭스갌 증가한 경우, 개발자는 트레이스 대시보드로 이동하여 각 서비스별로 세분된 지연을 유발한 정확한 요청을 확인할 수 있습니다.
로그는 문맥을 제공합니다 — 구체적인 오류 메시지, 변수값, 콜 스택 등이입니다. 현대 APM 플랫폼(Datadog, New Relic, Grafana)은 공통의 trace_id를 통해 로그를 트레이스와 연결하여 메트릭 그래프에서 특정 요청 로그로 이동할 수 있습니다. Datadog (2025)에 따르면, 로그를 트레이스와 상관 분석하면 평균 사고 진단 시간이 45분에서 12분으로 줄어덩니다.
| 신호 | 질문 | 단위 |
|---|---|---|
| 메트릭스 | 무슨 일이 일어나고 있나요? | 수치적 집계치 |
| 트레이싱 | 왜 이런 일이 일어나고 있나요? | Spans 및 traces |
| 로그 | 정확히 무슨 문제가 발생했나요? | 텍스트 기록 |
고전적인 APM 아키텍처는 세 레벨로 구성됩니다: 에이전트, 컬렉터, 그리고 백엔드입니다. 에이전트는 애플리케이션에 임베디되거나 같이 실행되는(insidecar) 라이브러리입니다. 에이전트는 수신 및 송신 호출을 가로채는 작업을 하고, 실행 시간 데이터를 수집하여 안전한 채널을 통해 컬렉터에 전송합니다.
Java용 APM 에이전트는 JVM 레벨에서 javaagent를 통해 연결하여 모든 HTTP 요청, 데이터베이스 호출, 메시지 큐, 그리고 외부 API를 자동으로 계기화할 수 있습니다. 모바일 플랫폼의 경우, 에이전트는 SDK로 연결되어 기기에서 메트릭스를 수집합니다. Android용 New Relic Agent는 OkHttp, HTTP 클라이언트 및 WebView를 통해 모든 네트워크 요청을 자동으로 추적합니다.
import com.newrelic.agent.android.NewRelic;
public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
NewRelic.withApplicationToken("YOUR_TOKEN")
.start(this);
}
}
이 코드는 Android 애플리케이션에서 New Relic Agent를 초기화합니다. 실행 후, 에이전트는 각 화면의 추가 계기화 없이 네트워크 요청 메트릭스, 오류, ANR 및 UI 성능 데이터를 자동으로 수집합니다. 에이전트는 백그라운드 스레드에서 실행되며 주 애플리케이션 인터페이스 성능에 영향을 미치지 않습니다.
컬렉터는 수추의 에이전트로부터 데이터를 수신하고, 메트릭스를 집계하고, 트레이스 샘플링을 수행하고, 활성 및 대기 저장소 기능을 갖춘 장기 데이터 저장소에 데이터를 보관합니다. APM 백엔드는 대시보드, 경보, 서비스 맵, 그리고 외부 시스템(Slack, PagerDuty, Jira, ServiceNow)과의 연결을 위한 API를 제공합니다. Datadog은 최소의 전송 지연이 위해 20개 이상의 지역에 위치한 컬렉터를 통해 초당 1000만 개 이상의 데이터 포인트를 처리합니다.
Apdex(Application Performance Index)는 애플리케이션 응답 시간에 대한 사용자 만족도를 측정하는 개방형 표준입니다. Apdex 값은 다음 공식으로 계산됩니다: (만족한 사용자 수 + 참으키는 사용자 수 / 2) / 전체 사용자 수. 결과는 0에서 1 사이의 숫자로, 1은 모든 사용자가 만족한다는 것을 의미합니다.
Apdex 임계값은 각 애플리케이션별로 개별적으로 설정됩니다. 모바일 애플리케이션의 경우, 일반적인 만족 임계값은 응답 시간이 1.5초 까지이고, 참을 수 있는 것은 4.5초 까지입니다. 4.5초를 초과하는 경우 불가능한 것으로 간주됩니다. Apdex 점수 0.94 이상은 프로덕션 환경에서 우수한 것으로 간주됩니다.
Apdex는 품질 메트릭스만 아니라 경보의 임계값으로도 사용됩니다. Apdex가 10분 동안 0.85 미만으로 떨어지면, APM 시스템은 당속 팀에게 알림을 보냅니다. 이는 낮 시간대와 부하에 따라 변동할 수 있는 절대적 인 응답 시간에 의존하는 것보다 더 균형잡힌 접근 방식입니다.
모바일 APM은 고유한 특징이 있습니다: 애플리케이션이 사용자의 기기에서 실행되며, 기기는 다양한 네트워크 환경과 서로 다른 얰량의 여벽 메모리 및 OS 버전을 가질 수 있습니다. 모바일 APM은 이러한 모든 요소를 고려하여 기기 모델, OS 버전, 지역, 그리고 네트워크 이동통신사별로 메트릭스를 세분하여 제공해야 합니다.
모바일 APM 에이전트는 기기에서 메트릭스를 수집하여 1~5분 마다 배치로 서버에 전송합니다. 이는 사용자 트래픽에 미치는 영향을 최소화합니다. 연결이 끞름겠을 경우 데이터는 로컬 캐시에 저장되었다가 다음 연결시 전송됩니다. Firebase Performance 및 Dynatrace Mobile은 네트워크 끞꺼짐 시 자동 재전송을 지원합니다.
표준 APM 메트릭스에 다음과 같은 고유한 메트릭스가 추가됩니다: 콜드 스타트 시간, 스크롤 시 FPS, 메모리 소비량, ANR 빈도(Android), 그리고 워치독 종료 수(iOS)입니다. New Relic Mobile은 추가로 맵 뷰, 캐시 사용률, 그리고 특정 ViewController의 렌더링 시간을 추적합니다.
import NewRelic
class ProfileViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NewRelic.startInteraction(withName: "ProfileView")
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
NewRelic.stopCurrentInteraction()
}
}
Swift 코드는 사용자 프로필 화면에 대한 상호작용 트레이스를 생성합니다. New Relic은 데이터 로딩 시간, UI 렌더링, 그리고 이 화면이 표시되는 동안 수행된 모든 네트워크 요청을 자동으로 측정합니다.
APM 시장에는 모니터링 깊이, 비용, 그리고 지원되는 플랫폼에 따라 서로 다른 수십 가지 솔루션이 있습니다. Datadog APM은 메트릭스, 트레이스, 로그를 하나의 인터페이스에 통합하는 부문에서 선도하고 있습니다. New Relic은 모바일 플랫폼에 대한 가장 상세한 트레이싱을 제공합니다. Dynatrace는 Davis AI 엔진을 사용하여 근원 원인을 자동으로 감지합니다.
| 플랫폼 | 모바일 에이전트 | 분산 트레이싱 | 무료 요금제 |
|---|---|---|---|
| Datadog | iOS, Android | 예 | 아니오 |
| New Relic | iOS, Android | 예 | 100 GB/월 |
| Dynatrace | iOS, Android | 예 | 15일 |
| Grafana | OpenTelemetry 통해 | 예 | 예 (OSS) |
APM 플랫폼 선택은 팀 규모, 기술 스택, 그리고 예산에 따라 문제입니다. 스타트업의 경우 백엔드용 Grafana와 결합된 Firebase Performance가 최적입니다. 높은 SLA 요구사항이 있는 기업 프로젝트의 경우 — 완전한 관찰가능성 도구와 AI 구동 근원 분석을 갖춘 Datadog 또는 Dynatrace를 선택합니다.
자주 묻는 질문
일반 모니터링은 인프라 메트릭스(CPU, 메모리, 디스크)를 추적합니다. APM은 애플리케이션 레벨을 관찰합니다: 특정 트랜잭션 실행 시간, SQL 쿼리, 마이크로서비스 간 HTTP 호출 등이요. APM은 CPU가 정상이지만 데이터베이스 쿼리가 느려서 애플리케이션이 느릴 수 있음을 보여줌 수 있습니다.
단일 서비스에는 기본 코테링을 위해 표준 모니터링 + 로깅으로 충분합니다. APM은 5개 이상의 서비스가 있고, 하나의 사용자 시나리오에서 요청이 여러 서비스를 거쳐야 할 때 필요합니다. APM은 어떤 특정 서비스가 요청 흐름 전체를 늘리고 있는지, 그리고 병목이 어디에 있는지를 알려줍니다.
APM 에이전트는 서버당 1~3% CPU와 50~200MB 메모리를 소비합니다. 라이선스 비용은 호스트당 월 15~80 달러입니다. 텔레메트리 트래픽은 트레이싱 강도에 따라 호스트당 일 1~10GB입니다. OpenTelemetry + Grafana는 상용 APM의 무료 대체 방법입니다.
네, 모바일 APM 에이전트는 독립적으로 작동합니다. 애플리케이션에 서버 측이 없던 경우에도 기기에서 시작 시간, FPS, 충돌, 제3자 API에 대한 네트워크 요청 등의 메트릭스를 수집합니다. 데이터는 기기가 인터넷에 연결될 때 APM 플랫폼으로 전송됩니다.
기본 APM 구성(임계값, 대시보드, 경보)은 한 번 설정하고 아키텍처가 변경되거나 성능 벤치마크가 업데이트될 때 조정됩니다. 에이전트 구성은 애플리케이션을 재배포하거나 코드를 수정하지 않고 APM 플랫폼 제어 패널을 통해 자동으로 업데이트됩니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.