UPDATED. 2018-05-22 15:36 (화)
[NDC 2017 #11]2,000일 맞은 ‘아이펀 엔진’ 탄생비화 전격 공개
[NDC 2017 #11]2,000일 맞은 ‘아이펀 엔진’ 탄생비화 전격 공개
  • 판교=변동휘 기자
  • 승인 2017.04.26 13:36
  • 댓글 0
이 기사를 공유합니다

4월 26일 ‘NDC 2017’ 2일차 강연이 시작됐다. 이날 강연자로 나선 아이펀팩토리 문대경 대표는 자사의 게임서버 엔진 ‘아이펀 엔진’의 개발 과정에 대해 소개했다.
 

 

‘아이펀 엔진’은 단순 네트워크 엔진이 아닌 게임 서버 프레임워크 개발 프로젝트로 시작됐다. 모바일 지원 요소를 포함해 범용 서버엔진으로 개발됐다. 부스트, cURL, 구글 플래그, C# 지원을 위한 모노, 게임리프트 SDK, Open SSL 등의 기술이 활용됐다. 2011년 11월 9일 개발을 시작했으며, 이 날로 1,996일째를 맞았다. 19명이 이 프로젝트에 참여했으며, 2,071개의 빌드를 내보냈다. 현재 이 프로젝트는 1,257개의 파일과 29만 여개의 라인으로 구성됐다.

이어 개발과정에 대해 소개했다. 개발 2일차 데비안 패키징을 결정하고, 이를 구현했다. 엔진을 다운로드하는 사람들이 이상을 겪는 일이 없도록 하기 위함이었다. 4번째 날부터는 작업자와 상관없이 결과물의 객관성을 보장하기 위해 Continuous Integration을 사용했다. 8일차에는 DHT기반 P2P를 구현했고, 700여 일차에 삭제했다. 30일차에는 이벤트 기반 프로그래밍 형태로 변경, 선별적으로 사용할 이벤트만 사용할 수 있도록 했다. 41일차에는 문서화 작업을 시작했으며, 43일차에는 라이브러리에서 프레임워크 형태로 변경해 학습 곡선을 줄였다. 이후 분산 서버 구축을 위한 작업들과 행동 로그 시스템, TCP/UDP 네트워크 세션, ORM 등을 구현했다.

모바일 플랫폼 인증 기능은 409일차에 구현됐으며, 페이스북과 넥슨 계정을 지원했다. 이후 유니티 3D를 지원하기 시작했으며, 모바일 플랫폼 결제 검증 기능 역시 추가됐다. 게임 엔진 가시성 향상을 위한 서버 엔진 프로파일러와 사용 편의성 확대를 위한 C# 지원, 모니터링 대시보드 구현 등이 이어졌다. 배포 관련 작업이 먼저 진행됐으며, 이후 프로그래밍 모델 관련 내용을 구현한 것이다. 이는 외부 배포라는 프로젝트의 특성으로 인해 변경된 부분이라는 그의 설명이다.
 

 

이를 통해 얻은 교훈으로 그는 솔루션 배포 방식에 대한 고민을 들었다. 처음부터 업그레이드 방법을 고려해야 하며, 설치 방식이 단순해야 한다는 것이다. 윈도우를 지원하지 않는 이유 역시 업그레이드 방식이 없기 때문이다.
또한 버그는 치명적이라는 점을 배웠다고 밝혔다. 패치를 내보내도 한 번 나간 버그는 사라지지 않을 수 있으며, 한 번 돌아선 사용자는 돌아오지 않는다는 것이다.

이에 만회 방법으로 피어 코드 리뷰를 생활화해 버그 가능성을 개인의 능력이 아닌 시스템으로 해결하기 시작했다. 빌드 자동화를 통해 제품의 일관된 품질을 보장하고, 작업자에 따른 결과물 차이라는 위협을 제거했다.
특히, 그가 강조한 것은 문서화다. 아무리 좋은 기능을 넣어도 외부에서는 블랙박스에 불과하기에 힌트가 없으면 사용할 수 없다는 것이다. 이로 인해 문서는 소프트웨어 솔루션의 U·I로 여기게 됐다는 그의 설명이다. 솔루션은 블랙박스이기에 인터페이스를 최소화하고 동작은 직관적이도록 만드는 것 역시 중요하다고 역설했다.

또한 문 대표는 서비스 운영/모니터링에도 신경써야 하며, 동료들과의 협업 역시 고려해야 한다고 지적했다. 내부 프로젝트면 1인이 이끌어가는 것이 가능하지만, 외부로 나가는 프로젝트의 경우 ‘독재’는 위험하다는 그의 설명이다. 이어 문 대표는 서버 엔진은 네트워크 엔진이 아니기에 전반적인 생산성과 확장성에 대한 많은 고려가 필요하다고 말했다.

아이펀팩토리 문대경 대표는 “‘아이펀 엔진’ 개발을 시작한 지 2,000일이 됐다는 것을 강연을 준비하며 알게 됐다”며 “좀 더 신뢰도 높은 엔진을 만들기 위해 앞으로도 노력하겠다”고 말했다.


댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.