DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 우아한형제들
  • Related reads#Server-SentEvents
#Backend

AI에게 만드는 법 대신 실패하는 법을 묻다: 포토그래퍼의 수천 명 동시 접속 게임 만들기

AI에게 만드는 법 대신 실패하는 법을 묻다: 포토그래퍼의 수천 명 동시 접속 게임 만들기
01

Summary

포토그래퍼가 3주 만에 수천 명 동시 접속 게임을 성공시킨 비결: AI에게 '실패하는 법'을 묻다

제한된 인프라와 시간 속에서 WebSocket 없이 SSE와 Redis Pub/Sub으로 돌파한 감동의 라이브 아키텍처 도전기

우아한형제들 크리에이티브AI파트너팀 소속 포토그래퍼가 단 3주의 데드라인 속에서 3,000명 대규모 실시간 행사용 게임을 개발한 비하인드 스토리입니다. WebSocket 부재라는 거대한 제약을 단방향 SSE 통신과 Redis Pub/Sub을 활용한 분산 상태 동기화로 우아하게 풀어낸 아키텍처 설계 과정을 다룹니다. 특히 리허설 당일 발견된 노후 송출 기기의 그래픽 처리 병목 상황에서, 라이브 서비스의 생존을 위해 과감한 타협안을 수립해 낸 시니어 관점의 현장 대응 방식이 깊은 인사이트를 줍니다.

  • 01배포 인프라 제한 속에서 양방향 WebSocket 대신 가벼운 SSE(Server-Sent Events)와 REST 통신의 시너지 채택
  • 02다중 Kubernetes Pod에 분산 접촉된 수천 명 유저에게 동일한 실시간 게임 이벤트를 전파하고자 Redis Pub/Sub을 연계
  • 03생성형 AI(Claude Code, GPT)에 실패 유도 질문을 반복하여 동시 요청 지연 등의 비정상 케이스 방어책 마련
  • 04새로고침, 세션 무효화 등 실제 무대 상황을 반영한 시나리오 기반 대규모 봇 부하 테스트 환경 구축 및 극복
  • 05현장 송출 기기의 그래픽 부하에 맞춰 Canvas 2D 렌더링 및 하드코딩 연출, 사전 비디오 렌더링으로 급격한 연출 타협안 수립

+RECOMMENDATION

AI를 코딩 보조 이상으로 격상시켜 설계 파트너로 활용해 보려는 시니어 및 주니어 개발자, 그리고 제한된 기한과 리소스로 최대의 실시간 안정성을 뽑아내야 하는 서비스 기획자들에게 일독을 추천합니다.

The Problem

사내 창립 기념 전사 행사에서 수천 명의 구성원이 동시에 접속하여 실시간으로 즐길 수 있는 라이브 게임을 3주라는 짧은 기간 안에 안정적으로 구축해야 하는 과제가 주어졌습니다. 또한, 당시 사내 배포 플랫폼의 제약으로 실시간 양방향 통신에 흔히 사용되는 WebSocket을 채택할 수 없는 환경이었습니다.

The Solution

실시간 통신을 위해 WebSocket 대신 단방향 데이터 전송인 SSE(Server-Sent Events)와 REST POST 요청을 결합하여 통신 모델을 최소화하였으며, 다중 Pod 간의 게임 상태 동기화를 위해 Redis Pub/Sub 구조를 가동했습니다. 또한 AI에게 예상 실패 시나리오를 질문하여 무작위 요청 지연을 반영하고, 실제 유저의 비정상적 행동 패턴을 모방한 가상 봇들을 Kubernetes Job으로 실행해 가며 서버의 내구성을 부하 테스트로 입증했습니다.

The Result

행사 당일 백엔드 서버 다운 없이 1,700명 이상의 동시 접속자를 안정적으로 감당하며 전반적인 통신 연동을 완수했습니다. 다만, 행사장의 노후된 송출용 Windows 노트북의 성능 부족으로 인해 WebGL/Canvas 2D로 구성된 실시간 전광판 렌더링 화면 전환에서 최대 1분 이상의 지연이 발생하는 성능적 난조를 겪었습니다.

Trade-off

송출 기기의 예상치 못한 사양 한계에 직면하여 현장에서 실시간 집계 연출을 포기하고 하드코딩된 값으로 전광판을 순차적으로 채우는 기술적 타협을 선택했습니다. 또한 단방향 전송 아키텍처 특성상 후반부에 접속이 단절된 사용자들을 완벽하게 추적하고 실시간 유입률 변화에 대처하는 제어 능력은 완벽하게 실현하지 못했습니다.

03

Key Concepts

Concept · 01

Server-Sent Events (SSE)

서버가 지속적으로 수립된 단방향 HTTP 연결을 통해 클라이언트에게 데이터를 실시간으로 전달할 수 있는 웹 푸시 기술입니다. 폴링에 비해 서버 부하가 낮고 아키텍처가 단순합니다.

  • WebSocket을 쓰기 어려웠던 플랫폼 한계를 극복하기 위해 모든 유저의 모바일 기기로 게임 단계와 카운트다운을 즉시 전송하는 메인 동기화 수단으로 사용되었습니다.
Concept · 02

Redis Pub/Sub

Redis의 발행/구독(Publish/Subscribe) 기능으로, 하나의 Pod가 메시지를 특정 채널로 퍼블리시하면 해당 채널을 구독하는 모든 Pod에 메시지를 전파하는 구조입니다.

  • 로드밸런서로 무작위 배정되는 여러 Kubernetes Pod들이 관리자용 운영 패널의 단계 변경 지시를 일괄적으로 확인하여 유저들에게 동시에 SSE를 전파할 수 있도록 메시지 허브 역할을 수행했습니다.
Concept · 03

Claude Code & 검증 세션 분리

기능 코딩을 수행하는 세션과 개념 판단 및 설계 검토를 수행하는 세션을 서로 다른 계정이나 모델로 완전 격리하여 피드백 바이어스를 차단하는 AI 연동 방법론입니다.

  • 구현 로직의 자가당착을 배제하고 '어떻게 하면 이 서버가 마비될 것인가'와 같이 장애 지점을 찾아내는 역발상 구조 설계 검토에 독립적으로 활용되었습니다.
Continue reading · same source

우아한형제들More from 우아한형제들

View all posts from 우아한형제들
  • 옆 팀은 AI를 어떻게 쓸까? 첫 사내 기술 콘퍼런스 우아한테크데이

    Developer RelationsKnowledge SharingAI Transformation
    1주 전
  • 기술블로그 세 번째 책 《요즘 우아한 백엔드 개발》 출간

    KotlinApache KafkaElasticsearch
    3주 전
  • 배포 없이 앱과 로컬 웹을 잇다

    ProxyTunnelingWebSocket
    3주 전
  • BFF 서버에 SSE를 도입한 이유: 전시 서버의 통신 구조 재설계

    BFFSSEReact Query
    1개월 전
  • 기술이 없던 곳에 기술 더하기: 사내 해커톤 플랫폼 만들기

    AI-Assisted DevelopmentClaudeSpring Boot
    1개월 전

Related reads#Server-SentEvents

Explore #Server-SentEvents
포스타입·AI Chatbot

포스타입 캐릭터톡 출시기 2부

#Server-SentEvents3개월 전
포스타입·Claude

포스타입 캐릭터톡 출시기 1부

#Server-SentEvents4개월 전

Source

우아한형제들
우아한형제들
Engineering Blog

Published · August 28, 2026

Topics

Server-Sent EventsRedis PubSubKubernetesLoad BalancingGenerative AI