애플리케이션 성능 관리(APM) 및 NGINX

애플리케이션 성능 관리(APM)을 활용하는 것은 성공적으로 비즈니스를 운영하는 기업들이 공통적으로 추구하는 고객 이해의 핵심 요소입니다. 오프라인 매장에서는 고객과 직접 소통하고 고객의 경험을 시각적으로 측정할 수 있어 이 작업이 상대적으로 쉬울 수 있습니다. 고객이 너무 오래 줄을 서야 하는 경우, 이를 눈으로 직접 확인할 수 있으며 고객은 이에 대해 반드시 알려줄 것입니다. 하지만 디지털 방식으로 비즈니스를 운영한다는 것은 대면 상호작용이 사라진다는 것을 의미하며, 이 경우 APM이 중요한 역할을 담당합니다. APM을 통해 디지털 고객 경험을 모니터링하고 최적화할 수 있습니다. 디지털 고객은 빠르게 이동합니다. 80%의 고객이 좋지 않은 경험을 한 후에는 재방문할 가능성이 낮다고 답했습니다. 이러한 이유로 APM의 활용은 더욱 중요해집니다.

화면이 출력되는 데 몇 초만 지연되거나 거래 중 기술적인 문제가 발생해도 많은 사용자는 이를 경험의 결함으로 해석하고 브랜드에 대한 신뢰를 잃게 됩니다. 디지털 비즈니스에서는 고객의 경험을 이해하는 것이 더욱 중요합니다.

Application Performance Management(APM) 솔루션은 이러한 격차를 해소하여 기업이 애플리케이션의 성능과 사용자 경험에 대한 가시성을 확보할 수 있도록 도와줍니다. 엔지니어는 “결제 속도가 느립니다”와 같은 고객 불만을 접수하고 APM 도구를 사용하여 문제의 원인을 구체적으로 파악할 수 있습니다. APM 솔루션을 제공하는 기업으로는 AppDynamics, Dynatrace, New Relic, Riverbed 등이 있습니다.

목차

1. 일반적인 애플리케이션
2. 애플리케이션 서버 성능 모니터링
3. NGINX 및 NGINX Plus를 통한 성능 모니터링(APM)
4. 실제 사용자 모니터링
5. APM 결론

1. 일반적인 애플리케이션

APM 도구는 애플리케이션에 대한 End-to-End 가시성을 제공하는 것을 목표로 합니다. 아래 다이어그램은 일반적인 3 계층 애플리케이션(예: 전자상거래 사이트)을 보여줍니다. 첫 번째 계층은 왼쪽에 표시된 클라이언트와 해당 UI([User Interface])입니다. 이 첫 번째 계층은 사용자에게 가장 가까운 계층으로 브라우저에 표시되는 내용, 이미지 배치 방식, 텍스트 위치 및 일반적으로 각 페이지의 전체 구조를 다룹니다.

NGINX를 사용한 3계층 아키텍처

사용자가 제품을 클릭할 때 표시되는 가격 정보 등 전자상거래 사이트 대부분의 페이지에 있는 콘텐츠는 두 번째 계층인 애플리케이션 서버에 의해 동적으로 생성됩니다. 페이지를 구축하기 위해 애플리케이션 서버는 다이어그램의 오른쪽에 표시된 세 번째 계층인 데이터베이스와 연동합니다. 이 예제에서는 애플리케이션 서버가 데이터베이스에 제품 설명, 가격 및 기타 필요한 정보를 Query합니다. 그런 다음 이 데이터를 사용하여 페이지를 빌드하고 브라우저에 반환하여 표시합니다.

클라이언트와 애플리케이션 서버 사이에 위치한 NGINX는 Load Balancing, 콘텐츠 캐시, Reverse Proxy 트래픽을 수행합니다. 이러한 기능을 수행하는 소프트웨어를 Delivery 계층이라고도 합니다.

2. 애플리케이션 서버 성능 모니터링(APM)

APM의 핵심은 핵심 애플리케이션 로직이 있는 애플리케이션 서버를 모니터링하는 것입니다. 애플리케이션 서버는 사용자에게 표시되는 페이지를 동적으로 생성하고 사용자 입력을 처리하는 역할을 담당합니다.

