최근 기록

모든 글
DevOps

웹 서버를 배포하면 지급이 멈췄다

배치가 발행한 지급 이벤트를 웹 서버가 처리하던 구조에서 배포마다 진행 중인 지급이 끊기던 문제를, 상태 기록과 프로세스 통합 두 단계로 나눠 없앤 과정을 적었다.

배포Graceful Shutdown이벤트
Observability

성공했을 때만 기록을 남기고 있었다

조회가 분명히 있었는데 로그에는 흔적이 없다는 문의를 따라가다, 완주한 작업만 기록되는 구조라 실패는 아예 존재하지 않는 일이 되고 있었다는 것을 확인한 과정을 적었다.

로그장애조사OOM
분산시스템

매일 2,000건이 조용히 사라지던 배치를 고쳤다

4년 동안 드러나지 않던 구조 결함이 작업 단가가 오르자 매일 2,000건씩 데이터를 버리기 시작했다. 큐가 가득 차 신용평가 이벤트가 재시도 없이 사라지던 배치에 백프레셔를 넣은 과정을 적었다.

백프레셔BatchConcurrency
분산시스템

락이 레포마다 다른 방식으로 걸려 있었다

세 서비스에 제각각 구현돼 있던 분산락을 하나로 통일하면서 비정상 종료 회복 시간을 다섯 시간에서 30초로 줄이고, 락 실패 정책을 진입 주체 기준으로 정리한 과정을 적었다.

분산락RedisConcurrency
분산시스템

송금하고 차감하던 순서를 뒤집었다

원금 반영부터 중도상환과 잔액 환급까지 한 흐름에 묶여 있던 배치를 사용자 단위 이벤트로 쪼개고, 재시도해도 중복 환급되지 않도록 처리 순서를 바꾼 과정을 적었다.

멱등성배치분산락
분산시스템

은행이 보낸 결과와 내 원장을 매일 대조했다

트랜잭션이 보장되지 않던 회수 배치를 Java로 옮기면서 외부 출금과 내부 잔액이 어긋나는 경로를 막고, 하루 단위 대사를 따로 세운 과정을 적었다.

정합성Reconciliation배치
Architecture

서비스마다 알림톡 보내는 코드를 따로 들고 있었다

서비스가 각자 발송 대행사를 직접 부르고 각자 발송 로직을 들고 있던 구조를 알림톡 서버 하나로 모으면서, 폴백과 캐시와 개발 환경 오발송 방지를 어디에 둘지 정한 과정을 적었다.

알림톡통합Fallback
PG 플랫폼

정기 결제에서 같은 계약이 두 번 승인될 수 있었다

월 15,000건 정기 결제에서 중복 승인, 과거 정산 금액이 달라지는 문제, 외부 장애 복구 시점에 재시도가 몰리는 문제를 각각 다른 방법으로 막은 과정을 적었다.

정기결제멱등성상태머신
분산시스템

최종적 일관성을 믿지 않고 결제와 정산을 대조했다

결제 원장과 정산 대상을 같은 기준으로 집계해 차이를 지연·누락·중복·계약 불일치로 나누고, 자동으로 넘길 것과 사람이 봐야 할 것을 가른 기록이다.

SettlementReconciliationEventual Consistency