애플리케이션 모니터링을 위한 New Relic 도입하기

Hoonkii·2022년 4월 24일
0
post-custom-banner

들어가기

사내 백엔드 애플리케이션을 개발하다가, 문득 사용자가 많이 유입되어 서버에 문제가 생기면 pain point를 어떻게 찾지? 라는 의문이 생겼다. 우리 서비스는 GCP 위에 구현되어 있기 때문에 노드의 CPU, 메모리 사용량은 GCP의 Stackdriver를 통해 모니터링이 가능하지만, 우리가 개발한 백엔드 애플리케이션 로직의 pain point는 찾기가 어렵다. 이러한 문제를 해결해주는 것이 APM (Application Performance Management)이다.

New Relic 도입

요즘은 SAAS 형태로 APM을 제공하는 기업이 많은데, 나는 그 중 UI가 가장 편리해보이고, 무료 티어를 주는 New Relic을 시범적으로 도입해보았다.

먼저 New relic 사이트에 가입하고, 패널에서 APM을 클릭해보자.

APM 탭에서 애플리케이션을 등록해보자.

New relic에서는 다양한 프로그래밍 언어에 대한 APM 서비스를 제공한다. 우리는 python 기반 django 웹 애플리케이션이기 때문에 python을 선택하였다.

그럼 다음과 같은 패널이 뜬다.

앱을 식별할 수 있는 앱 이름을 입력하고, 파이썬 라이브러리 의존성에 newrelic을 추가하고, newrelic에서 생성된 newrelic.ini 파일을 다운받자.

다운 받은 ini 파일은 프로젝트 루트 디렉토리에 배치하자.

루트 디렉토리에 배치한 다음 앱을 실행하는 기존 명령어 앞에 newrelic-admin 을 삽입하여 실행하면 된다.

NEW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program gunicorn -b :$PORT base.wsgi --workers=2 --timeout=90

우리 앱은 GKE 환경에서 실행되고 있으며, 간단히 재배포를 수행하였다. 재배포를 수행한 이후에 조금 기다리다가 서버 트래픽을 발생시켜보면....? 다음과 같이 발생한 트래픽, 웹 요청을 처리하기 위한 부분 별 실행 시간, 에러율 등이 나온다.

마치며

APM 을 통해 어느 요청이 우리 앱에서 가장 많이 수행되고, 많은 시간이 걸리는지 등을 알 수 있다. 나의 경우는 뉴렐릭을 통해 애플리케이션 성능이 떨어지는 부분의 코드를 리팩토링 하거나, 캐시 서버를 도입하여 성능 최적화를 수행하였다.

초기 스타트업이나, 주니어 개발자들이 개발하다가 규모가 커진 프로젝트의 경우 당장 제품 개발에만 몰두하다보면 최적화가 잘 안되어있거나 잘못 짜여진 코드들이 많을 수 있다. 그런 부분들은 사용자들이 많이 유입되기 전에는 그냥 잘 동작하니 기술 부채로 쌓여 있는 경우가 많다. 그런 문제는 APM을 도입하면 모니터링하고 해결할 수 있다.

자신이 개발하고 있는 애플리케이션의 성능 및 최적화에 대해 관심이 많은 개발자 분이라면 New Relic과 같은 APM을 도입해보자.

profile
개발 공부 내용 정리
post-custom-banner

0개의 댓글