공대생 정리노트
APM - 클라우드 본문
참고 자료
https://www.whatap.io/ko/blog/19/
https://www.apmdigest.com/apm-vs-monitoring-in-cloud-native-environments-reject-the-false-dichotomy
APM
Application Performance Management
기업의 Web Application 성능을 관리하는 서비스이다.
애플리케이션의 성능은 웹 서비스의 응답 속도 등으로 측정을 하고, APM 서비스는 그를 위해서 트랜잭션을 추적하고 분석하는 일을 한다.
특히 미들웨어에서 일어나는 트랜잭션의 사용 시간을 분석하여 각 단계별로 성능에 영향을 미치는 원인을 분석한다.
구성요소
APM 서비스는 Agent, Repository Server, Application Server로 구성된다.
Agent
웹 서버에 설치되어 데이터를 수집한다.
Repository Server
Agent가 수집한 데이터를 저장한다.
Application Server
애플리케이션 성능을 분석하려 할 때 Repository Server에서 데이터를 가져와 분석 데이터를 제공한다.
클라우드의 도래
APM tool들은 각각의 transaction의 trace에 초점을 맞추었기 때문에 developer들에게는 유용하지만 애플리케이션의 overall 성능을 이해하기는 힘들다.
Cloud native computing을 사용하면 여러 개의 microservice들과 수없이 많은 컨테이너들이 여러 클라우드에 걸쳐 있을것이다.
마이크로 서비스에 대한 성능과 issue들을 측정하기 위해서 다음과 같은 기능들이 필요하게 되었다.
- 모든 컨테이너, 마이크로 서비스에 걸쳐 자주 사용되는 metrics 수집
- event들에 따른 correlation of metrics ( 쿠버네티스의 scaing이나 code push 같은 것)
- 애플리케이션이나 infrastructure의 깊은 troubleshooting information 캡처
- call stack에 쌓이는 key 트랜잭션 트레이싱
ITIM
ITIM : IT infrastructure monitoring
Cloud-native system이 매우 커지게 되고 기업들이 대용량이고 high cardinality of metrics가 필요해지면서 APM으로는 충족시킬수가 없어졌다.
그래서 기업들은 APM(tracing)과 ITIM(Performance metrics)을 둘 다 사용하게 되었다.
APM
APM은 애플리케이션 코드에 가중치를 많이 두고 작업을 한다.
그래서 개발자의 코드의 성능을 측정하고 debug할 때 도움이 많이 된다.
그러나 밑단에 있는 container, host, network infrastructure 등을 추상화 시켜버려 전체의 stack과 리소스 효율성등을 보기에는 힘들다.
ITIM
ITIM의 모니터링 시스템은 code 단위로 보지는 않는다.
그러나 host, network, container 등에 대해서 성능 측정을 한다.
또한 APM은 high frequency, high cardinality, multi-dimension metrics에 대해 적합하지 않지만 ITIM은 그런 큰 scale에 대해 사용이 가능하다.