1:04 · protobuf · codegen · bot client · load test

패킷 정의 하나로, 개발부터 라이브까지

이 영상에 나오는 용어 14개.

.proto 파일
메시지 이름, 필드 이름, 타입, 번호를 선언하는 스키마 파일이다. 영상에서는 game_packet.proto가 모든 패킷의 원본이다.
동접 (CCU)
같은 시점에 접속해 있는 사용자 수다. 서버 대수를 정할 때 기준이 되는 값이다.
봇 클라이언트
사람 대신 프로그램이 실제 클라처럼 서버에 접속해 패킷을 보내는 테스트용 클라이언트다. 화면이나 리소스 없이 패킷 흐름만 재현한다.
부하 테스트
많은 봇을 동시에 접속시켜 서버와 인프라가 어디까지 버티는지 재는 테스트다. 영상에서는 CPU 70%를 임계로 잡는다.
코드 생성(codegen)
스키마에서 소스 코드를 자동으로 만들어 내는 과정이다. 사람이 직접 짜지 않으니 클라, 서버, 봇의 패킷 구조가 같게 유지된다.
패킷
클라이언트와 서버가 주고받는 메시지 한 단위다. 영상에서는 .proto의 message 하나가 패킷 하나에 해당한다.
패킷 플로우
로그인부터 던전 클리어까지 클라가 서버와 주고받는 패킷의 순서다. 봇은 이 순서를 그대로 따라 한다.
퍼블리셔
게임을 서비스하고 운영하는 회사 또는 조직이다. 영상에서는 QA와 인프라팀이 봇을 받아 부하 테스트를 한다.
필드 번호(tag)
각 필드 뒤의 = 1, = 2 같은 숫자다. 직렬화된 바이트에서는 이름 대신 이 번호로 필드를 구분하므로 한 번 정하면 바꾸지 않는다.
p99 지연
요청의 99%가 이 시간 안에 끝난다는 뜻의 응답 시간 지표다. 평균에 묻히는 느린 요청을 드러낸다.
Protobuf (프로토콜 버퍼)
Google이 만든 직렬화 형식이다. 스키마를 .proto 파일에 적고, 여기서 각 언어용 직렬화 코드를 생성해 쓴다.
protoc
Protobuf 컴파일러다. .proto를 읽어 C#, C++ 등 지정한 언어의 클래스 코드를 만든다.
RPS / DB QPS
초당 요청 수와 DB의 초당 쿼리 수다. 동접이 늘 때 서버와 DB가 받는 부하를 나타낸다.
Single Source of Truth
같은 정보의 원본을 한 곳에만 두는 원칙이다. 여기서는 패킷 정의가 .proto 한 파일에만 있다.