리전이 다르면 캐릭터 ID가 겹친다: 파이프라인 전역 Redis 락 설계
같은 캐릭터의 동시 요청을 핸들러마다 막는 대신 파이프라인 한 곳에서 직렬화하면서, 락 키와 파이프라인 위치를 정한 기준
devlog / log
게임 서버와 인프라를 운영하며 겪은 문제와 해결 과정을 기록합니다.
Kafka, gRPC, Kubernetes, .NET을 주로 다루고, 잘 안 풀렸던 장애도 그대로 남깁니다.
김재중 · 백엔드 · 게임 서버 · 이력서 →
28편
같은 캐릭터의 동시 요청을 핸들러마다 막는 대신 파이프라인 한 곳에서 직렬화하면서, 락 키와 파이프라인 위치를 정한 기준
롤링 업데이트 중 간헐적으로 502가 나던 원인을 종료 유예 시간과 고정 대기 프로브에서 찾고, startupProbe와 PodDisruptionBudget으로 정리한 기록
엑셀 데이터 브랜치마다 Unity와 서버가 같은 데이터를 보도록 Integration API, AppVersion, GitOps values, Helm 배포를 연결한 기록
일반 대화 속에서 버그, 핵/어뷰징, 운영 이슈 신호만 걸러내기 위해 채팅 윈도우, 프롬프트, 리포트 저장 기준을 조정한 기록
LogRecordSharedPool.Rent()의 thread-safety 버그(#6233)를 PR(#6833)로 해결하고 설날 연휴에 main 브랜치에 머지되기까지의 기록
Kafka 3.x의 KRaft 모드 변화와 로그 세그먼트, 희소 인덱스, 제로 카피 기술을 통한 성능 최적화 원리를 정리한다.
StackExchange.Redis로 AWS ElastiCache 클러스터의 모든 키를 안전하게 조회하는 방법과 아키텍처 이해
배치 트랜잭션이 COMMIT 없이 열려있으면 어떻게 되는지, InnoDB 락 구조와 진단법을 실제 장애 사례로 정리한다.
프로필 이미지 수동 심사 병목을 AWS Rekognition으로 해결한 과정. 동기 처리 방식 선택부터 실제 구현까지.
주니어 개발자의 대용량 UPDATE 쿼리로 인한 MySQL 장애 대응기. innodb_trx로 트랜잭션 추적하고 빠르게 복구한 경험.
n8n을 단순 자동화 도구가 아닌 이벤트 처리 런타임으로 활용하는 방법. Docker Compose로 로컬에 띄우고, Basic Auth가 걸린 Webhook API를 직접 만들어본다.
Google의 에이전트 IDE Antigravity 소개와 .agent 폴더 기반 프로젝트 컨텍스트·워크플로우 관리 기록
AWS 게임 컨퍼런스에서 들은 MemoryDB, Valkey, Amazon Q Developer 세션 정리 및 인사이트
Google OAuth, Calendar API, Webhook 동기화로 회의실 예약 시스템 Roomly를 설계하고 구현한 과정을 정리한다.
GitHub Copilot, Cursor, Claude Code 세 가지 AI 코딩 도구를 실무 관점에서 비교 분석
OTel SDK와 Collector 사이드카, tail-based sampling, Jaeger v2 + OpenSearch로 분산 트레이싱을 구성한 기록
비밀번호는 왜 bcrypt로 저장해야 하는지, 데이터 암호화는 왜 AES-GCM을 쓰는지 실무 관점에서 정리
모바일 게임의 인앱 결제 시스템 구축 경험. 구글/애플 영수증 검증, 중복 지급 방지, 실패 시나리오 처리까지.
Google Play Developer API 호출을 위한 OAuth 2.0 인증 체계와 Service Account 활용법 정리
gRPC의 4가지 통신 패턴부터 Interceptor, Deadline, Load Balancing까지. 실전에서 바로 쓸 수 있는 gRPC 가이드.
Protobuf의 바이너리 인코딩 원리부터 실전 활용까지. Wire Type, Varint, ZigZag 인코딩을 직접 계산해보며 이해한다.
Kafka Consumer의 GROUP_INSTANCE_ID 설정을 변경하면서 겪은 리밸런싱 폭풍과 파티션 할당 문제 해결기
Firebase Cloud Messaging과 Kafka를 활용한 대규모 푸시 알림 시스템 설계 및 구현 경험