코딩팍

Dynatrace는 클라우드 앱 성능(Performance)을 모니터 하는 도구이다. AWS, Azure, Google, Kubernetes, Openshift와 같은 클라우드에 있는 앱들의 성능을 분석하고 모니터하는데 도움을 준다.

 

실제 사용하고 있는 회사들을 살펴보면 Samsung, SAP, U-Haul, Air Canada, Asics 같은 브랜드 있는 기업들이 사용하는 케이스가 홈페이지에 설명되어있다. (https://www.dynatrace.com/company/customers/)

 

실제로 저자도 금융 기업에서 컨설팅하면서 사용하고 있는 도구이기 때문에 Dynatrace가 어디에 쓰이는지 설명하겠다.

**이 포스팅에 사용되는 사진은 실제 업무 사진과는 관련이 없는 인터넷에서 찾은 사진들이다.

 

대시보드 (Dashboard)

Dynatrace의 메인페이지에는 기본적으로 대시보드가 표시된다. 여기에는 앱 건강 상태 등을 표시해준다.

 

 

대시보드는 이런 식으로 생겼는데 커스터마이징이 가능해서 자신이 원하는 정보를 한눈에 보기 쉽게 하기에 편리하다. 하지만 실제로 이 대시보드를 통해서 보는 정보보다는 자세하게 데이터를 볼 수 있는 기능들을 더 많이 사용한다.

 

 

클라우드 성능 모니터 (Performance Monitor)

클라우드 앱 성능에는 여러 가지가 있지만 주로 네트워크 성능을 모니터 한다. 성능을 모니터/분석하면서 어디가 느리고 어떤 네트워크 호출이 실패하고 있는지 고칠 수 있다.

 

주로 어떤 데이터들을 모니터 하는지 리스트를 작성해 봤다:

 

- 네트워크 호출 반응시간 분석

- 실패율

- 호스트 서버의 CPU, 메모리 사용량

 

하나하나 어떤 식으로 분석 가능한지 살펴보자.

 

 

 

네트워크 호출 반응시간 분석 (Response Time)

네트워크 호출 별로 반응시간 분석은 매우 유용하다. 어떤 함수 호출이 얼마나 빠르게 혹은 느리게 반응하는지 분석할 수 있다. Dynatrace에서 Dynamic Network Calls에 들어가면 자신이 만든 함수들이 전부 리스트 되어있다.

 

예시:

login

logout

getUsers

getPosts

 

이 함수들이 총합적으로 잘 돌아가고 있는지 볼 수 도 있지만, 함수 하나하나 들어가서 어떤 게 느린지, 문제가 있는지 파악할 수 있다. 

 

여기서 getUsers()라는 함수를 클릭했을 때 아래 사진과 같이 Response time과 Requests를 시간별로 볼 수 있다. 

(google images)

 

Slowest 5%를 누르면 제일 느리게 반응한 5%의 반응속도가 몇이었는지 알려준다. 그리고 Analyze Outlier라는 기능이 있는데, 이 기능은 비정상적으로 느리게 반응한 케이스들을 정리해 준다.

 

(google images)

 

이런 식으로 평균 20ms에 반응하던 함수도 비정상적인 케이스들을 정리해준다. 여기서 보면 >350ms 보다 높은 경우가 800건 가까이 있었다는 것을 알 수 가있다.

 

더 깊게 들어가면 특정한 네트워크 호출에서 어떤 레이어가 느리게 반응했는지도 찾을 수 있다.

 

(google images)

 

한 개의 네트워크 호출이 어떤 레이어들을 지나갔는지 볼 수 있다.

 

반응시간 분석은 어떤 시간대에 어느 함수가 얼마나 느리게 반응했는지 디버깅하고 분석하는데 매우 유용한 기능이다.

 

 

실패율 (Failure Rate)

실패율은 네트워크 호출이 얼마나 실패했는지 보여준다.

 

(google images)

 

이런 식으로 어떤 함수가 언제 실패했는지 보면 서버 문제가 있었는지, 혹은 어떤 함수에 문제가 있는지 분석할 수 있다.

 

호스트 서버의 CPU, 메모리 사용량

앱이 호스팅 되어있는 서버의 머신의 CPU와 메모리 사용량도 모니터 할 수 있다.

 

(google images)

 

그리고 CPU가 어디에 사용되고 있는지 퍼센트도 나온다. 너무 CPU 사용량이 높으면 Thread leak나 너무 많은 양을 실행하고 있는 것을 의심할 수 있다. 이러한 분석을 통해서 서버 노드를 더 구매해야 할지 아니면 CPU를 업그레이드해야 할지 결정도 할 수 있다. 

 

 

위에 소개된 기능들 외에도 다양하고 더 깊게 분석할 수 있는 기능들이 많다. 하지만 실제 업무에서 제일 많이 사용했었던 기능들을 소개해 봤다. 만약 클라우드로 scaling 하고 있는 앱이 있다면 Dynatrace를 통해서 성능을 분석하고 모니터 하는 것도 추천한다.

 

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band