본문 바로가기
클라우드/opentelemetry

🤯 "서버 터졌대!" 하이브리드 환경, 모니터링 때문에 머리 아프셨죠? 정답 알려드립니다

by gasbugs 2025. 11. 6.

요즘 많은 기업이 중요한 데이터는 내부 데이터 센터(온프레미스)에 두고, 신규 서비스는 클라우드에서 개발하는 '하이브리드' 전략을 사용하고 있어요. 🏢☁️

 

안정성과 유연성, 두 마리 토끼를 다 잡는 좋은 방법이죠! 하지만 개발자와 운영자에게는 말 못 할 고충이 생깁니다. 바로 "장애가 터졌을 때 원인을 알 수 없다"는 점이에요.

 

온프레미스 서버 로그 따로 보고, 클라우드 대시보드 따로 보고... 😵 마치 두 개의 다른 TV 채널을 동시에 보면서 전체 스토리를 파악하려는 것과 같아요. 전체 시스템이 어떻게 돌아가는지 한눈에 볼 수 없어 답답하셨을 겁니다.

 

오늘은 이 문제를 해결하고, 우리 시스템을 투명하게 들여다볼 수 있는 '관측 가능성(Observability)' 확보 전략에 대해 알아보겠습니다.

 


🤔 우리가 흔히 빠지는 함정들

문제를 해결하기 위해 여러 도구를 검토하지만, 잘못된 선택은 오히려 상황을 악화시킬 수 있습니다. 대표적인 함정 3가지를 먼저 살펴볼까요?

1️⃣ 함정: "로그만 잘 모으면 되겠지?" (단일 목적 로깅 서비스)

가장 기본적인 접근법입니다. 시스템이 뱉어내는 모든 로그(Log)를 한곳에 모으는 거죠. 📜

물론 로그는 중요합니다. "어떤 에러가 발생했는지" 특정 이벤트의 기록을 알려주니까요. 하지만 이것만으로는 부족합니다.

  • 한계점: 로그는 시스템의 **상태(Health)**나 성능을 직접적으로 보여주지 못합니다. 예를 들어, "CPU 사용률이 90%에 육박한다" (메트릭) 거나 "사용자 요청 하나가 DB에서 5초나 지연되고 있다" (트레이스) 같은 정보는 알 수 없죠.

⚽️ 비유: 축구 경기에서 최종 스코어(로그)만 아는 것과 같습니다. 누가 골을 넣었는지, 점유율은 어땠는지(메트릭), 골이 들어가기까지 어떤 패스가 오고 갔는지(트레이스)는 알 수 없는 것과 같죠.

2️⃣ 함정: "최신 기술이니까!" (클라우드 네이티브 전용 플랫폼)

쿠버네티스, 서버리스 등 클라우드 네이티브 환경을 위한 멋진 모니터링 툴은 정말 많습니다. 🚀 하지만 우리에겐 '온프레미스'라는 중요한 환경이 남아있죠.

  • 한계점: 이런 도구들은 클라우드 환경 데이터는 기가 막히게 수집하지만, 내부 데이터 센터에 있는 레거시 서버들은 아예 지원하지 않는 경우가 많습니다. 결국 온프레미스는 여전히 원인을 알 수 없는 '블랙박스'로 남게 됩니다. ⬛

🏡 비유: 최신 스마트홈 보안 시스템을 설치했는데, 새로 증축한 별관에만 카메라를 달고 정작 중요한 본관은 그대로 둔 것과 같습니다. 반쪽짜리 보안이죠.

3️⃣ 함정: "우리가 직접 만들자!" (수동 확장이 필요한 오픈소스)

"오픈소스로 직접 구축하면 비용도 아끼고 우리 입맛에 맞게 만들 수 있어!" 🔧 아주 매력적인 말이지만, 여기에는 보이지 않는 비용이 숨어있습니다.

  • 한계점: 오픈소스 도구를 안정적으로 운영하려면 전담 인력이 필요합니다. 서비스가 커지면 수동으로 확장해야 하고, 보안 패치, 버전 관리, 장애 대응 등 운영 부담이 기하급수적으로 늘어납니다. 특히 보안이나 규정 준수가 중요한 시스템이라면, 직접 구축한 시스템의 안정성을 보장하기 어렵습니다.

🏭 비유: 우리 집에 필요한 전기를 쓰기 위해 직접 소규모 발전소를 짓는 것과 같습니다. 가능은 하지만, 안정성, 유지보수, 비용 측면에서 그냥 전문 전력 회사의 서비스를 쓰는 것(SaaS)이 훨씬 효율적이죠.


✨ 정답: 모든 것을 하나로! 통합 SaaS 관측 가능성 플랫폼

그렇다면 정답은 무엇일까요? 바로 온프레미스와 클라우드 환경 모두에서 보편적으로 원격 측정 데이터를 수집할 수 있는 SaaS 기반의 관측 가능성 플랫폼을 사용하는 것입니다.

