NextBlog
parkmineum
모든 포스트
Graceful Shutdown으로 안정적인 무중단 환경 구축하기
Nginx 내부의 프로세스 동작 과정은 ‘페이지’로 첨부하였고, 여기에선 무중단 배포 전체 플로우와 Graceful Shutdown 도입 이유, 고트래픽 상황에서의 대응 방안들을 정리하였다.
2025-12-17
비동기 알림 시스템의 여러 Trade-off
서비스 내에서 채팅 발송, 브로드캐스트용, 특정 유저에게 아이템을 보낼 경우, 프로필 조회 등 다양한 이벤트 상황에서
2025-12-06
운영 중 FCM Race Condition 장애 대응기
Hibernate는 “이 user_id에 매핑된 FcmToken은 정확히 1개여야 한다”고 기대하지만, DB에서
2025-12-05
결제 취소·지연 시 최종 일관성 보장하기
이 경우 사용자에게는 즉시 “결제가 완료되었습니다” 또는 “실패했습니다”라고 안내할 수 없고,
2025-12-01
결제 플로우 가시성 확보 - 락 이벤트 추적 도입
이런 상태가 모호해지는 순간 중복 승인, 미확인 결제, 환불 불가 같은 치명적 사고로 이어진다.
중복 결제 방지 - 커넥션 풀 분리 + JDBC 직접 제어
특히 결제 승인과 같이 단일 트랜잭션이 외부 결제 서버와 DB 업데이트를 함께 수행하는 구간에서는, 멱등성만으로는
2025-11-28
중복 결제 방지 - 멱등성(Idempotency)
하지만, 데이터가 변경되는 POST과 PATCH의 경우 호출할 때마다 응답이 달라지기 때문에 멱등성을 보장하기 위해선 서버 단에서 구현이 필요하다.
멀티 모듈 아키텍처 설계하기
멀티모듈의 핵심은 모듈 간 의존성은 단방향을 유지하며, 상위 계층이 하위 계층을 의존하는 구조
2025-11-26
MDC로 멀티스레드 환경 내 사용자 로깅 일관성 확보
MDC는 각 요청 흐름에 고유한 컨텍스트를 부여하고, 해당 요청에서 발생하는 모든 로그에 자동으로 포함시켜 뒤섞인 로그를 명확하게 묶는 역할
2025-11-25
[DPM] 코루틴으로 외부 API 다량 호출 성능 개선하기
마침 지난 주말 런칭데이 부스를 운영하면서 맛집 데이터들을 어떻게, 어떤 플로우로 가져오는지에 대한 질문들을 많이 받았었기에, 이번 기회를 통해
2025-11-21
모니터링을 통한 슬로우 쿼리 성능 개선
RDS 파라미터 그룹 설정과 위의 커맨드를 통해 MySQL Exporter 옵션을 추가할 수 있다. 런타임이 1s 가 넘는 쿼리에 대해 log 테이블과 Prometheus에서 데이터를 추출해갈 수 있도록 엔드포인트를 열어주었다.
2025-11-02
잘못된 트랜잭션 분리
전체 요청을 하나의 단위로 묶는 ‘상위 트랜잭션 경계’ 역할을 한다. JVM 락과 syncFcmToken() 내부에서 연결되는 하위 메서드 내의 DB 작업까지 묶게 된다. 즉, JVM 락 내에서 DB 변경이 트랜잭션 단위로 일관되게 처리되기 위함이다.
2025-10-26
DB 병목 지점과 HikariCP 커넥션 풀 최적값 찾기
Active Connections는 3~5 수준 → 여기서 “DB 자체가 느린 게 아니라 풀에서 병목”이라는 의미
부하 테스트로 서비스 성능 임계점 측정하기
RPS(초당 요청 수)를 점진적으로 늘려가며 부하 테스트를 진행하면 다음과 같은 주요 인사이트를 얻을 수 있다.