1. APM(Application Performance Management)
APM (Application Performance Mangement, 애플리케이션 성능 관리)은 응용 소프트웨어의 성능과 서비스 이용성을 감시하고 관리하는 데에 초점을 둔 시스템 관리 원칙을 의미합니다. 또한 운영 중인 시스템에 대한 응답시간과 같은 성능이나 처리량, 가용성 및 기능적 무결성, 신뢰성을 확보하고 다운타임의 최소화 등을 통해 안정적인 시스템을 운영하기 위한 도구로써 부하량, 접속자 파악, 장애진단, 통계 등을 목적으로 하는 성능 모니터링 제품으로 정의할 수도 있습니다.
APM은 웹 서비스의 동작 상태를 관찰하고 성능을 분석하며, 특히 미들웨어(WebLogic, Tomcat, JBOSS 등)에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석할 수 있습니다.
APM을 사용하는 이유는 무엇일까?
IT 서비스의 질은 여러 구간 사이의 디지털 신호의 초 단위 흐름에 의해 결정이 됩니다. 이 중 하나의 구간이라도 문제가 발생하면 전체 서비스는 영향을 받게 됩니다. 따라서 어느 구간에서 어떤 사용자가 어떤 애플리케이션을 사용하던 중, 어느 과정에서 문제가 발생한 것 인지 신속하게 탐지하고 정확한 근거에 기반하여 해결한는 것이 매우 중요합니다.
하지만 IT도 각 분야별로 세분화가 되어있기 때문에 한 사람이 모든 IT 분야의 지식들을 알 수는 없습니다. 각자 자신의 업무 분야는 잘 알고 있지만 다른 분야는 그만큼 알지 못합니다. 그렇기 때문에 문제가 발생할 경우, 서로 자신의 업무 범위 내에서만 판단을 하기 때문에 장애 원인을 찾기가 더욱 어려워 집니다. 실제로 대부분의 경우 문제 구간을 찾는 데에만 90%의 시간이 소요되는 만큼, APM은 이러한 문제 해결의 시간을 단축시키는데에 유용하게 이용될 수 있습니다. 이처럼 APM은 어떤 문제가 발생했을 때 빠르게 왜 발생했는지 문제를 파악하며 개발자, 운영자, 비즈니스 담당자 모두의 입장에서 안정적인 서비스를 제공하는 데에 큰 역할을 하게 됩니다.
APM을 사용하게 되면 문제가 발생했을 때 Log가 남게 됩니다.
2. APM 구성 요소
APM 서비스는 Agent, Repository Server, Application Server로 구성되어 있습니다.
- Agent : Agent는 웹 서버에 설치되어 데이터를 수집하며 Repository Server에 데이터를 전송
- Application Server : 운영자가 애플리케이션 성능을 분석하려 할 때 Repository Server에서 데이터를 끌고 와서 분석 데이 터를 제공하는 역할
3. APM의 종류
APM은 성능 관리 대상과 성능을 측정하는 위치에 따라 DB 성능 관리, Application 성능 관리, E2E(End-to-End) 성능관리로 구분됩니다.
(1) DB 성능 관리
- 기업의 서비스 대부분이 DB에 접근하여 데이터를 조회 및 수정해야하기 때문에 DB에 대한 관리는 매우 중요
- DM 성능 관리 솔루션은 SQL 상세 분석 및 DBMS 소프트웨어 병목 현상 등을 모니터링해 서비스의 품질을 향상 시킴
.
(2) 어플리캐이션 성능 관리
- 애플리케이션들이 실행되는 주 환경인 WAS(웹 애플리케이션 서버), 미들웨어 등을 대상으로 모니터링해 서비스의 품질을 향상 시킴
- 개발 언어에 대한 의존성이 높아 언어 별로 다양한 솔루션이 존재
- 대표적인 오픈 소스로 Negios, Zabbix, Cacti 등이 존재
(3) End - to - End(E2E) 성능 관리
- 최종 사용자 성능 관리 솔루션은 실제 최종 사용자가 체감하는 성능 측정 솔루션
- 애플리케이션 성능 관리는 주로 데이터를 다루는 반면, E2E의 기반 기술은 네트워크임
- 따라서 E2E 솔루션의 대표 기업들은 네트워크 스위치나 방화벽, IPS, IDS, 시큐리티와 같은 네트워크 기술 업체들
'개발 지식' 카테고리의 다른 글
[Python] 순열과 조합 (combinations, permutations) (1) | 2024.10.18 |
---|---|
[ElK] Elasticsearch, Logstash, Kibana (0) | 2024.08.08 |
[DB] 비관계형 DB와 관계형 DB의 차이 (0) | 2024.08.08 |
[Python] list와 Numpy array 비교 (0) | 2024.07.24 |
[코테][2023 KAKAO BLIND RECRUITMENT]개인정보 수집 유효 기간 (0) | 2024.02.28 |