애플리케이션 성능 모니터링(APM)은 실시간 데이터를 사용해 애플리케이션의 성능과 최종 사용자의 디지털 경험을 추적하는 관행을 말합니다.

우수한 APM 툴은 다음 질문에 대한 답을 제공할 수 있어야 합니다.

  • “애플리케이션이 중단되었거나 느린가?”
  • "애플리케이션이 중단되었거나 느린 경우 문제의 원인은 무엇인가?"

데브옵스(DevOps) 팀과 엔지니어링 팀은 APM 툴을 사용해 이러한 질문에 답을 하고 실제 사용자에게 영향을 미치기 전에 신속하게 문제를 찾아 해결할 수 있습니다.

‘애플리케이션 성능 모니터링’과 ‘애플리케이션 성능 관리’라는 용어는 보통 같은 의미로 사용되며, 성능 모니터링 또는 애플리케이션 모니터링 같은 용어를 사용하기도 합니다.

오늘날의 엔터프라이즈 애플리케이션은 고도로 분산되어 있기 때문에 APM 솔루션 없이는 오류와 성능 문제를 추적하기가 어렵습니다.

왜 애플리케이션 성능 모니터링이 중요할까요?

애플리케이션을 구축하고 유지 관리하는 팀도, 사용자도, 중단되거나 느린 애플리케이션을 원하지 않습니다.

최종 사용자 경험

웹 애플리케이션 사용자는 속도와 안정성을 기대하며, 최적화된 성능과 빠른 응답 시간을 원합니다.

웹사이트가 로드되지 않으면 사용자는 바로 떠납니다. 사용자 경험이 좋지 않았다면 사용자는 경쟁업체의 웹사이트로 갈 것입니다.최근의 한 연구에 따르면, 사용자의 12%가 실제로 친구나 가족에게 특정 앱 또는 사이트를 사용하지 말라고 조언하는 것으로 나타났습니다. 이는 비즈니스 성공, 고객 만족도 및 브랜드 평판에 부정적인 영향을 미칠 수 있습니다.

엔지니어링 팀을 위한 사용 편의성

애플리케이션의 성능 문제는 엔지니어링 팀의 골칫거리가 되기도 합니다. 대기 근무를 하는 엔지니어가 새벽 3시에 비즈니스 트랜잭션에 대한 중요 시스템 알림을 받기라도 하면, 문제 해결을 위해 한밤중에 전체 팀이 달려들어 씨름을 해야 할 수도 있습니다.

중요한 문제인데 문맥이 없다면 엔지니어가 문제의 원인을 알 수 없기 때문에 상황이 더 심각해집니다. API, 쿠버네티스 클러스터, 클라우드 서비스, 또는 코드에서 클라우드 사이의 여러 위치에서 문제가 발생할 수 있으며, 해결 시간이 길어질수록 기업의 수익과 고객에게 더 부정적인 영향을 미칩니다.

애플리케이션 성능 모니터링은 엔지니어링 팀이 문제를 신속하게 파악하고 선제적으로 문제를 해결할 수 있도록 합니다. 예를 들어, 엔지니어링 팀은 페이지 로딩 시간이 너무 느려질 때 알림을 전송하는 임계값을 설정한 다음, 이를 세부적인 추적 정보와 결합하여 최종 사용자에게 영향을 미치기 전에 원인을 신속하게 파악하고 수정할 수 있습니다.

그렇지 않으면 이미 영향을 받은 최종 사용자가 문제에 대해 알게 되는 상황이 발생합니다. 또한, 애플리케이션 성능 모니터링이 제공하는 추가 문맥 없이 문제를 해결하려다 보면 평균 감지 시간(MTTD)과 평균 해결 시간(MTTR)이 길어집니다.

APM은 대량의 원시 텔레메트리 데이터를 가져와 메트릭, 패턴 및 이상 징후와 상호 연관시킬 수 있으므로 엔지니어링 팀이 신속하게 문제를 찾아 해결할 수 있습니다.

애플리케이션 성능 모니터링 솔루션으로 무엇을 모니터링할 수 있을까요?

