DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from SSG
  • Related reads#MSA
#Backend

“왜 노출이 안 될까?”를 한 번에 추적하는 방법

“왜 노출이 안 될까?”를 한 번에 추적하는 방법
01

Summary

"왜 안 나와요?" 문의에 1초 만에 답하는 비결, SSG의 전천후 디버깅 툴 '영원희'

흩어진 MSA 로그를 하나의 식별자로 꿰어 복잡한 전시 로직의 실체를 드러내다

마이크로서비스 아키텍처에서 발생하는 복잡한 전시 누락 이슈를 해결하기 위한 SSG 프론트서비스개발팀의 분투기를 다룹니다. 단순히 로그를 쌓는 것을 넘어, 요청 흐름을 시각화하고 직접 API를 재현할 수 있는 실행형 도구 '영원희'를 통해 운영 효율과 서비스 성능을 동시에 잡은 경험을 공유합니다.

  • 01단일 식별자(logGroupId)를 활용한 전 구간 요청 흐름 시각화
  • 02Kafka와 MongoDB를 조합한 비동기 로그 수집으로 서비스 영향도 최소화
  • 03@YoungWonHeeDebug 어노테이션 기반 설계로 기존 비즈니스 로직과의 결합도 제거
  • 04Swagger 연동을 통해 디버깅 화면에서 즉시 API 호출 및 재현 가능
  • 05수집된 로그 분석을 통한 불필요한 API 호출 제거 및 네트워크 비용 절감

+RECOMMENDATION

복잡한 데이터 가공 로직이 포함된 MSA 환경의 백엔드 개발자나 운영 효율화를 고민하는 데브렐 엔지니어에게 강력히 추천합니다.

The Problem

복잡한 전시 로직과 MSA 환경으로 인해 특정 상품이나 배너가 노출되지 않을 때 원인을 파악하기 위해 여러 시스템의 DB와 로그를 수작업으로 대조해야 하는 번거로움이 있었다. 단순 조회 결과만으로는 전처리, 외부 API 호출, 후처리 로직 중 어느 단계에서 데이터가 누락되었는지 즉각적으로 판별하기 어려웠다.

The Solution

logGroupId라는 단일 식별자를 통해 요청의 시작부터 끝까지의 흐름을 묶고, Kafka와 MongoDB를 이용해 비동기적으로 로그를 수집하여 시간 순서대로 시각화하는 디버깅 도구 '영원희'를 구축했다. 2.0 버전에서는 Swagger 명세와 연동하여 화면에서 직접 API를 호출하고 재현할 수 있는 실행형 디버깅 기능을 추가했다.

The Result

분산된 로그를 한눈에 파악할 수 있게 되어 운영 대응 속도가 획기적으로 개선되었으며, 로그 추적 과정에서 발견된 불필요한 중복 API 호출을 제거하여 서비스 성능 최적화에도 기여했다. 상품 및 기획전 유효성 검증 등 전시 운영 데이터를 해석하는 기반 도구로 확장되었다.

Trade-off

메인 서비스의 부하를 최소화하기 위해 비동기 처리를 도입했으나, 보안 및 보관 비용 이슈로 인해 수집된 로그 데이터는 1시간 동안만 유지된다는 제한 사항이 있다. 또한 초기 버전은 특정 서비스에 국한되어 전사적인 활용도가 낮았던 한계가 있었다.

03

Key Concepts

Concept · 01

분산 추적 (Distributed Tracing)

마이크로서비스 환경에서 각 서비스 간의 호출 경로를 고유 식별자로 연결하여 요청의 전체 흐름을 추적하는 기법이다.

  • logGroupId를 통해 각 단계별 API 요청과 응답, 내부 로직 수행 결과를 하나의 타임라인으로 통합한다.
Concept · 02

비동기 로그 적재 (Asynchronous Logging)

애플리케이션의 주 로직이 로그 기록 작업으로 인해 지연되지 않도록 별도의 큐나 메시지 브로커를 사용하는 방식이다.

  • Kafka Topic으로 로그 메시지를 전송하고 Consumer가 MongoDB에 저장함으로써 서비스 성능 저하를 방지한다.
Concept · 03

관찰 가능성 (Observability)

시스템의 내부 상태를 외부로 출력되는 데이터(로그, 메트릭, 트레이스 등)를 통해 명확히 파악할 수 있는 능력을 의미한다.

  • 단순한 로그 조회를 넘어 데이터 누락 구간을 시각적으로 추적하고 문제를 재현할 수 있는 환경을 제공한다.
Continue reading · same source

SSGMore from SSG

View all posts from SSG
  • 돌아오지 않는 메모리를 찾아서

    JVMKubernetesG1GC
    1개월 전
  • 이상적인 구조가 빠른 성능은 아닙니다

    MongoDBAPI PerformanceData Modeling
    2개월 전
  • 쓱닷컴이 접근성을 대하는 방식

    AccessibilityWAI-ARIADesign System
    2개월 전
  • “장보기 지원금이 곧 소멸돼요” 알림 뒤에서 일어난 일

    Spring BatchDatabase ConnectionResource Optimization
    3개월 전
  • 낯선 오타와 싸워서 이기고 싶은 마음

    Deep LearningNLPTranslation Model
    4개월 전

Related reads#MSA

Explore #MSA
라인·LLM

LLM Wiki: 코드 기준으로 자동 최신화되는 도메인 지식 SSOT 만들기

#MSA2일 전
Flex

[코드가 환경을 모르는 구조 5/7] Rewrite Host — 공간 축을 교체한다

#MSA3개월 전
올리브영

올영매장은 MSA 환경에서 흩어진 도메인 데이터를 어떻게 연동했을까?

#MSA5개월 전
여기어때·BFF

화면 단위 복잡성을 흡수하다: 여기어때 BFF의 기록

#MSA5개월 전
올리브영·Spring

Spring 트랜잭션 동기화로 레거시 알림톡 발송 시스템 한계 넘어서기

#MSA6개월 전

Source

SSG
SSG
Engineering Blog

Published · March 18, 2026

Topics

MSADistributed TracingKafkaMongoDBDebugging Tool