애플리케이션 서버를 모니터링하기 위해 일반적으로 서버 자체에 에이전트가 설치됩니다. 에이전트는 애플리케이션이 사용하는 프로그래밍 언어에 대해 인터프리터 또는 가상 머신(VM)을 주기적으로 Polling합니다. Transaction Trace과 같은 데이터를 수집하고 해당 데이터를 포털에 다시 공급합니다.

이 정보를 통해 포털은 다음과 같은 화면을 제공할 수 있습니다. Transaction Trace을 살펴보면 사용자가 제공한 신용카드 번호를 확인하는 데 1초가 조금 넘게 걸렸음을 알 수 있습니다. 이를 트랜잭션의 잠재적인 병목 현상으로 파악한 엔지니어는 이제 애플리케이션의 이 부분을 개선하는 데 집중할 수 있습니다.

Dynatrace의 Transaction Trace

3. NGINX 및 NGINX Plus를 통한 성능 모니터링

NGINX와 NGINX Plus는 사이트 내부 네트워크의 Edge, 클라이언트와 애플리케이션 사이에 위치해 있습니다. 이 위치에서 애플리케이션을 드나드는 트래픽의 대부분 또는 전부를 볼 수 있습니다. 이들은 인터넷을 통해 전송되는 트래픽을 패키징하고 애플리케이션 서버에 과부하가 걸리지 않도록 보호하는 역할을 담당합니다.

Datadog을 통한 NGINX 성능 모니터링

Datadog의 스크린샷은 NGINX가 처리한 초당 요청 수를 보여줍니다. NGINX Open Source는 다음과 같은 다른 유용한 통계도 제공합니다:

  • Connections – 현재 연결 수 및 활성 상태와 비활성 상태의 연결 수
  • Bandwidth – 애플리케이션이 사용 중인 대역폭의 양

NGINX Plus를 사용하면 애플리케이션 성능에 대한 더 많은 데이터를 얻을 수 있습니다.

  • Cache – 캐시가 얼마나 가득 찼는지, 처리되는 요청 중 몇 퍼센트의 요청이 캐시에서 처리되고 있는지 확인합니다.
  • Granularity – NGINX Plus는 서버별 통계를 세분화하여 서버의 성능을 서로 비교하여 확인할 수 있습니다.
  • Health – NGINX Plus의 Active Health Check를 사용하면 장애가 발생한 서버를 신속하게 식별할 수 있습니다.

NGINX Plus에는 사용 가능한 모든 통계를 볼 수 있는 대시보드가 내장되어 있으며, Datadog, Dynatrace, New Relic과 같은 다양한 파트너로 내보낼 수도 있습니다.

4. 실제 사용자 모니터링

지금까지 모니터링은 데이터 센터에 집중되어 있었지만 브라우저와 실제 사용자는 어떤가요? 데이터센터의 Backend 서비스는 클라이언트의 웹 브라우저에 로드되는 페이지를 생성합니다. RUM((Real User Monitoring)은 실제 사용자의 경험을 파악하기 위해 사용자가 입력을 누르는 순간부터 페이지가 완전히 렌더링될 때까지 소요되는 시간을 측정합니다.

실제 사용자 모니터링은 웹 페이지를 구성하는 나머지 요소와 함께 다운로드되는 JavaScript 코드를 통해 작동합니다. 자바스크립트가 실행되면 브라우저에서 페이지 로딩의 각 단계에서 소요된 시간을 포털에 다시 보고합니다.

New Relic을 통한 실제 사용자 모니터링

위의 예에서 대부분의 시간이 브라우저 내에서 페이지를 다운로드하고 렌더링하는 데 소요되었음을 알 수 있습니다.

5. APM 결론

디지털 비즈니스의 경우 사용자 경험(UX)에 대한 인사이트를 확보하는 것이 성공의 핵심입니다. APM은 이러한 인사이트를 제공하고 기업이 높은 수준의 고객 만족도를 유지하는 데 필요한 도구를 제공하는 데 도움이 될 수 있습니다. Atlassian은 NGINX 및 NGINX Plus의 APM 기능과 주요 APM 공급업체와의 파트너십을 통해 최상의 가시성과 제어 기능을 제공하는 풍부한 데이터를 제공하고 완벽한 사용자 경험을 보장할 수 있도록 최선을 다하고 있습니다.

NGINX Plus를 사용하거나 테스트해 보려면 지금 30일 무료 평가판을 신청하거나 사용 사례에 대해 최신 소식을 빠르게 전달받고 싶으시면 아래 뉴스레터를 구독하세요.