소프트웨어 애플리케이션에는 모니터링해야 할 다양한 서비스와 계층이 존재하며, APM은 각 계층을 모니터링할 수 있습니다. 예를 들어 APM 솔루션을 사용해 다음 계층에 대한 과거 및 현재의 정보를 수집할 수 있습니다.

  • 메모리 사용량, CPU 사용률 및 애플리케이션 가용성 등의 인프라
  • 데이터베이스 쿼리 성능 및 오류 분석 같은 애플리케이션 백엔드
  • 웹 브라우저 렌더링, 사용자 경험 모니터링, 성능 메트릭 등 애플리케이션 프론트엔드

APM은 웹사이트를 모니터링하는 것에만 국한되지 않습니다. 모바일 애플리케이션, 서버, 네트워크, API, 사내(직원용) 애플리케이션, 클라우드 기반 서비스 및 기타 기술도 모니터링할 수 있습니다.

애플리케이션 모니터링 솔루션에 일반적으로 어떤 툴이 포함되는지 자세히 살펴보겠습니다.

운영 대시보드

운영 대시보드는 애플리케이션의 성능을 개괄적으로 보여 줍니다. 골든 시그널, 커스텀 KPI, 모니터링 중인 서비스 등 가장 중요한 메트릭이 표시되도록 운영 대시보드를 맞춤화할 수 있습니다.

실사용자 모니터링

RUM이라고도 하는 실사용자 모니터링은 실제 사용자가 애플리케이션에서 어떤 작업을 수행하는지, 그리고 이를 위해 애플리케이션이 얼마나 잘 작동하고 있는지에 대한 인사이트를 제공합니다.

신세틱 모니터링

신세틱 모니터링에는 헤드리스 브라우저를 사용해 실제 사용자의 동작을 모방하는 작업이 포함됩니다. 담당자는 실제 사용자의 데이터에 의존하지 않고 특정 사용자 흐름을 선제적으로 테스트할 수 있습니다.

서버리스 모니터링

서버리스 모니터링을 사용하면, 사내 서버가 아니라 AWS 같은 클라우드 기반 서비스를 사용하는 애플리케이션의 성능을 모니터링할 수 있습니다.

데이터베이스 모니터링

데이터베이스 모니터링을 사용하면 데이터베이스 성능을 모니터링하여 쿼리에 걸리는 시간을 확인할 수 있습니다.

모바일 모니터링

모바일 모니터링은 iOS 및 Android 애플리케이션의 레이턴시 문제와 충돌 기록 등을 모니터링할 수 있습니다.

인프라 모니터링

인프라 모니터링은 하드웨어, 클라우드 인프라 또는 쿠버네티스 클러스터 등 인프라 성능에 대한 인사이트를 얻는 데 필요합니다.

서비스 맵

서비스 맵을 사용하면 애플리케이션의 연결 상태와 종속성을 빠르게 확인할 수 있습니다. 이는 수천 개의 서비스를 사용하는 대규모 애플리케이션에서 특히 중요합니다.

또한, 우수한 APM 솔루션을 사용하면 텔레메트리 데이터를 쿼리하여 보다 심층적인 인사이트를 확보하고 로그를 검사하며, 분산 추적을 사용해 일련의 이벤트를 검토하여 문제의 근본 원인을 찾을 수 있습니다.

애플리케이션 성능 모니터링의 이점은 무엇일까요?

우수한 애플리케이션 모니터링 솔루션은 많은 직간접적인 이점을 제공합니다.

  • 인시던트 관리에 대한 선제적 접근 방식
  • 평균 문제 감지 시간 및 평균 문제 해결 시간 감소
  • 새로운 기능의 혁신과 구축에 더 많은 시간 할애
  • 사이트 안정성 엔지니어와 인시던트 대응 팀의 수고와 스트레스 감소
  • 운영 중단 빈도와 시간 감소
  • 사용자 경험 개선
  • 클라우드 기반 및 기타 소비 기반 서비스를 보다 비용 효율적으로 활용
  • 수익 및 총 마진 증가 등 수익에 긍정적인 영향

애플리케이션 성능 모니터링은 누가 사용할까요?

