> STATUS: READY FOR UPLINK
> AUTHENTICATION: PENDING...
저희 Zero Ratency 팀의 서버 아키텍처 발표에 오신 것을
환영합니다!
본 문서에서는 저희가 직접 구축한 비동기 네트워크 소켓 입문부터 고성능 서버 코어 프레임워크까지의
기술적 의사결정과 구현 과정을 단계별로 소개합니다. 목차를
클릭하여 Zero Ratency의 기술적 여정을 함께 확인해 보시죠.
ComfyUI 기반 AI 캐릭터/배경 생성부터 영상화, 스프라이트 시트 변환까지의 자동화 파이프라인을 소개합니다.
Unity 기반의 데모 클라이언트를
통한
인게임 리소스 테스팅 및 인터랙션 과정을 소개합니다.
Minimal API 기반의 백엔드 관리자 패널을
통한
유저 데이터 관리 및 실시간 로그 모니터링 시스템을 소개합니다.
TCP/UDP 통신의 차이점과 비동기(Async) 소켓 논 블로킹(Non-Blocking) 처리의 당위성에 대한 기초 설명을 기술합니다.
클라이언트 접속을 관장하는 Listener부터 커넥션 풀을 관리하는 Connector, 세션 라이프사이클을 추적합니다.
네트워크 송수신 메모리 블록(Recv/SendBuffer) 관리 기법과 TCP 스트림 패킷 데이터 조각화 파싱(PacketSession) 과정을 다룹니다.
다양한 데이터 구조체의 직렬화/역직렬화 이론과, 프리팹 코드를 자동화 생성하는 Packet Generator 설계 패턴을 집중 학습합니다.
경쟁 상태(Race Condition) 방어 기법, 메모리 락(Lock), 그리고 다중 스레드 병목 현상을 유연하게 제거하는 Lock-Free 기반 JobQueue와 JobTimer 최적화 기술 집대성하여 정리했습니다.
🚀 지연 시간 최소화를 꿈꾸는 Zero Ratency 팀원들을 소개합니다.
저희 Zero Ratency 팀은 지연 시간 최소화(Zero
Ratency)를 목표로, 고도화된 백엔드 기반 기술을 탐구하기 위해
형성된 열정 넘치는 그룹입니다. 각자의 영역에 집중하여 단단한 서버 프레임워크를 함께 완성할 것 입니다.
Dawnholder 프로젝트는 최신 생성형 AI 기술인 ComfyUI를 활용하여, 기획 단계의 아이디어를 실시간으로 고품질 게임 에셋으로 변환하는 독자적인 파이프라인을 구축했습니다.
텍스트/스케치를 기반으로
고퀄리티 캐릭터 원화 생성
월드 컨셉에 맞는
웅장한 배경 에셋 생성
정지 영상을 기반으로
부드러운 애니메이션 영상 생성
영상을 인게임 적용 가능한
스프라이트 시트로 자동 변환
Unity 엔진의 캔버스 시스템을 활용하여, 테스트용으로 다양한 해상도에 대응 가능한 반응형 UI를 구축했습니다.
특히 드로우 콜 최적화와 레이어링
관리에 집중하여 쾌적한 테스트 환경을 제공합니다.
에디터 상의 요소 배치 및 계층 구조
인스펙터를 활용한 정밀 프로퍼티 설정
💡 주요 특징:
- 데모 클라이언트를 통해 리소스 테스트
- 실제 Scene에서 시각적으로 확인하며 직관적 대응 가능
서버의 유저 데이터 정합성을 유지하고, 발생하는 모든 인게임 이벤트를 추적하기 위한 통합 관리 시스템입니다.
Minimal API
아키텍처를 기반으로 설계되어 가볍고 빠른 성능을 제공합니다.
회원가입, 로그인 등 핵심 유저 인증 로직의 정합성을 검증하고 데이터를 관리합니다.
전체 로그 조회 및 닉네임, 액션 타입별 필터링 기능을 통해 서버 상태를 실시간으로 파악합니다.
RESTful 엔드포인트를 통해 클라이언트와 효율적으로 데이터를 송수신하며 오버헤드를 최소화합니다.
전화 통화 📞 vs 엽서 던지기 📮
네트워크 통신의 첫 단추, 어떤 프로토콜을 선택해야 할까요?
강력한 신뢰성이 요구되는 자체 게임
서버 환경에서는 데이터 유실을 완벽히 방어해야 합니다.
따라서 저희 Zero Ratency 팀은 무결성을 최우선으로 보장하는
TCP(Transmission Control Protocol)를 메인 네트워크 기반으로 채택하였습니다.
상대방이 전화를 받았는지
확인 후 대화
시작
(3-Way Handshake)
주소만 적고 우체통에
무작정 때려넣기
진동벨의 마법: 요리가 완성될 때까지 멍 때리지 마라! 🛎️
서버가 수천 명의 접속자 요청을 처리할 때 발생할 수 있는 가장 큰 병목은 바로 대기
시간(Blocking)입니다.
이를 해결하기 위해 저희 Zero Ratency 팀은 스레드 유휴 시간을 최소화하고 자원 효율을
극대화하는
논 블로킹 비동기(Async) 소켓 아키텍처를 설계하여 압도적인 처리량을 확보했습니다.
결코 쉬는 법이 없는 식당 안내데스크 📝
수천 개의 클라이언트 접속이 쏟아지는 현관문, 어떻게 통제할까요?
저희는 단일 스레드 병목을 막기
위해 비동기 Listener 예약 시스템을 구축했습니다.
Zero Ratency 팀은 클라이언트가 문을 두드리는 즉시
대기열(Backlog)에 빠르고 안전하게 입장할 수 있도록 논 블로킹 파이프라인을 완성했습니다.
관광버스 500대 예약 뚫기 (더미 클라이언트) 🚌
분산 서버 환경 및 대규모 더미 클라이언트 로드 테스트 환경을 위해, 다수의 연결을 동시에 제어하는
기능은 필수적이었습니다.
이를 위해 저희 Zero Ratency 팀은 수백 개의 소켓 커넥션을 운영체제에 전담시켜 일괄적으로 연결해
주는
비동기 Connector 단체 버스 패턴을 커스텀 구현했습니다.
원자적 잠금으로 Double Free 완전 차단 🔒
클라이언트 접속 해제(Disconnect)는 언제 발생할 지 모르며, 중복 해제 시 치명적인 서버
크래시를 유발합니다.
저희 Zero Ratency 팀은 멀티스레드 환경에서도 중첩 해제 사고를 방어하고 철저하게 메모리를
회수하는
안전한 생명주기(Lifecycle) 잠금장치 패턴을 Session 코어 로직에 적용했습니다.
GC 없는 무한 재사용 칠판 🎯
데이터 송수신 시 매번 메모리를 할당하면 가비지 컬렉터(GC) 부하로 인해 치명적 프레임 드랍이
발생합니다.
이를 원천 차단하기 위해 Zero Ratency 팀은 거대한 청크(Chunk) 메모리를 미리 할당해두고 슬라이딩 도어처럼
재사용하는
자체 제작 Recv/SendBuffer 풀링 시스템을 통째로 개발했습니다.
반쪽짜리 편지도 모아서 완성하는 우체부 📦
TCP 통신 특성상 패킷은 쪼개지거나 뭉쳐서 도착하는 '스트림 조각화' 현상이
필연적입니다.
안정적인 데이터 조립을 위해 Zero Ratency 팀은 헤더를 분석하여 온전한 패킷 규격이 완성될 때까지 킵해두고
정교하게
잘라내는 결합형 PacketSession 파서를 서버 아키텍처 내부로 완벽하게 융합했습니다.
낭비를 빈틈없이 없앤 기차칸 조립 패킷 🚄
무거운 JSON 데이터 포맷 대신, 전송 규격을 극한으로 깎아내기 위한 직렬화(Serialization)
최적화가 필요했습니다.
저희 Zero Ratency 팀은 BitConverter와 포인터를 활용하여 바이트 배열(Byte
Array) 수준에서 데이터를 다이렉트로
조립하고 분해하는 초경량 바이너리 직렬화 파이프라인을 성공적으로 구축했습니다.
XML 명세서로 코드를 찍어내는 붕어빵 파이프라인 🤖
서버 로직이 방대해질수록 수백 개의 패킷 클래스를 일일이 하드코딩하는 것은 치명적 휴먼 에러의 주범이
됩니다.
이를 완전히 방지하고자, Zero Ratency 팀은 XML 설계 문서만 작성하면 수천 줄의 패킷 직렬화 C# 코드를 1초 만에
뽑아내는
강력한 자동화 툴(Packet Generator)을 자체 개발해 유지보수성을 극대화했습니다.
✨ 효과: 클라이언트와 서버가 완벽히 동일한 패킷 코드를 공유하여 버전 불일치 버그 원천 차단
하나의 메모지에 동시에 글씨 쓰기 📝
멀티 스레드 환경에서는 동시다발적인 자원 접근 시 필연적으로 경합(Race Condition)이
일어납니다.
저희 Zero Ratency 팀은 이러한 치명적인 데드락(Deadlock)과 변수 오염을 완벽방어하기 위해,
스레드 간의
메모리 락(Lock) 체계와 동기화 구조를 기초부터 단단하게 설계했습니다.
일감 던져놓고 퇴근하기 (총대 메기 패턴) 🏃💨
모든 스레드가 자물쇠(Lock)가 풀리길 기다리며 줄을 서면 어마어마한 병목이
역발생합니다.
Zero Ratency 팀이 고안한 궁극의 해결책은 Lock-Free 기반의 JobQueue
시스템입니다.
'처음 도착한 스레드가 쌓인 일감을 전담 처리(총대 메기)' 하는 이 영리한 기법으로 스위칭 오버헤드를 획기적으로 없앴습니다.
"내가 첫 번째로 왔으니 큐에 쌓인 걸 다 처리할게!"
지치지 않는 톱니바퀴 (심장 박동 사이클) ⏱️
스킬 쿨타임, 몬스터 스폰 등 미래의 예약 작업들을 어떻게 1프레임의 오차 없이 관리할까요?
저희
Zero Ratency 팀은 우선순위 큐(Priority Queue)를 기반으로 메인 루프에서 끊임없이 만료된 작업만 건져서
실행하는
중앙 집중형 JobTimer (심장 박동) 스케줄링 시스템을 서버의 엔진으로 연동시켰습니다.