경력 13년(14년차)인데, 처음으로 게임 개발 회사에 취업을 하였습니다.
모바일 게임을 제작중인데, 제가 입사하기 전 서버와의 통신을 HTTP 을 통해서 하려고
틀을 잡아놨더군요.
API 문서와 초반 부분 코딩된 것이 있었는데, 좀 갈아엎었습니다.
이전에 잠시 다른 분이 손을 댔던 건데,
비공개 소스가 있어서 내부에서 어떻게 돌아가는지 예측만 되지 확인이 안되어...
그냥 Java 표준 기술로만 만들고 있습니다.
여기만 그런줄 알았더니, 지인의 회사에서도 이렇게 개발을 하고 있다고 하더군요.
그래서 게임 서버 프로그래밍을 하지 않던 웹 프로그래머들이 게임 서버 프로그래밍 쪽으로 넘어와
작업을 진행하는 경우가 있나 봅니다.
저의 경우 Spring MVC 3.2.x + MyBatis 3.x 을 주축으로,
Jackson(json)/Hibernate @Valid/Spring-MyBatis @Annotation 을 쓰고
Tomcat 7 을 쓰는지라 DBCP 버리고 Tomcat Connection Pool 을 도입하고
Apache Httpd 에서는 mod_proxy 로 테스트삼아 3 개의 Tomcat 을 Clustering 하고 있습니다.
이러한 결과물은 UClode 에 넣어서 테스트를 진행할 생각이고, Cloud Internal Path 설정으로
내부에서 통신이 이루어지도록 해놨습니다.
DB 는 noSQL 을 써보자는 고민도 했었다고 하나, 일단 메인은 안정성이 검증된 RDBMS 을 쓰고 싶어
MySQL 와 호환성이 99% 유지되는 MariaDB 5.5 을 설치하고 Galera Cluster 을 설치해서
현재는 2 대만 Sync-Clustering 을 구현해놓은 상태입니다.
여기까지 진행하면서 나름 힘들었던게 CIP(Cloud Internal Path) 을 잡기 전
서버에서 제대로 deploy 안되는 문제가 있었는데...이건 CIP 로 하던지, 가상IP 로 DB 에 접근해야 하는
문제라서...하루 완전히 까먹고...
MariaDB 에 Galera Cluster 을 적용하는데,
에러 메세지를 제대로 보려면 수동으로 DBMS 을 실행해야 하고
그 에러에 대한 해결책을 잘 찾을 수 없어서 삽질을 좀 했습니다.
해보니 결과물은 매우 심플한데
사소한 이해부족이 낳은 결과는...이틀 정도의 삽질로 나타났네요.
어쨌든 이것저것 좌충우돌하면서 한 달(입사 딱 한 달째네요)만에
기본 정의된 API 는 다 구현했네요.
이 주 동안 게임 클라이언트에 이를 반영하고(API 의 명칭이나 매개변수명을 다 뜯어고쳐서)
그 사이 Admin 페이지를 만들어야 합니다.
이제 진짜 웹 프로그램을 만드는거죠.
앞으로는 여럭이 된다면 HTTP 가 아니라 Netty/Mina 와 같은 NIO 기반 통신이나,
조금 더 고수준의 Vert.x(node.js) 나
Socket.io(Vert.x 에서 쓸 수 있도록 구현된 라이브러리 존재합니다) 로
클라이언트를 만들어보고 싶은 욕심도 생기네요.
특히 HTTP 의 경우 게임 클라이언트의 종료를 알아챌 방법이 없어서
통계 등을 낼 때 문제가 생겨서 나중에 다시 Socket 기반으로
바꾸어야 하지 않을까 생각이 들기도 합니다.
0
0
댓글을 쓰려면 로그인이 필요합니다.