Node.js APM 출시!

Node.js로 만든 어플리케이션의 성능 모니터링 과연 쉽나?

지구상에서 가장 많은 모듈을 제공하고 있는 NPM,  높은 IO 성능,  적은 시간으로  서비스를 구현할 수 있다는 점에서 Node.js는 많이 사용되는 플랫폼입니다. 특히 빠르게 제품을 만들고 소비자의 반응을 살펴야 하는 모바일 게임분야나 스타트업에서는  적격입니다.

이러한 Node.js에는 특징이 한 가지가 존재합니다. 바로 비동기 방식입니다.  JAVA는 여러 작업을 각 Thread에서 병렬적으로 수행할 수 있는 반면에 Node.js는 직렬적으로 작업을 수행하게 됨을 의미합니다. 다수의 작업들이 있을 때, Node.js는 Thread에서 모든 작업들이 비동기적으로 서로 번갈아가며 수행됩니다.

하지만 Node.js의 성능상의 장점을 가져주는 비동기 방식이라는  특징으로 인해, 개발된 어플리케이션 트랜잭션의 흐름을 순서대로 모니터링 하기 어렵다는 문제가 발생합니다.

모두 알다시피  Node.JS의 높은 성능에  환호하던 소비자들도, 장애시 병목지점을 제대로 파악하지 못해, 사용자가 많은 실제 서비스 운영시 부담을 느끼고 있는 상황이었습니다.

이러한 문제를 깔끔히 해결한,  WhaTap의 Node.js용 모니터링 제품을 비롯하여 다른 제품들에 대해서도 설명드리겠습니다.

Node.js용 성능 모니터링 제품 3가지

Node.js용 성능 모니터링 제품으로 N사, A사, WhaTap 이렇게 3가지 정도를 꼽아 볼 수 있습니다.  N사와 A사는 해외 제품이기 때문에 충분한 지원을 받기에 어려움이 있습니다.  언어적, 시차 문제로 인해 충분한 기술 지원을 받기가 쉽지 않습니다. 앞서 말씀드렸듯이, WhaTap은 국내의 제품으로 국내 사용자가 사용하기 편리하며 기술적 지원 역시 잘 이루어지고 있습니다.

성능 데이터 (실시간 5초단위로 수집하는 것은 와탭) 

성능 모니터링 제품은 성능 데이터로 요청된 URL, 횟수, 응답시간, 에러 등의 정보를 수집합니다.  New Relic, AppDynamics, WhaTap의 세 제품 모두 트랜잭션 프로파일링은 서비스에 요청된 URL 기준으로 처리됩니다. 요청된 URL들의 성능 데이터들을 가져와 분석하게 되는데  New Relic의 경우에는 약 2분마다, AppDynamics는 약 5분마다 데이터를 수집합니다. WhaTap은 5초마다 정보를 수집하여 실시간으로 어플리케이션 서버의 상황을 판단 할수 있으며, 5분 단위분석을 위한 큐브 데이터를 제공하고 있습니다.

또한 New Relic과 WhaTap은 모든 트랜잭션 정보를 수집하고 있지만 AppDynamics는 일부 트랜잭션에 대한 정보만 수집하고 있습니다.

타 회사의 APM은 Node.js의 특징인 Single Thread로 인해 어떤 정보가 어떤 트랜잭션에 해당하는지 구분하지 못하는 한계를 가지고 있습니다.

데이터베이스 프로파일 (성능 병목구간의 70%) 

성능 모니터링에서 빠질 수 없는 부분은 DB에 대한 프로파일링입니다. 성능 병목 구간의 원인중 60~70% 가 DB이기 때문입니다. APM은 어떤 데이터베이스가 사용되었고, 어떤 쿼리문이 수행되었으며 걸린 시간이나 발생한 에러 등의 정보를 수집할수 있어야 합니다.

N사의 경우에는 RDBMS 의 하나인 MySQL에 대한 정보는 제대로 수집해오고 있습니다. 하지만 Node.js는 MEAN 스택으로 자주 사용하기 때문에,  MongoDB를 사용하는 경우가 많은데 MongoDB에 대한 정보는 수집하고 있지 않습니다.

A사의 경우 MySQL과 MongoDB의 정보 모두 수집하고 있지만, 이 역시 어떤 트랜잭션에서 발생한 쿼리인지 구분하지 못하는 모습을 보입니다.

WhaTap은 MySQL과 MongoDB의 프로파일링 정보를 제대로 수집하고 있습니다.

트랜잭션의 자원 사용량

트랜잭션의 자원 사용량은 개별 또는 전체 트랜잭션이 사용한 CPU 또는 memory의 사용량을 시간별로 보는 것을 말합니다.

N사, A사, WhaTap 모두 전체 트랜잭션의 자원 사용량을 확인할 수 있습니다. 하지만 더 정밀한 분석을 위해서는 개별 트랜잭션의 자원 사용량을 확인할 수 있어야 할 것입니다. WhaTap은 빠른 시일내에 개별 트랜잭션에 대한 자원 사용량을 수집할 예정입니다.

 4월 한달간 무료!  – 맺음

4월 한달간 무료로 와탭 Node.JS APM을 사용해 보세요..

(지금 바로 시작하기 >> https://login.whatap.io/create)

위에서 언급한 내용을  요약 정리하면 다음과 같습니다.

WhaTap

N사

A사

수집주기 5s 1~2min >5 min
정확한 프로파일

순서 및 정보

O

mongo db 정보는 잡지 못함

X

트랜잭션에서 수행하지 않은 정보가 들어가 있기도 하고 빠져 있기도함

트랜잭션 별

자원 사용량

개별 트랜잭션에 대한 자원사용량을 수집 준비

X X
데이터베이스 프로파일 O

MySQL / RDB  나옴Mongodb는 안나옴.

O
미들웨어 모듈 추적 (Express) O O O
Topology지원 X O O
GC Count, Time 수집 O X X
CallStack 수집 X 빠른 시일내에 사용자 정의 코드지원 X ∆  사용자 정의 코드는 수집 안 됨.
Clustering 처리 O O O