February 21, 2026
custom_health_check 글에서 커스텀 HealthIndicator와 3단계 자가복구 계층을 설계했다. 이 글에서는 dev 환경에서 5가지 장애 시나리오를 재현하여 복구 계층이 의도대로 동작하는지 검증한 과정을 기록한다. 왜 시뮬레이션이 필요한가 이전 글에…
February 19, 2026
ZZOL 서비스에 커스텀 HealthIndicator와 자가복구(Self-Recovery) 로직을 추가하고, Health Group을 분리했다. Spring Boot의 기본 헬스체크가 어디까지 커버하고, 어디서부터 커스텀이 필요한지, 장애 감지 후 Docker 재시작…
February 18, 2026
ZZOL 서비스에 Rate Limiting을 적용했다. 단순히 "요청을 제한하자"가 아니라, 같은 서버 보호인데 HTTP와 WebSocket에서 왜 다른 전략을 써야 하는지, 각 설정값을 왜 그렇게 잡았는지에 대한 판단 과정을 기록한다. 왜 서버 자기보호가 필요했는가…
February 17, 2026
에서 외부 서비스 장애 대응 작업을 했다. Oracle Object Storage에 QR 코드를 업로드하는 과정에서, 외부 서비스가 불안정할 때 시스템 전체가 영향을 받는 문제가 있었다. 이 글에서는 Circuit Breaker와 Retry를 도입하면서 고민한 과정을…
February 14, 2026
실시간 멀티플레이어 게임을 개발하면서 마주친 문제가 있다. 특정 상황에서 유저가 게임 흐름에서 이탈하는 현상이었다. 이 글에서는 문제를 분석하고 해결한 과정을 공유한다. 문제 인식 유저 피드백 ZZOL은 실시간으로 여러 명이 함께 플레이하는 게임 서비스다. 배포와 동…
February 05, 2026
우테코 프로젝트 에서 대시보드 API 성능 개선 작업을 했다. 레이싱 게임 TOP 플레이어 조회 API가 너무 느려서 원인을 파악하고 개선하는 과정을 기록해본다. 문제 상황 dev 환경에 데이터를 넣고 API를 호출해보니 응답이 너무 느렸다. 로 쿼리 실행 계획을 확…
January 01, 2026
지난 회고: retrospect-2024-2 돌아보기 2025년은 유독 기억에 많이 남을 한 해로 남을 것 같다. 할 말이 너무 많은데 이 글에 다 담길지 모르겠다. 우아한테크코스를 마치며 IMG_7091.jpeg 올해는 우테코가 차지하는 비중이 정말 크다. 정말 몰…
December 29, 2025
ZZOL 서비스에 Graceful Shutdown을 구현했다. 단순히 "서버를 안전하게 끄자"가 아니라, WebSocket 기반 실시간 게임 서비스에서 "게임 중인 유저의 세션을 어떻게 보호할 것인가"에 대한 이야기다. OS의 SIGTERM 시그널부터 Spring의 …
November 19, 2025
우테코 프로젝트에서 서비스 기획을 전면 수정했다. 원래 "커피 내기" 서비스였던 커피빵(CoffeeShout)을, "똥손도 즐기는 게임 기반 추첨 서비스" ZZOL(쫄)로 바꿨다. 왜 바꿨고, 뭘 바꿨는지 기록한다. 원래 기획: 커피빵(CoffeeShout) 커피빵의…
October 14, 2025
infra_design 지난 글에서 이어집니다! Redis pub/sub Redis Pub/Sub의 동작 원리를 이해하면 왜 이 방식이 실시간 게임 동기화에 적합한지 명확해진다. Redis 내부 구조 Redis 서버는 C로 구현되어 있으며, Pub/Sub 기능은 내부…