아이펀팩토리 “어렵고 복잡한 서버 개발, 그건 우리가 할게요”

게임뉴스 | 이두현 기자 | 댓글: 1개 |



게임 서버 전문 개발사 아이펀팩토리(대표 문대경)가 판교에 위치한 엔씨소프트 R&D센터에서 기술 공유를 위한 '2018 아이펀팩토리 데브 데이'를 금일(28일) 개최했다. 올해로 4회째를 맞이한 이 행사는 자사의 서버 기술에 대해 개발자들과 소통하기 위해 마련됐다. 이번 아이펀팩토리 데브 데이의 부제는 '서버위더스(Sever with us)이다.

일반적으로 게임 클라이언트가 한 명의 플레이어를 위해 하나의 디바이스에서 동작하는 것에 반해, 서버는 다수의 플레이어의 요청을 처리할 수 있어야 한다. 그래서 게임 서버의 동시 접속자 처리 능력이나 확장성은 중요한 성능 지표로 평가받는다. 그러나 좋은 서버 프로그래밍 교육 기회는 드물어 능력 있는 서버 엔지니어를 구하기란 쉽지 않다. 이 때문에 아이펀팩토리는 손쉽게 다룰 수 있는 '아이펀 엔진'과 운영 플랫폼 '아이펀 디플로이'를 공급해 1인 개발자나 소규모 개발팀을 돕는다.

아이펀팩토리가 주최하는 데브 데이는 정기적인 발표 행사를 통해 기술 공유와 자기 계발을 도모하는 자리다. 이날 행사에는 문대경 대표를 비롯한 아이펀팩토리의 엔지니어들이 참석해 자사의 노하우를 공유했다.

강연의 시작은 아이펀팩토리 디플로이팀의 민영기 TD가 맡아 ‘HTML5 웹소켓으로 PONG 게임 만들기’란 주제로 시작했다. HTML5 이전까지 웹 게임은 화면 업데이트가 정적이고 유저 간 상호 작용이 제한적이지만, 최근엔 기술의 발전으로 간단한 퐁(pong) 게임을 원활하게 즐길 수 있을 정도가 됐다. 퐁 게임은 보기엔 간단하지만 웹 게임으로 구현하기에는 요구되는 기술이 만만치 않다. 실시간으로 유저 간 위치와 공의 물리 계산이 웹 기술로만 이루어져야 하기 때문이다. 이를 위해 요구되는 기술은 가능한 가볍고 빨라야 하며 다양한 브라우저에서 작동돼야 한다.

웹 게임의 기술을 이끈 것은 '소켓io'와 '웹소켓', 그리고 'html5'이다. 소켓io 또는 웹소켓을 통해 웹상에서 실시간 유저 동기화를 이끌었고, html5을 통해 더 다양하고 강력한 마크업 기술을 쓸 수 있게 됐다. 그러나 여전히 PC 온라인 게임이나 최근 모바일 게임에 비해 표현력이 약하고 방법 또한 번거로운 것이 사실이다.

보다 편한 웹 게임 개발을 위해 전용 개발 엔진도 차츰 나오고 있다. 웹 게임 개발을 위해 유니티는 'Unity Webgl'를 준비하고 있고, 에픽게임즈는 'Unreal html5'를 개발하고 있다. 그러나 아직 둘 다 실험적인 단계다. 유니티의 경우 모바일 브라우저 지원이 미비하고 언리얼은 스스로 "아직 실험 중"이라고 밝힐 정도다. 현재 웹 게임 개발 엔진 'Phaser'이 가장 무난한 선택이다. Phaser은 2D 게임 엔진으로, cocos-2d와 유사한 기능을 선보인다. 또한 문서화가 잘 돼 있고 커뮤니티가 다른 웹 게임 개발 엔진보다 활성화되어 있어 배우기도 좋다.

아직 웹 게임 개발은 많은 과제가 있다. 가장 큰 과제는 보안이다. 브라우저에서 구동하려면 암호화가 불가능하므로 보안에 있어서 치명적이다. 민영기 개발자는 "코드는 난독화하고 중요한 로직은 서버에서 구현"하는 방법으로 보안에 대비하라고 조언했다.

다음으로 남승현 시니어 프로그래머가 분산 환경을 위한 ORM 개발 경험을 청중들과 공유했다. ORM은 데이터 베이스를 SQL이 아니라 프로그래밍 언어의 객체로 다룰 수 있게 해주는 기술이다. 코드의 양을 줄이고 직관적으로 보여줄 수 있다는 장점이 있다. 남승현 개발자는 단순 반복인 DB 작업의 양을 줄이고, 게임 서버 개발 생산성을 향상시키기 위해 ORM 개발을 시도했다고 전했다. 그는 ORM을 개발하면서 경험했던 부분과 효용성을 소개하고, 주요 구현 부분에 대해 간단한 코드를 곁들여 설명했다.



