피드로 돌아가기
Dev.toBackend
원문 읽기
100+ 스크립트 환경에서 Client CPU 0.42ms를 달성한 Event-Driven 아키텍처 설계
Building a 100+ Script FiveM Server Package: Architecture Decisions That Mattered
AI 요약
Context
다수의 독립적인 Lua 스크립트를 단순 집합 형태로 구성한 기존 서버 패키지의 파편화된 구조 분석. 일관성 없는 Event 패턴과 개별 설정 파일 사용으로 인한 유지보수 효율 저하 및 성능 확장성 한계 직면.
Technical Solution
- GetConvar 시스템 기반의 단일 설정 파일(meteo.cfg) 구축을 통한 서버 전역 Source of Truth 확보
- 기존의 Wait 루프 기반 Polling 방식을 ox_lib의 lib.points 및 lib.onCache를 활용한 Event-Driven 패턴으로 전환하여 CPU 오버헤드 제거
- 개별 스크립트의 파편화된 DB/UI를 하나의 Shared Tablet 인터페이스로 통합하여 기능 간 유기적 연결 및 게임플레이 루프 설계
- Server-side Authority 원칙 적용 및 NUI callback strict mode 활성화로 Client-side 조작 가능성을 차단한 보안 계층 설계
- Locale Key 기반의 추상화 레이어 도입을 통해 코드 수정 없는 다국어 지원 구조 구현
Impact
- 100개 이상의 커스텀 스크립트 동시 구동 시 Total Client CPU 사용량 0.42ms 달성
- 브랜드 리네이밍 작업 시간을 단 2분 내외로 단축
실천 포인트
1. 반복적인 상태 확인(Polling) 대신 상태 변경 시점에만 동작하는 Event-Driven 구조 검토
2. 설정값의 파편화를 막기 위한 Centralized Configuration 전략 수립
3. 보안 설계를 사후 조치가 아닌 Server-side Authority 기반의 아키텍처 기본 원칙으로 설정
4. 다국어 지원 등 확장성 요구사항은 초기 설계 단계에서 Key-Value 추상화 레이어로 구현