애플리케이션 성능 모니터링(APM)은 실시간 데이터를 사용해 애플리케이션의 성능과 최종 사용자의 디지털 경험을 추적하는 관행을 말합니다.
우수한 APM 툴은 다음 질문에 대한 답을 제공할 수 있어야 합니다.
- “애플리케이션이 중단되었거나 느린가?”
- "애플리케이션이 중단되었거나 느린 경우 문제의 원인은 무엇인가?"
데브옵스(DevOps) 팀과 엔지니어링 팀은 APM 툴을 사용해 이러한 질문에 답을 하고 실제 사용자에게 영향을 미치기 전에 신속하게 문제를 찾아 해결할 수 있습니다.
‘애플리케이션 성능 모니터링’과 ‘애플리케이션 성능 관리’라는 용어는 보통 같은 의미로 사용되며, 성능 모니터링 또는 애플리케이션 모니터링 같은 용어를 사용하기도 합니다.
왜 애플리케이션 성능 모니터링이 중요할까요?
애플리케이션을 구축하고 유지 관리하는 팀도, 사용자도, 중단되거나 느린 애플리케이션을 원하지 않습니다.
최종 사용자 경험
웹 애플리케이션 사용자는 속도와 안정성을 기대하며, 최적화된 성능과 빠른 응답 시간을 원합니다.
웹사이트가 로드되지 않으면 사용자는 바로 떠납니다. 사용자 경험이 좋지 않았다면 사용자는 경쟁업체의 웹사이트로 갈 것입니다.최근의 한 연구에 따르면, 사용자의 12%가 실제로 친구나 가족에게 특정 앱 또는 사이트를 사용하지 말라고 조언하는 것으로 나타났습니다. 이는 비즈니스 성공, 고객 만족도 및 브랜드 평판에 부정적인 영향을 미칠 수 있습니다.
엔지니어링 팀을 위한 사용 편의성
애플리케이션의 성능 문제는 엔지니어링 팀의 골칫거리가 되기도 합니다. 대기 근무를 하는 엔지니어가 새벽 3시에 비즈니스 트랜잭션에 대한 중요 시스템 알림을 받기라도 하면, 문제 해결을 위해 한밤중에 전체 팀이 달려들어 씨름을 해야 할 수도 있습니다.
중요한 문제인데 문맥이 없다면 엔지니어가 문제의 원인을 알 수 없기 때문에 상황이 더 심각해집니다. API, 쿠버네티스 클러스터, 클라우드 서비스, 또는 코드에서 클라우드 사이의 여러 위치에서 문제가 발생할 수 있으며, 해결 시간이 길어질수록 기업의 수익과 고객에게 더 부정적인 영향을 미칩니다.
애플리케이션 성능 모니터링은 엔지니어링 팀이 문제를 신속하게 파악하고 선제적으로 문제를 해결할 수 있도록 합니다. 예를 들어, 엔지니어링 팀은 페이지 로딩 시간이 너무 느려질 때 알림을 전송하는 임계값을 설정한 다음, 이를 세부적인 추적 정보와 결합하여 최종 사용자에게 영향을 미치기 전에 원인을 신속하게 파악하고 수정할 수 있습니다.
그렇지 않으면 이미 영향을 받은 최종 사용자가 문제에 대해 알게 되는 상황이 발생합니다. 또한, 애플리케이션 성능 모니터링이 제공하는 추가 문맥 없이 문제를 해결하려다 보면 평균 감지 시간(MTTD)과 평균 해결 시간(MTTR)이 길어집니다.
애플리케이션 성능 모니터링 솔루션으로 무엇을 모니터링할 수 있을까요?
소프트웨어 애플리케이션에는 모니터링해야 할 다양한 서비스와 계층이 존재하며, 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과 옵저버빌리티 비교를 참조하십시오.
Application Performance Monitoring FAQs
How do you assess application performance?
There are several ways to assess the performance of an application. APM strategies and tools alert your dev teams to errors and issues before customers experience them.
With APM software, you can assess your application’s performance from a single dashboard. Here are the most common assessment methods:
1. Monitoring: Collect data on various performance metrics, such as response times, resource usage, and error rates, and then analyze that data to identify trends and potential issues.
2. Load testing: Simulate real-world usage scenarios, such as a large number of users accessing the application at the same time, to see how the application performs under stress.
3. Performance profiling: Analyze the application's code to identify bottlenecks or areas that could be optimized for better performance.
4. User feedback: Collect feedback from users about their experiences using the application, including any issues they may have encountered.
5. A/B testing: Compare two versions of an application to see which one performs better.
6. Synthetic monitoring: Monitor an application's performance by simulating user interactions with the application in a controlled environment.
What should I monitor in APM?
There are several key metrics that you should monitor when using APM tools:
1. Response time: How long it takes for a request to be processed and a response to be returned.
2. Error rate: The number of errors that occur in the application, such as failed requests or unhandled exceptions.
3. Resource usage: The amount of system resources, such as CPU and memory, that the application is using.
4. Throughput: The number of requests that the application can handle within a certain time period.
5. Latency: The time it takes for data to travel from the client to the server and back.
6. User experience: The overall satisfaction of the users with the application.
7. Business metric: The impact the application has on the business, such as the number of transactions, revenue, conversion rate, etc.
It's important to monitor these metrics over time to detect trends and patterns, and to be able to identify when and where performance issues occur in the application.
Also, it's important to note that depending on the specific requirements of your application, you may need to monitor additional or different metrics.
How do you assess application security risk in production?
Zero-day vulnerabilities are previously unknown risks that can allow threat actors to exploit production applications and services for data theft, extortion, or disruption of your business.
To continuously assess application risks, use New Relic Vulnerability Management to identify and prioritize vulnerabilities by application or service, and then test if these vulnerabilities are actually exploitable using New Relic interactive application security testing (IAST).
- Vulnerability assessment: Monitor open source libraries within applications and services for common vulnerability exposures (CVEs).
- Impact analysis: Filter vulnerabilities by severity, count, scope, source, and steps to remediation in order to prioritize efforts.
- Vulnerability surface area audit: Monitor the vulnerability of all your entities, libraries, number of services using a vulnerable library, active vulnerabilities, and when they were first and last seen.
- Proof of exploit testing: Simulate a real-world attack to test if an application’s vulnerabilities are actually exploitable by a threat actor.
What are the benefits of APM solutions?
There are several benefits to using an application performance management solution.
- Improved insights and faster response time: APM solutions give DevOps and engineers greater insight into all aspects of an application. If a problem occurs, teams have greater insights into the root cause of problems, allowing them to act faster to resolve them.
- Better user experience: By monitoring the performance of an application, APM can provide insights into how to improve the user experience. This can help organizations ensure their applications are running smoothly and providing a positive user experience.
- Increased app reliability: APM software can detect and diagnose problems, such as slow response times or high error rates, that impact the reliability of an application. By addressing these issues, you can boost the reliability of an application.
- Improved app performance: APM can save money by helping organizations identify and address performance issues before they cause major problems, such as system downtime or lost revenue.
- Better business performance: APM solutions can provide detailed information on how the application is impacting the business, such as the number of transactions, revenue, conversion rate, and other key business metrics. This information can be used to optimize the application and improve the overall business performance.
APM solutions can help organizations ensure that their applications are running smoothly, providing a good user experience, and impacting the business positively.
How do you monitor application performance in production?
There are several ways to monitor application performance in production. Application performance in production combines several factors, including:
Browser monitoring: Collect data on the performance of the application as it's being used by actual users. This can be done by using JavaScript tags that are embedded in the application's code to collect data on the client side, or by using proxy servers to collect data on the server side.
Synthetic monitoring: Simulate user interactions with the application in a controlled environment, such as a test server, to measure performance.
Log analysis: Analyze log files generated by the application to identify performance issues, such as slow response times or high error rates.
Application instrumentation: Add code to the application to collect data on performance metrics, such as response times and resource usage, that can be used for monitoring.
Infrastructure monitoring: Collect data on the performance of the underlying infrastructure, such as servers and network devices, that the application is running on.
Third-party tools: There are several third-party tools that can be used for monitoring application performance in production, such as APM tools.
APM can help monitor all of these factors in one dashboard so you don’t have to run various different tests to get a holistic view of the app environment.
다음 단계
뉴렐릭으로 애플리케이션 성능 모니터링을 시작하십시오.
APM와 옵저버빌리티에 대해 더 자세히 알아볼 수 있는 가장 좋은 방법은 옵저버빌리티 솔루션을 직접 경험해보는 것입니다. 시작하시려면 무료 뉴렐릭 계정을 신청하고 APM 문서를 확인해 보십시오.
이 블로그에 표현된 견해는 저자의 견해이며 반드시 New Relic의 견해를 반영하는 것은 아닙니다. 저자가 제공하는 모든 솔루션은 환경에 따라 다르며 New Relic에서 제공하는 상용 솔루션이나 지원의 일부가 아닙니다. 이 블로그 게시물과 관련된 질문 및 지원이 필요한 경우 Explorers Hub(discuss.newrelic.com)에서만 참여하십시오. 이 블로그에는 타사 사이트의 콘텐츠에 대한 링크가 포함될 수 있습니다. 이러한 링크를 제공함으로써 New Relic은 해당 사이트에서 사용할 수 있는 정보, 보기 또는 제품을 채택, 보증, 승인 또는 보증하지 않습니다.