ClOr
백엔드 실무 트러블슈팅과 AI 에이전트 구조 분석을 기록합니다.
최신 글
Kafka 트랜잭션을 도입하고 나면 "이제 Exactly-Once니까 안심"이라고 생각하기 쉽다. 그런데 운영 환경에서는 설정 하나 빠졌을 뿐인데 트랜잭션이 통째로 abort되는 일이 반복된다. 이 글에서는 Kafka 3.x 기준으로 동기화 트랜잭션에서 실제로 자주 발생하는 장애 5가지를 정리한다.목차결론부터 — 5가지 장애 한 줄 요약장애 1: 트랜잭션 타임아웃증상원인해결장애 2: Exactly-Once 설정 불일치증상원인해결장애 3: Consumer-Producer 패턴에서 오프셋 커밋 누락증상원인해결장애 4: 브로커 리밸런싱 중 트랜잭션 abort증상원인해결장애 5: Dead Letter Queue 미설계로 인한 무한 재시도증상원인해결체크리스트: 트랜잭션 설정 점검 항목요약결론부터 — 5가지 장애 ..
시리즈 목차1편: 트랜잭션 중첩 문제2편: batchInsert & Lock Wait Timeout3편: Reconciliation4편: ThreadLocal 소실 (현재 글)📑 목차이전 편 요약증상: "Tenant context not set"원인: ThreadLocal은 스레드를 넘어가지 않는다해결 1: @Async — TaskDecorator로 컨텍스트 전파Before (컨텍스트 소실)After (TaskDecorator 적용)해결 2: Coroutine — CoroutineContext로 전파두 방식 비교함정: MDC도 같이 사라진다결과배운 점이전 편 요약1~3편에서 트랜잭션 중첩, Lock Wait Timeout, reconciliation을 모두 해결했다. 동기화 로직은 완벽해 보였다. 그래..
시리즈 목차1편: 트랜잭션 중첩 문제2편: batchInsert & Lock Wait Timeout3편: Reconciliation (현재 글)4편: 멀티테넌시 + @Async에서 ThreadLocal이 사라지는 문제📑 목차이전 편 요약증상: "퇴사한 사람이 아직 활성 상태입니다"문제 정의: Reconciliation의 부재설계: 삭제 전략을 데이터 유형별로 분리구현: Chunk 단위 Reconciliation핵심 코드주의: chunk 단위 수신 시 타이밍 문제결과배운 점이전 편 요약1편에서 트랜잭션 중첩, 2편에서 Lock Wait Timeout을 해결했다. 동기화는 드디어 안정적으로 돌아가기 시작했다. 이제 끝난 줄 알았다.증상: "퇴사한 사람이 아직 활성 상태입니다"운영팀에서 이상한 리포트가 올라..