2012년.
컴투스 퇴사 후 집에서 놀고있던 제게 전 컴투스 직장 동료 PD 분이 찾아와 느닷없는 제안을 주셨습니다.
"게임서버 개발 하지 않겠는가"
그래서 8월에 오렌지크루에 입사하게 되었습니다.
서버개발 전임자가 있었는데, 해당 소스를 이어받아 개발하게 되었습니다.
프로젝트 초기라서 많이 진행된 부분은 없으나, C# 기반은 전사 공통이라고 해서 그대로 따라갔습니다.
C#은 처음이고 게임 서버 개발은 처음이었지만, 보니까 Java 랑 거의 비슷하여 금방 적응했습니다.
게임 규모가 아주 크지는 않아서 혼자서 이 TCG 게임 서버를 개발/유지보수 하였습니다.
또한 지속적으로 컨텐츠 업데이트 및 운영업무를 하였습니다.
기술 스택
- Windows Server 2008, IIS
- C# ( ASP.NET MVC 2 프레임워크 )
- MySQL
- NCloud (네이버 클라우드...)
- Redis
- Python
구현 내용
- 게임서버 구성 및 API 설계
- 게임 컨텐츠 구현
- 게임 외 서비스 시스템 (고객센터, 집계, 웹 운영시스템) 구축
주요 성과
- MySQL Master-Master 리플리케이션 설계.
- MySQL 소프트웨어 샤딩. 스케일링이 쉽도록 구성.
- 바이너리 프로토콜로 통신. json 대비 패킷량 1/3 .
- Redis 캐싱, 웹서버 인 메모리 캐싱 등을 최대한 활용하여 내부 네트웍 부하 감소.
- Redis SortedSet 자료구조를 이용한 빠른 랭킹서비스.
- 초기 오픈 MAU 20만 상황에서 큰 서버장애가 없었음.
오픈 초기에는 나름 주변 지인들도 많이 플레이하고 해서 뿌듯했었네요.
Kakao 버젼은 게임빌이 퍼블리싱 했었는데...
이때 퍼블리싱 사업 담당자이시던 분을 나중에 이직해서 또 만나게 될줄은 몰랐습니다. ㅎㅎ
고생한 기억
서버사이드 Validation 을 철저히 안해서 고생한 점
미션 마지막 스테이지를 클리어하면 특별 보상을 주는 퀘스트가 있었습니다.
한번 깨면 두번은 못들어가도록 클라에서 막힌다고 해서,
굳이 서버사이드 검증 없이 개발을 마무리 했었습니다.
아니 근데 어쩌다가 클라 버그가 생겨서....
한번 깻던 마지막 스테이지를 다시 들어갈 수 있게 되었습니다.
서버사이드에서 Validation을 안한 탓에 많은 사람들이 버그를 이용해서 보상을 수령했습니다.
긴습하게 서버를 닫고 대응을 했습니다.
다행히 로그는 철저히 남기고 있어서... 이런식으로 버그를 사용한 사람들을 추적 가능했는데.
밤새면서 로그를 추적하여 버그로 보상을 수령한 사람 재화를 회수하고 겨우 다시 오픈할 수 있었습니다.
점검을 시작한건 금요일 오후 6시경.
점검 완료는 토요일 오전 11시경.
이 게임 운영하며 육체적으로 가장 힘든 순간이었습니다.