말이 좀 어렵죠? 키워드 세 개로 나누어 볼게요.

  1. SaaS (Software as a Service) ✅
    • 우리가 플랫폼의 설치, 확장, 유지보수를 신경 쓸 필요가 없습니다. 전문 기업이 알아서 다 해주죠. 우리는 그저 우리 시스템의 데이터만 전송하고 분석에만 집중하면 됩니다. 운영 리소스가 획기적으로 줄어듭니다.
  2. 관측 가능성(Observability) 플랫폼 ✅
    • 단순히 로그, 메트릭, 트레이스를 따로 보여주는 게 아닙니다. 이 세 가지 데이터를 유기적으로 연결해 줍니다. 예를 들어, "CPU 사용률 급증(메트릭) 시점에 어떤 에러(로그)가 발생했고, 이 에러는 어떤 사용자의 요청(트레이스)에서 시작되었는지"를 한 번에 파악할 수 있게 해줍니다.
  3. 보편적인 데이터 캡처 ✅
    • 이게 핵심입니다. 플랫폼에서 제공하는 에이전트(Agent)나 표준 프로토콜(e.g., OpenTelemetry)을 통해 어디서든 데이터를 수집할 수 있습니다. 오래된 물리 서버, 가상 머신(VM), 컨테이너, 서버리스 함수까지 환경에 구애받지 않고 모든 데이터를 한곳으로 모을 수 있죠.

이게 어떻게 가능한가요? (간단한 예시)

보통 이런 플랫폼들은 데이터를 수집하는 경량 에이전트를 설치하는 방식으로 동작합니다. 예를 들어, 요즘 표준으로 자리 잡은 OpenTelemetry Collector의 설정 파일을 한번 볼까요?

이 설정 파일 하나로 온프레미스 서버의 로그 파일과 클라우드 앱의 데이터를 모두 수집해서 하나의 SaaS 플랫폼으로 보낼 수 있습니다.

코드 예시: otel-collector-config.yaml

# OpenTelemetry Collector 설정 예시
receivers:
  # 클라우드 네이티브 앱에서 오는 데이터를 받음 (표준 프로토콜)
  otlp:
    protocols:
      grpc:
      http:

  # 온프레미스 서버의 로그 파일을 읽음
  filelog:
    include: [ /var/log/my_onprem_app.log ]
    start_at: beginning

processors:
  batch:

exporters:
  # 수집한 모든 데이터를 'MySaaSPlatform'으로 전송
  otlphttp:
    endpoint: "https://api.my-saas-platform.com/v1/metrics"
    headers:
      "api-key": "YOUR_API_KEY" # SaaS 플랫폼 인증 키

service:
  pipelines:
    # 메트릭/트레이스 파이프라인
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp]
    # 로그 파이프라인
    logs:
      receivers: [filelog]
      processors: [batch]
      exporters: [otlphttp]

수집되는 Raw 데이터 예시

이렇게 수집된 데이터는 각각의 컨텍스트를 가지게 됩니다.

// 예시 1: 온프레미스 서버에서 수집된 로그
{
  "timestamp": "2025-11-06T08:29:00Z",
  "level": "ERROR",
  "message": "Legacy DB connection timeout",
  "attributes": {
    "service.name": "auth-service-onprem",
    "host.name": "idc-server-01"
  }
}

// 예시 2: 클라우드 컨테이너에서 수집된 메트릭 (Prometheus 형식)
http_requests_total{service="payment-service-cloud", pod_name="payment-xyz-123", code="503"} 5

// 예시 3: 클라우드-온프레미스를 관통하는 트레이스 데이터 (Span)
{
  "traceId": "a1b2c3d4",
  "spanId": "span-002",
  "parentSpanId": "span-001",
  "name": "SELECT user FROM legacy_db",
  "service": "auth-service-onprem",
  "duration_ms": 2500
}

이렇게 수집된 데이터는 SaaS 플랫폼의 대시보드에서 하나로 합쳐져 보이게 됩니다. 개발자는 더 이상 여러 시스템을 방황할 필요 없이, 한 곳에서 시스템 전체의 흐름과 상태를 파악할 수 있게 되는 거죠. 🚀


결론

하이브리드 환경의 복잡성은 앞으로 더욱 커질 것입니다. 이런 환경에서 시스템의 안정성과 비즈니스의 연속성을 지키기 위해서는 '전체 시스템을 한눈에 볼 수 있는 능력', 즉 통합된 관측 가능성 확보가 필수적입니다.

단편적인 도구나 특정 환경에만 종속된 솔루션으로는 복잡한 문제의 근본 원인을 찾기 어렵습니다. 지금, 여러분의 시스템은 얼마나 투명하게 보이나요? 🤔