애플리케이션 성능 모니터링은 기술 업계를 비롯해 모든 업계의 기업에게 중요한 관행입니다. 대부분의 기업들이 웹사이트를 운영하고 있기 때문에, 웹 자산의 성능과 최종 사용자의 전반적인 경험을 모니터링 해야 합니다. 하지만 어떤 팀이 APM을 사용하며 그 혜택을 누리고 있을까요? 이는 애플리케이션의 사이즈와 범위에 따라 달라질 수 있습니다.

  • 데브옵스 엔지니어는 운영 환경에서 애플리케이션의 테스트, 배포 및 유지 관리와 관련된 프로세스를 자동화합니다. 애플리케이션 성능 모니터링은 데브옵스를 위한 필수적인 관행입니다.
  • 사이트 안정성 엔지니어(SRE)는 운영에 소프트웨어 기반의 접근 방식을 취합니다. SRE의 주된 업무는 애플리케이션의 신뢰성을 보장하는 것입니다. SRE 팀은 APM을 사용해 사이트 안정성을 선제적으로 모니터링 해야 합니다.
  • 소프트웨어 엔지니어는 코드를 작성하고 새로운 기능을 구축합니다. 소규모 기업의 경우에는 소프트웨어 엔지니어가 운영 환경의 코드 모니터링 등 프로세스의 모든 부분에 관여할 수 있습니다. 대기업에서도 엔지니어들이 소프트웨어 수명 주기의 많은 부분에 점점 더 많이 관여하는 추세입니다.

애플리케이션 성능 모니터링은 어떤 단계로 설정할까요?

애플리케이션 성능 모니터링을 통합하려면 애플리케이션을 통과하는 데이터 흐름을 추적하는 에이전트를 설치해야 합니다. 이 프로세스를 ‘계측’이라고 하며, 대부분의 경우 필요한 에이전트를 자동으로 설치하는 명령줄 인터페이스(CLI)를 사용하면 쉽게 가능합니다. 이러한 에이전트는 웹 및 비웹 트랜잭션에 대한 정보를 수집하고 보고합니다. 또한 커스텀 계측을 사용해 트랜잭션 트레이스에 세부 사항을 추가하거나 추적하길 원치 않는 트랜잭션의 계측을 차단할 수 있습니다. CLI를 사용해 계측 프로세스를 자동화하면 몇 분 내에 텔레메트리 데이터를 APM 솔루션으로 전송할 수 있습니다.

복잡한 분산 애플리케이션은 다양한 서비스를 사용하며, 이상적으로는 애플리케이션의 모든 부분을 계측해야 합니다. 포괄적인 APM 툴은 AWS나 Azure 같은 보편적인 서비스에 대한 통합을 제공하므로 애플리케이션에서 서드파티 종속성을 빠르게 계측할 수 있습니다.

궁극적으로 애플리케이션에 필요한 기능과 원하는 계측을 선택 사용할 수 있습니다. 위의 모든 접근 방식을 통해 얻을 수 있는 가장 큰 이점은 애플리케이션에 대한 완전한 종단 간 모니터링(옵저버빌리티)를 확보할 수 있다는 것입니다.

애플리케이션 성능 모니터링과 옵저버빌리티는 어떻게 다를까요?

APM은 애플리케이션의 성능을 모니터링하지만, 대부분의 최신 애플리케이션 아키텍처는 APM으로 모니터링하고 관리하기에는 너무 복잡합니다. APM은 애플리케이션의 성능을 개괄적으로 보여 주지만, 크고 복잡한 애플리케이션에서 문제의 근본 원인을 파악하려면 보다 기술적인 접근 방식을 취해야 합니다.

옵저버빌리티는 시스템의 규모나 복잡성에 관계없이, 전체 시스템의 상태에 대한 깊은 기술적 인사이트를 제공합니다. APM은 집계된 메트릭을 제공하지만, 데이터를 세부적으로 분석하려면 분산 추적 같은 다른 툴도 필요합니다.

애플리케이션 성능 모니터링은 옵저버빌리티의 일부이며, 옵저버빌리티는 APM의 상위 집합입니다. 많은 애플리케이션을 운영하는 경우, 완전한 옵저버빌리티 솔루션이 있어야 합니다.

APM과 옵저버빌리티의 차이점에 대한 보다 자세한 내용은 APM과 옵저버빌리티 비교를 참조하십시오.