Tech/Spring

Pinpoint 적용기: 1️⃣Pinpoint 아키텍처 및 서버 구성 방식 (Spring Boot 3.2.0, Maven 4.0.0, JDK 17)

봄의 개발자 2024. 10. 10.
728x90
반응형

들어가며

회사에서 pinpoint 를 적용해봐! 라는 업무를 받았다. pinpoint가 뭔데? APM이 뭔데? 아무런 설명을 듣지 못하고 작업을 진행하게 되었지만 이 또한 기회...! 공부하면서 서버에 직접 적용까지 해보기! 너무 좋은 기회라는 생각에 설렘을 갖고 며칠간 몰두했다. 

 

이 글에서는 Pinpoint가 무엇인지, 아키텍처 및 설치 방법 그리고 그 과정에서 마주한 문제 및 해결 방법 등 길었던 적용기를 정리하려고 한다. 화이팅...! (●'◡'●)

 

프로젝트 버전은 Spring Boot 3.2.0, Maven 4.0.0, JDK 17이고 Pinpoint는 2.5.1, HBase는 1.2.7 사용했다.

 

 

Pinpoint란 무엇인가?

네이버에서 만든 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처리하는 플랫폼 즉 APM(Application Performance Monitoring) 도구이다. 내부적으로 서버 맵, 실시간 활성 쓰레드 차트, 요청/응답 차트, API 호출 상세 기록, 서버의 상태를 실시간으로 시각화하여 볼 수 있는 기능을 제공한다. 특히 분산 환경에서 애플리케이션 모니터링에 최적화된 기능들이 많아 백엔드를 구성하는 데 큰 도움을 받을 수 있다.

 

 

Architecture

https://pinpoint-apm.gitbook.io/pinpoint/want-a-quick-tour/overview

Pinpoint Web, Collector, Agent 이 세가지가 핵심 요소이다.

쉽게 말하면 우리가 모니터링 하고 싶은 스프링 프로젝트 (예를 들어!)와 같은 것을 Agent로 보고 이 Agent로 부터 데이터를 받아서 모니터링 하기 위한 데이터로 추적하는 중간 매개체 역할을 하는 Collector, 실제 모니터링을 위해 시각화된 것이 Web이다.

여기서 데이터를 HBase라는 곳에 저장하게 된다. HBase 하나만 해도 큰 주제라고 한다... 우선 HBase는 Hadoop의 HDFS위에 만들어진 분산 컬럼 기반의 DB이다. 사실 나도 뭔지 잘 모르겠다! 지금은 그냥 DB 종류 중 하나인 것만 짚고 넘어가야할 듯 하다.

  • Collector: Agent로부터 받은 데이터를 HBase에 적재함
  • Web: HBase에 적재된 데이터를 보여줌
  • Agent: 애플리케이션의 모니터링 정보 (API 상세 호출 내역, 서버 CPU, 활성 쓰레드 개수 등)을 Collector에 전달함

 

 

서버 구성 방식

서버 A에서 두개의 애플리케이션이 동작 중이고 이는 모두 서버 B의 Pinpoint로 연결되어 있다. 8089, 8087 포트로 API 요청이 들어올 때 서버 B의 Collector가 추적 데이터를 받아서 HBase에 저장하고 8085번의 Web에 데이터를 전달해 보여주는 방식으로 구성하였다.

 

다음 글에서는 HBase 설치 및 세팅 방법에 대해 자세하게 풀어볼 예정이다. 💭

 

:wq 💟

 


참고

 

728x90
반응형

댓글