본문 바로가기
클라우드/쿠버네티스

🕵️‍♂️ 내 애플리케이션 속 완벽하게 들여다보기: 자동 계측 vs. 수동 계측

by gasbugs 2025. 10. 12.

안녕하세요! 오늘은 우리가 만든 소중한 애플리케이션의 내부 동작을 어떻게 효과적으로 추적하고 분석할 수 있는지에 대해 이야기해보려고 합니다. 바로 계측(Instrumentation)에 대한 이야기인데요, 그중에서도 '자동 계측'과 '수동 계측'이라는 두 가지 핵심적인 방법에 대해 쉽고 자세하게 파헤쳐 보겠습니다!

 

 

🤔 계측(Instrumentation)이 뭔가요?

우리가 만든 서비스가 잘 돌아가고 있는지, 어디가 아픈지, 사용자들이 어떤 경험을 하고 있는지 알려면 데이터를 수집해야겠죠? 계측은 바로 이 데이터를 수집하기 위해 애플리케이션에 측정 코드를 심는 과정을 말합니다. 마치 우리 몸 상태를 알기 위해 체온계를 사용하고, 청진기를 대보는 것과 같아요. 🩺

 

계측에는 크게 두 가지 방법이 있습니다. 바로 자동 계측과 수동 계측입니다.


🚀 코드 수정 없이 바로 시작! 자동 계측 (Automatic Instrumentation)

자동 계측은 말 그대로 '자동으로' 데이터를 수집하는 방식입니다. 개발자가 애플리케이션 코드를 한 줄도 건드리지 않고, 에이전트(Agent)라고 불리는 작은 프로그램을 설치하거나 라이브러리를 추가하는 것만으로 계측이 완료됩니다.

어떻게 동작하나요? 🤔

  • 설치된 에이전트가 널리 사용되는 프레임워크나 라이브러리(예: Spring, Django, Express.js 등)의 동작을 자동으로 감지합니다.
  • 웹 서버에 요청이 들어오고 나가는 시간, 데이터베이스에 쿼리를 보내고 응답받는 시간 등 표준적인 성능 지표(Metric)와 추적(Trace) 데이터를 알아서 수집해줍니다.

장점 👍

  • 빠르고 간편함: 코드 수정이 필요 없어 몇 분 만에 기본적인 모니터링 환경을 구축할 수 있습니다.
  • 광범위한 커버리지: 일반적인 웹 요청, DB 쿼리 등 대부분의 표준적인 동작을 놓치지 않고 잡아냅니다.
  • 유지보수 용이: 애플리케이션 코드와 분리되어 있어 관리가 편합니다.

단점 👎

  • 제한적인 데이터: 우리 서비스만의 독특한 비즈니스 로직(예: '특정 상품을 장바구니에 담는 시간' 등)과 관련된 세부 데이터는 수집하기 어렵습니다.

비유하자면, 건물에 CCTV를 설치하는 것과 같아요. 🎥 누가 언제 들어오고 나가는지 전반적인 상황은 모두 자동으로 기록되지만, 각 사람이 건물 안에서 구체적으로 어떤 대화를 나누는지는 알 수 없는 것과 비슷하죠.


🎯 내가 원하는 정보만 콕 집어서! 수동 계측 (Manual Instrumentation)

수동 계측은 개발자가 직접 소스 코드 안에 데이터 수집을 위한 코드를 추가하는 방식입니다. 특정 라이브러리(SDK, Software Development Kit)를 사용하여 "이 부분의 데이터를 측정해줘!"라고 명시적으로 알려주는 것이죠.

어떻게 동작하나요? 🤔

  • 개발자가 코드의 특정 함수나 로직 시작과 끝에 추적을 위한 코드를 직접 삽입합니다.
  • 예를 들어, 사용자의 주문 처리 로직이 시작될 때 '주문 시작' 이벤트를 기록하고, 결제가 완료되면 '결제 완료' 이벤트와 함께 주문 ID, 금액, 사용자 정보 등을 함께 기록할 수 있습니다.

장점 👍

  • 높은 유연성: 비즈니스에 핵심적인 특정 데이터(예: 사용자 ID, 장바구니 금액, 상품 ID)를 정확하게 수집할 수 있습니다.
  • 깊이 있는 분석: 서비스의 핵심적인 비즈니스 흐름을 사용자의 관점에서 детально 추적하고 분석할 수 있습니다.
  • 맞춤형 데이터: 우리가 정의한 어떤 데이터든 수집하고 시각화할 수 있습니다.

단점 👎

  • 개발 공수 필요: 코드를 직접 수정해야 하므로 시간과 노력이 더 필요합니다.
  • 코드 복잡도 증가: 계측 코드가 비즈니스 로직과 섞여 코드가 지저분해질 수 있습니다.

비유하자면, 특정 인물을 심층 취재하는 기자와 같아요. 🎤 단순히 그 사람이 어디를 갔는지가 아니라, 그곳에서 누구를 만나 무슨 말을 했는지 등 아주 구체적이고 깊이 있는 정보를 얻어내는 것과 같습니다.


✨ 그래서, 어떤 것을 선택해야 할까요?

결론부터 말하자면, "정답은 없다! 둘 다 사용하는 것이 최고다!" 입니다. 🤝

구분 자동 계측 (Automatic) 수동 계측 (Manual)
설정 방식 에이전트 설치, 코드 수정 불필요 👨‍💻❌ SDK를 사용하여 코드에 직접 추가 👨‍💻✅
수집 데이터 표준 성능 지표 (HTTP 요청, DB 쿼리 등) 비즈니스 관련 커스텀 데이터 (사용자 ID, 주문 정보 등)
장점 빠르고 쉬운 설정, 넓은 범위 커버 높은 유연성, 깊이 있는 분석 가능
단점 커스텀 데이터 수집의 한계 개발 공수 필요, 코드 복잡도 증가
추천 상황 시스템 전반의 기본 상태를 빠르게 파악하고 싶을 때 핵심 비즈니스 로직의 성능을 상세하게 추적하고 싶을 때

 

일반적으로는 다음과 같은 하이브리드 전략을 사용하는 것이 가장 이상적입니다.

  1. 먼저, 자동 계측으로 시작하세요. 이를 통해 전체 시스템의 기본적인 성능 상태와 병목 지점을 빠르게 파악할 수 있습니다.
  2. 그다음, 수동 계측을 추가하세요. 자동 계측만으로는 알 수 없는 우리 서비스의 핵심 비즈니스 로직이나 중요한 기능에 수동 계측을 적용하여 더 깊이 있는 데이터를 확보하는 것입니다.

자동 계측으로 숲을 보고, 수동 계측으로 중요한 나무를 하나하나 살펴보는 전략! 여러분의 서비스를 더 건강하고 튼튼하게 만드는 최고의 방법이 될 것입니다. 💪