Files
llm-wiki/raw/company-tech-blogs/micrometer-context-propagation-line-be-hase.md
T

5.5 KiB

title, source_type, url, archive_url, related_branches, related_projects, tags, created, last_reviewed, status, confidence
title source_type url archive_url related_branches related_projects tags created last_reviewed status confidence
company-tech-blog / LINE / Ryosuke Hasebe — About Micrometer Context Propagation (2025) company-tech-blog https://dev.to/be-hase/about-micrometer-context-propagation-5gg9
feature-runtime-context-propagation-contract
ca-skeleton
ca-tmpl
company-tech-blog
micrometer
context-propagation
threadlocal
context-snapshot
line
spring-boot-3
2026-06-09 2026-06-09 raw medium

LINE (Ryosuke Hasebe) — About Micrometer Context Propagation

Layer: raw/company-tech-blogs/ — LINE (Tokyo) Principal SWE / Senior EM Ryosuke Hasebe 의 기술 아티클. 출처 주의: company-tech-blog 이므로 공식 best practice 로 일반화 금지. Micrometer Context Propagation 의 MDC/Kotlin 통합 사례 reference 로만 사용. WebFetch 성공. Author: Ryosuke Hasebe (LINE, Principal SWE), Published: February 7, 2025.

Parent / 활용 branch

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-runtime-context-propagation-contract Alt-2 (Micrometer ContextSnapshot/ContextRegistry) 의 실제 사용 패턴 사례 — MDC 를 ThreadLocalAccessor 로 등록하고 ContextSnapshot.setThreadLocals() 로 capture-restore 하는 패턴

출처 / Source

핵심 인용 / Key quotes (verbatim, WebFetch)

"A ContextSnapshot can be created via ContextSnapshotFactory" by calling captureAll(). The snapshot stores Thread Local values which are then propagated through setThreadLocals().use { } constructs that manage lifecycle via resource cleanup.

"MDC.put("hoge", "hoge-value"); snapshot.setThreadLocals().use { someFunc1() }" (Kotlin code example demonstrating capture-restore with MDC)

"restore() methods can be overridden in ThreadLocalAccessor for flexibility when 'restoring the original value'"

Author characterizes the primary use case as: "Including context information in logs offers enhanced debugging, improved auditing and monitoring, and streamlined troubleshooting."

Self-Grep 검증

Fragment: "A ContextSnapshot can be created via ContextSnapshotFactory"
→ WebFetch output 에서 확인 PASS

Fragment: "MDC.put(\"hoge\", \"hoge-value\")"
→ WebFetch output 에서 확인 PASS (Kotlin code block)

검증한 인용 V: 3 / PASS P: 3 / 폐기 D: 0

Claims Extracted

Claim ID Claim Evidence quote Strength Applies to Does not prove
LN-MCP-C1 ContextSnapshotFactory.captureAll() 로 현재 thread 의 ThreadLocal 값들을 snapshot 으로 수집한 뒤, setThreadLocals().use { } 패턴으로 다른 thread 에서 restore 하는 것이 Micrometer Context Propagation 의 핵심 사용 패턴이다 "A ContextSnapshot can be created via ContextSnapshotFactory by calling captureAll(). The snapshot stores Thread Local values which are then propagated through setThreadLocals().use { } constructs that manage lifecycle via resource cleanup." company-case-study Spring Boot + io.micrometer:context-propagation 사용 코드 virtual thread 에서의 안전성 — 이 아티클은 virtual threads 를 언급하지 않음
LN-MCP-C2 MDC 는 Micrometer Context Propagation 의 ThreadLocalAccessor 구현체로 등록 가능하며 ContextSnapshot 에 포함된다 "MDC.put("hoge", "hoge-value"); snapshot.setThreadLocals().use { someFunc1() }" 패턴이 MDC 를 context 로 전달함 company-case-study MDC + Micrometer Context Propagation 을 함께 사용하는 코드 이 패턴이 ca-tmpl 의 foundation branch MDC accessor 와 충돌 없이 동작하는지 — 별도 검증 필요
LN-MCP-C3 ThreadLocalAccessor 의 restore() 메서드를 override 하면 원래 값으로 복원하는 동작을 커스터마이즈할 수 있다 "restore() methods can be overridden in ThreadLocalAccessor for flexibility when 'restoring the original value'" company-case-study 커스텀 도메인 context 를 ThreadLocalAccessor 로 구현하는 경우 이것이 "공식" 패턴인지 — Micrometer 공식 문서에 동일한 내용 있으면 official-vendor-doc 으로 업그레이드 가능

Usage Boundaries

  • 이 자료가 지지하는 것:
    • captureAll() + setThreadLocals().use {} 가 실제 코드에서 MDC propagation 에 동작함 (LINE 엔지니어 검증)
    • ThreadLocalAccessor 의 restore() override 가 가능하고 유용함
  • 이 자료가 증명하지 않는 것:
    • virtual thread (Java 21 Loom) 환경에서의 동작 안전성
    • ScopedValue 와의 비교 또는 co-existence
    • Spring Boot 의 auto-configured MDC accessor 와의 충돌 여부
  • 내 프로젝트 적용 시 주의:
    • Kotlin 코드 예시이므로 Java 코드로의 변환 필요
    • LINE 의 MDC propagation 패턴이 ca-tmpl 의 foundation branch (diagnostic keys) 와 동일한 범위인지 확인
    • 이 아티클은 "domain/business context" 가 아닌 "diagnostic context" (MDC) 를 다룸 — business context 에의 적용 extrapolation 은 INFERENCE

메모 / Notes

  • 저자 Ryosuke Hasebe 는 LINE Yahoo (Japan) 의 Principal SWE / Senior EM — 대형 Java 서비스 운영 경험 있음.
  • Kotlin 코드 예시이나 Java 에서도 동일한 Micrometer API 를 사용.
  • ScopedValue 언급 없음 — 이 아티클은 현행 ThreadLocal + Micrometer 패턴에 집중.