재직 중
슈퍼플래닛
백엔드 · 인프라산업기능요원 (보충역 · 전직 가능)
여러 게임이 같이 쓰는 공통 플랫폼(인증·결제·리워드·지표) 서버와 사내 운영툴을 개발하고 AWS 인프라와 장애 대응을 맡고 있습니다. 콘솔에서 23단계를 손으로 하던 EC2 배포를 EKS GitOps로 옮기고, 모듈마다 복사돼 갈라진 서버 프레임워크를 공용 모듈 하나로 다시 만들고 있습니다. 서버 팀은 3명이고 이 전환은 혼자 맡아 진행하고 있습니다.
문제 해결 사례 12건 자세히 보기주요 작업
iOS 결제 누락 원인 규명과 5일치 복구
로그와 관련 테이블 세 곳 모두에 결제 누락 흔적이 없어서 영수증을 직접 디코딩해 추적했습니다. 클라이언트가 StoreKit 2로 바뀐 뒤 레거시 영수증에서 in_app 필드가 빠지는데 이때 생기는 예외가 삼켜지고 있어서 검증 로직을 고쳤습니다. 영향을 받은 5일치 결제는 전에 실패한 요청을 따로 DB에 쌓도록 모듈들을 고쳐 둔 기록으로 찾아 전부 다시 처리했습니다.
콘솔 수작업 23단계 배포를 EKS GitOps로 (전환 단독 진행)
전에는 배포할 때마다 AWS 콘솔에서 AMI를 만들고 런치 템플릿 새 버전을 올린 뒤 Auto Scaling 인스턴스를 교체했습니다. 매뉴얼 기준 23단계였습니다. 지금은 push하면 빌드와 이미지 기동 검사, 카나리 배포가 이어지고 테스트를 포함해 약 5분이 걸립니다. 계정 2개와 클러스터 2개를 Terraform으로 만들고 사내 모듈 7개와 게임 서버 1개를 dev 클러스터에 올렸습니다. 운영 트래픽은 아직 EC2가 받고, DNS 교체로 넘어가고 명령 한 번으로 되돌리도록 준비해 두었습니다.
모듈마다 갈라진 서버 프레임워크를 공용 모듈 하나로
서버 모듈 14개가 같은 프레임워크를 각자 복사해 쓰고 있었고 사본끼리 갈라져 요청 진입 클래스가 6벌이었습니다. 공용 framework와 Maven 멀티모듈로 바꾸고 Java 25·Tomcat 11로 올린 뒤 6개 모듈을 옮겼습니다. 옛 빌드와 새 빌드를 같은 DB에 붙여 core 요청 10,847건(결제 753건 포함)을 비교했고 응답 차이는 0건이었습니다.
부하 시험으로 찾은 커넥션 풀 교착 (210 → 1,208 req/s)
core 모듈에 동시 300 부하를 넣자 처리량이 210 req/s, p95가 10초였습니다. 결제 실패 로그를 남기는 코드가 요청이 쓰던 연결을 쥔 채 두 번째 연결을 기다리고 있었습니다. 로그용 보조 풀을 DB마다 따로 두자 같은 시험에서 1,208 req/s, p95 0.5초가 나왔습니다.
사내 로그인(OIDC)과 권한 관리 서버 (dev 운영)
운영툴 로그인을 사내 OIDC 서버 하나로 모으고, 권한은 팀 도구 × 담당 게임에 개인 예외를 더하는 원장 하나로 계산합니다. Keycloak이나 Cognito를 쓰지 않고 직접 만들었습니다. Grafana·VPN 같은 외부 도구를 OAuth로 붙이려면 우리 쪽 OIDC 제공자가 필요했고, Cognito로 가면 AWS 의존이 더 늘어납니다. 기존 도구가 쓰는 v1 API는 응답을 그대로 유지합니다. 운영 DB 사본으로 이관을 리허설해 v1 응답이 옛 서버와 달라지는 756건을 찾아 고쳤습니다.
재화와 외부 쿠폰 발급의 정합성 설계 (운영 반영)
재화 차감과 쿠폰 발급이 서로 다른 서버에서 일어나서 잠금(Hold) → 확정(Capture) → 해제(Release) 3단계 원장과 7단계 주문 상태로 나눴습니다. 복구 뒤 시퀀스 재사용으로 다른 사용자에게 쿠폰이 나갈 수 있어 CSPRNG 멱등키로 막았습니다. private_key_jwt(RS256)와 JWKS 검증 순서도 고정했습니다.
장애 인지를 분 단위로 (관측 체계)
경보 규칙 67개와 Grafana 대시보드 42개를 코드로 관리합니다. 경보가 울리면 직접 만든 Slack 봇이 원인 분류와 가린 로그, 런북 링크를 붙여 앱마다 스레드 하나로 보냅니다. 감시 체계 자체가 죽는 경우는 클러스터 밖 데드맨 알람이 잡습니다. 전에는 서버가 내려가도 몇 시간 뒤에야 아는 일이 있었습니다.
사용 기술
Kubernetes (AWS EKS Auto Mode), Argo CD · Argo Rollouts, AWS (CodePipeline · CodeBuild · ECR · ALB · Aurora · S3 · Secrets Manager), Java 17 · 21 · 25 · Jakarta Servlet · Tomcat, Maven · MyBatis · HikariCP · gRPC, MySQL · Aurora · Redis · SQS, Terraform · Helm · Bash · Python, Prometheus · Grafana · Fluent Bit · Headscale