▲ 아이펀팩토리 문대경 대표

아이펀팩토리의 문대경 대표도 무대에 올라 노하우를 전했다. 문대경 대표는 확장성 있는 서버 개발을 위해 먼저 '늘어나는 유저를 어떻게 수용할 수 있을까?'라는 고민을 중심에 두라고 권했다. 이때 비효율성은 최소화하고 동시성은 극대화해야 하는 점을 염두에 둬야 한다고 덧붙였다.

그는 의외로 효율성을 늘리는 것만이 꼭 미덕이 아닐 수 있다고 전한다. 만약 10% 성능 향상을 위해 코드 난도가 50% 증가한다면, 바람직한 결과라고 볼 수 없다. 코드는 효율성뿐만 아니라 가독성도 중요하기 때문이다. 오래되고 규모가 큰 프로그래밍 작업일수록 가독성과 안정성을 고려한 코딩도 중요하다고 문대경 대표는 강조했다.

다음으로 김진욱 CTO가 리눅스 게임 서버 성능 분석 노하우를 전했다. 그가 성능 분석 도구로 선정의 기준으로 분석 도구와 대상이 분리되어야 할 것, 분석 도구의 버그로 대상이 크래시하지 않을 것, 분석 도구 수정이 대상을 다시 빌드하거나 재실행하지 않고 진행돼야할 것이다. 또한 문제 분석에 대한 적합한 시각화와 이를 통한 문제 파악이 쉬워야 한다.

위 조건에 맞는 방법으로 김진욱 CTO가 제시한 것은 Linux eBDF와 BCC를 함께 쓰는 방법이다. eBDF는 OS 커널 수준에서 동작하는 별도의 어셈블리 언어다. x86-64, arm64와 유사하다. 커널 내에서 컨텍스트 변환 없이 동작하기 때문에 부하가 적다는 장점이 있다. 또한 다양한 이벤트에서 데이터를 수집할 수 있다.

BCC는 Phython, lua, go 등에서 eBDF를 쓰기 위한 툴체인이다. eBDF로 모은 정보를 고언어 코드로 돌아와 데이터 후처리를 한다. eBDF와 BCC를 통해 개발자는 직관적이면서도 깊이 있는 성능 분석 결과를 가질 수 있다고 김진욱 CTO는 전했다.



▲ 아이펀팩토리 이재원 TD

이날 마지막으로 강단에 선 이재원 TD는 간단한 데디케이티드 서버 설명과 아이펀팩토리 엔진에 대해 소개했다. 데디케이티드 서버는 고사양 게임을 다수의 유저가 원활하게 즐길 수 있도록 지원하는 방식으로 오버워치나 배틀그라운드 등에서 사용된다.

이재원 TD는 아이펀엔진이 1인 개발자나 소규모 팀에서 데디케이티드 서버를 손쉽게 사용할 수 있도록 돕는다고 소개했다. 서버 개발은 굉장히 복잡하고 시간이 많이 소요되는 작업이다. 이 시간을 줄여 게임 개발자는 콘텐츠 업데이트에 보다 집중하고, 전체 개발 시간 역시 단축할 수 있다고 그는 전했다. 현재 아이펀엔진은 서버 프로파일링 및 모니터링 기능을 지원하고 비동기 및 실시간 게임 모두 지원하는 네트워크 기능이 있다. 또한 SQL 코드가 전혀 필요 없는 자동화된 DB 처리 역시 지원함을 강연을 통해 확인할 수 있었다.

처음부터 '쉽고 빠른 서버 구현, 개발 시간 단축'을 위해 만들어진 아이펀엔진은 TCP, UDP, HTTP 프로토콜 등 다양한 네트워크를 지원한다. 또한 이미 싱글 플레이 전용으로 개발된 게임이더라도 손쉽게 멀티 플레이 기능을 추가할 수 있어 콘텐츠를 확장할 수 있다. 멀티플레이를 위한 매치메이킹, 채팅, 분산 서버 환경 등 필수적인 기능을 제공한다. 서버 프로그래밍에 익숙하지 못한 개발자는 슬랙 메신저를 통해 아이펀팩토리의 기술 지원을 받을 수도 있다.

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5