최근 기록

모든 글
DevOps

배포할 때마다 끊기던 지급 처리 떼어내기

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

배포Graceful Shutdown이벤트
Observability

완주한 작업만 남기던 로그와 사라진 실패

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

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

매일 2,000건을 버리던 배치에 백프레셔 넣기

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

백프레셔BatchConcurrency
분산시스템

세 서비스에 흩어진 분산락을 하나로 통일하기

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

분산락RedisConcurrency
분산시스템

환급 배치를 사용자 단위로 쪼개고 멱등하게 만들기

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

멱등성배치분산락
Architecture

흩어진 알림톡 발송을 서버 하나로 모으기

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

알림톡통합Fallback
PG 플랫폼

PG 플랫폼을 두 번 갈아엎고 떠나며

ASP 기반 PG를 Spring Boot 모놀리스로 옮기고 1년도 안 돼 다시 셋으로 나눴다. 그 판단이 지금도 맞다고 보는 이유와, 끝내지 못하고 두고 온 것을 적었다.

회고PGMigration
PG 플랫폼

혹시나 해서 둔 배치에 진짜로 걸렸다

응답을 못 받아 미확정으로 남은 결제를 결제사 노티가 풀어 주고 있었는데, 그 노티를 보내지 않는 결제사가 있었다. 혹시 몰라 둔 복구 배치를 결제사마다 나눠 만든 과정을 적었다.

PG외부연동복구
DevOps

사내 설정 서버에 묶여 있던 테스트 떼어내기

설정 서버가 응답하지 않으면 테스트도 부팅되지 않았고, 리포지토리 테스트는 데이터베이스에 이미 들어 있는 값을 쓰고 있었다. 설정을 걷어내고 테스트를 떼어낸 과정을 적었다.

Spring Boot설정테스트