MariaDB에서의 쿼리 계획(Query plan) 활용

게임 서비스 시 서버 측면에서 성능상 문제가 되는 부분은 DB와 관련된 부분일 것이다. 과거에는 거의 모든 게임 데이터 관리 및 최종 동기화 등을 RDBMS에 의존하였기 때문에 쿼리 최적화는 게임 서버 최적화에서 매우 중요한 부분이었다. 최근에는 성능상의 이유로 캐시나 NoSQL 을 이용하는 경우가 많지만, 결제 관련 내용이나 사용자 간 거래 등 atomic 한 처리가 필요한 데이터들을 관리하는 데는 여전히 RDBMS를 사용하는 경우도 많다. 또한 이러한 결제나 거래 관련 데이터들은 통계 처리 등의 이유로 복잡한 쿼리의 대상이 되는 경우가 많기에 아직도 RDBMS 쿼리 튜닝은 게임 서버 성능 최적화에서 적지 않은 비중을 차지한다.

쿼리 최적화시에는 실행 시간을 기반으로 한 프로파일링이 크게 의미가 없다. 쿼리의 실행 시간에 가장 큰 영향을 주는 요소들은 RDBMS가 설치된 머신의 스펙과 쿼리의 대상이 되는 레코드의 수, 그리고 인덱스 접근/ 사용 방식과 중첩 쿼리의 실행 순서 등 쿼리 자체의 실행 과정이다. 이 중 머신의 스펙과 대상 레코드의 수는 최적화의 대상으로 보기는 어렵다. 따라서 최적화의 대상은 쿼리 실행 과정인데, 이는 단순히 실행 시간만을 측정해서는 알 수 없기 때문이다.

따라서 여러 RDBMS(Mysql, Mariadb, Oracle, Postgresql 등)에서는 어떠한 쿼리가 주어지면 해당 쿼리를 어떤 순서로 어떤 데이터를 활용하여 처리하겠다는, 쿼리 계획(query plan) 을 보여주는 기능을 제공한다.

Mariadb 에서는 쿼리 계획을 확인하는 명령어를 두 개 제공한다. EXPLAIN과 ANALYZE가 그것이다. EXPLAIN는 예상되는 실행 계획을 보여주고, ANALYZE는 쿼리를 실제 실행한 후 실행한 쿼리 계획을 보여준다. 언뜻 보기엔 ANALYZE가 더 유용해 보이지만, 쿼리 실행 시 디비에 부하가 가해질 수 있고, 레코드가 늘어나거나 하면 실행 계획 또한 바뀔 수 있으므로 실 서비스에서 실행시와 동일한 정보를 알려주지는 않는다. 두 명령어가 제공하는 쿼리 계획에 대한 정보는 같다.

Mariadb는 (10.0.1 이후부터) SELECT, UPDATE, DELETE 쿼리의 실행 계획을 조회하는 기능을 제공한다. UPDATE와 DELETE의 경우 각각 수정/삭제할 대상 레코드를 어떻게 찾느냐에 대한 계획을 보여주기에 실행 계획은 SELECT의 그것과 큰 차이가 없다.

EXPLAIN을 이용하여 쿼리 계획을 보는 방법은 간단하다. 실행할 쿼리 앞에 EXPLAIN을 붙여 주면 된다.

이미지

EXPLAIN을 실행하면 위와 같은 결과가 출력된다. JOIN이나 서브 쿼리가 포함되어 여러 단계의 처리가 필요한 경우, 각 단계별로 실행 계획을 보여준다.

쿼리 계획에는 다음 항목들이 표시된다.

● id : 대상 쿼리문에 JOIN이 포함되어 있을 때, 어떠한 순서로 테이블이 JOIN되는지를 나타내는 값이다.

● select_type : 각 단계를 실행할 때 어떤 종류의 SELECT가 실행되었는지를 나타낸다. 최적화 시에는 크게 중요하지는 않으나, 값이 DEPENDENT SUBQUERY, 혹은 DEPENDENT UNION 인 경우 의존성 등의 문제로 쿼리가 특정 순서로만 실행되어야 함을 뜻하므로 비효율적인 쿼리일 가능성이 있다.

● table : 해당 단계에서 접근하는 테이블의 이름이다. 실제 테이블, 혹은 임시 테이블일 수 있다.

● type : 테이블 내에서 접근이 필요한 레코드를 어떻게 찾았는지에 대한 정보이다.
인덱스 접근 여부 및 방식 등에 대한 내용도 포함하므로 쿼리 최적화 시 반드시 확인해야 할 값이다. 몇 가지 중요한 값에 대해서만 부연 설명하겠다.
 ○ system : 테이블 내에 레코드가 1개 이하인 경우이다. 이 경우에는 레코드를 더 추가한 후 다시 쿼리 계획을 확인하는 것이 좋다.
 ○ const, eq_ref : 해당 단계가 PK 나 유니크 인덱스 검색을 이용해 레코드에 접근함을 뜻한다. 일반적으로 가장 빠른 검색 방법이다.
 ○ ref : 인덱스를 이용하여 동등 비교 연산을 통해 레코드에 접근함을 뜻한다. 위의 두 개만은 못하지만, 역시 매우 빠른 검색 방법이다.
 ○ fulltext : 전문 인덱스(Fulltext Index) 를 이용하여 레코드에 접근함을 뜻한다. 전문 인덱스는 일반적인 비교 연산으로 접근이 어려운 경우에 주로 사용되므로 최적화하기 어려운 경우가 많다.
 ○ range: 인덱스를 이용하여 값 비교 연산 ( , BETWEEN 등 )을 이용하여 레코드에 접근함을 뜻한다.
 ○ index : index 전체를 스캔해야만 필요한 레코드에 접근할 수 있음을 뜻한다. 풀 테이블 스캔보다는 빠르지만, 인덱스가 매우 큰 경우 등에는 비효율적이다.
 ○ ALL : 인덱스를 이용하여 필요한 레코드를 검색할 수 없어, 전체 테이블을 스캔해야만 함을 뜻한다. 당연히 테이블 내 레코드 수에 따라 실행 시간이 매우 길어지므로 적절한 인덱스 추가나 HINT 문 사용 등을 통해 최적화하는 것이 좋다.

● possible_keys : 레코드에 접근하기 위해 사용할 수 있는 키, 혹은 인덱스 목록을 보여준다. 실제로 사용된다는 의미가 아니므로 실제로 어떠한 키가 사용되었는지는 key 항목을 확인해야 한다.

● key, key_len : 레코드에 접근하기 위해 어떠한 index를 참조하는지, 인덱스 중 몇 바이트를 참조했는지에 대한 정보이다. key_len 은 둘 이상의 컬럼으로 구성된 인덱스를 참조했을 경우에만 의미가 있다.

● ref: 인덱스 검색 시 비교 연산 등에 사용되는 기준값을 보여준다. 최적화 시에는 큰 의미는 없다.

● rows : 필요한 레코드들을 추려내는 과정에서 몇 개의 레코드에 접근해야 하는지를 예측하여 보여준다.

● extra : 이상의 항목 외의 특이 사항들이 있다면 해당 내용을 표시해준다. 예를 들어, 접근해야 하는 컬럼이 모두 인덱스에 포함되어 있어 인덱스 검사만으로 필요한 값을 반환할 수 있다면 Using index 가 표시된다. 때에 따라 성능에 영향을 줄 수 있는 값들이 있으므로, 최적화 시에 이 컬럼이 비어 있지 않다면 확인할 것을 권한다.

MariaDB는 쿼리 계획을 만들 때 인덱스의 크기나 수, 레코드의 수 등을 같이 고려하므로 같은 쿼리라 하더라도 실행 계획 조회 시점에 따라 실행 계획이 달라질 수 있다. 그러므로 유효한 데이터를 얻기 위해서는 될 수 있는 대로 실 서비스에서, 혹은 실 서비스와 최대한 비슷한 환경에서 실행 계획을 조회하는 것이 좋다.

한 가지 유의할 점은, MariaDB는 쿼리 계획을 만들 때 인덱스의 크기나 수, 레코드의 수 등을 같이 고려하므로 같은 쿼리라 하더라도 실행 계획 조회 시점에 따라 실행 계획이 달라질 수 있다. 그러므로 유효한 데이터를 얻기 위해서는 될 수 있는 한 실 서비스에서, 혹은 실 서비스와 최대한 비슷한 환경에서 실행 계획을 조회하는 것이 좋다.

지금까지 RDBMS 의 쿼리를 최적화할 때 쿼리 계획 조회가 왜 필요한지, 그리고 MariaDB 에서 쿼리 계획 조회 시 어떠한 정보들을 알 수 있는지에 대해 알아보았다. 쿼리 계획은 최적화에 필요한 모든 정보를 제공하지는 않지만 기본이 되는 정보를 제공해 주기에, 쿼리 최적화 시 꼭 한번은 쿼리 계획을 확인할 것을 권하고 싶다.

아이펀팩토리 아이펀 디플로이 테크니컬 디렉터 민영기

[Unite’17 Seoul] 아이펀팩토리 박근환 TD 강연 현장 공개!

미세먼지가 물러간 5월의 화창한 봄날!
봄 타고 있는 아이펀팩토리 사업팀 여자 1호입니다.

오늘은 지난 5월 16일, 17일 이틀동안
삼성동 코엑스에서 개최된 Unite’17 Seoul 현장 소식을 들고 왔답니다!

특히 이번 행사에서는 아이펀팩토리 박근환TD가 강연자로 참가,
‘클라이언트 개발자, 서버 개발 시작하기’ 라는 핫한 주제로 열띤 강연이 진행 되었어요.
강연영상과 발표자료는 아래 링크를 통해 보실 수 있습니다!

☞ 유나이트 강연영상 보러가기

☞ 유나이트 발표자료 보러가기

자, 그럼 박근환TD 효과(?)로 한층 더 뜨거웠던 Unite’17 Seoul 현장! 저와 함께 가보실까요?!

8▲ 평일 오전이었음에도 많은 분들이 오셨네요. 유니티 유나이트의 꾸준한 인기!

1▲짠~! 유나이트 후원기업으로 참여한 저희 아이펀팩토리 로고가 네임택 랜야드에 뙇!

네임택을 목에 걸고 가장 먼저 박근환 TD의 ‘클라이언트 개발자, 서버 개발 시작하기’ 강연을 들으러 갑니다. 총총~

2▲ 박근환 TD님의 강연을 듣기 위해 강연장 앞으로 길게 늘어선 줄이 엄청나죠? 인기폭발!

3▲ 서버도 개발하고 싶은 클라이언트 개발자를 위한 세션입니다.

4▲ 귀에 쏙쏙 들어오게 설명해주시는 아이펀팩토리 박근환 TD님!

5▲ 서버 개발을 위해 서버 엔진이 필요한 이유!

6
▲ 강연장을 가득 메운 열기가 느껴지시나요?!

7
▲ 자리가 없어 서서 듣는 분들까지 초집중! 그만큼 유익하고 알찬 시간이었답니다.

강연을 듣고나서는 다양한 이벤트를 즐기러 부스를 돌아다닐 차례! 고고고~!

10
▲ 1층 그랜드볼룸 앞 부스에서는 여러 기업들의 제품 설명과 다양한 이벤트가 진행중이었어요

9
▲ 자유롭게 게임 체험하고 쉴 수도 있는 게임존! 이 곳이 바로 천국

11
▲ 2층 VR존에서는 요즘 대세인 VR을 맘껏 체험해 볼 수 있었답니다. 넘나 재미난 것!

이상으로 유익한 강연과 다양한 이벤트로 알찼던 유나이트 2017 현장이었습니다.
앞으로도 게임업계 종사자들 및 학생들이 지식을 공유하고 즐길 수 있는 유나이트가 되길 바랍니다!

[NDC 2017] 아이펀팩토리 문대경 CEO 강연 현장공개!

안녕하세요, 아이펀팩토리 사업팀 남자같은 여자 1호 입니다.

이 곳 판교에서는 지난 25일부터 27일까지 NDC 2017가 성황리에 개최되었습니다!
다양한 주제의 강연부터 전시, 거리공연 그리고 이벤트까지! 게임산업 종사자들 및 지망생들의 축제라고 할 수 있죠?

저희 아이펀팩토리도 작년에 이어 올해에도 NDC와 함께 했는데요,
문대경 CEO의 강연은 둘째날인 26일, GBI타워 지하 1층 대강당에서
‘아이펀 엔진 개발 노트; 범용 게임 서버 엔진 개발 포스트모템’ 이라는 주제로 진행되었답니다.

거기에 하나 더! 문대경 CEO 강연과 함께 아이펀팩토리가 준비한 3일간의 든든한 선착순 이벤트까지!!

뜨거웠던 열기의 현장을 생생하게 전해드릴게요~! 고고고!

☞ NDC 강연자료 보러가기

☞ NDCP 강연자료 보러가기

IMG_2773.JPG▲ 넥슨 GBI타워 지하 1층 대강당 강연장 가는길

1▲ 모두가 강연에 집중!

3▲ 아이펀팩토리 문대경 CEO

2▲ 아이펀 엔진 개발 프로젝트에 대하여

4▲ 무엇이든 물어보세요~ 강연 후 질의응답 시간!

실시간 게임 서버 엔진인 아이펀 엔진이 개발되어온 순서와 거기서 얻은 레슨들을 공유하는 알찬 시간이었습니다.

강연에 집중하고나니 출출하시다구요?!
짜잔~ 그런 분들을 위해 아이펀팩토리가 준비한 선착순 이벤트!
아이펀팩토리 전단지에 있는 교환권을 작성하여 제출하면 푸짐한 간식이 들어있는 배불러 팩을 받을 수 있었어요.

5▲ 아이펀팩토리 이벤트 부스가 위치한 넥슨 GBI타워 1층 EVENT ZONE

6▲ 3일간 매일 진행된 배불러 팩 선착순 이벤트!

7▲ 자, 줄 서세요~ 아이펀팩토리 배불러 팩 인기 폭발 현장

화창한 봄날, NDC 2017 그리고 아이펀팩토리와 즐거운 시간 되셨나요?
다음엔 더욱 알찬 강연과 다양한 이벤트로 만나요~!

IMG_2772IMG_2766

개발 환경, 테스트 환경, 그리고 라이브

서버 개발자에게 컴퓨팅 자원은 곧 비용이다. 대충 한 열 명의 동접마다 한대씩 서버를 할당한다면 누구나 더 편하게 서버를 개발할 수 있을지도 모르겠지만, 현대의 기술은 아직 우리에게 이런 여유(혹은 낭비)를 허용하지 않고 있다. 게다가 열 명당 하나씩 서버를 둘 수 있다손 치더라도, 이로 인해 엄청나게 늘어나는 서버의 수를 관리하는 서버에 몰리는 부하를 처리해야하는 골치아픈 문제는 결국 그대로 남아있게 된다. 그러므로 결국 서버를 최대한 최적화하고 적당한 하드웨어를 찾아서 배포하는 방법론은 당분간 어쩔 수 없는 서버 개발자의 숙명이다.

클라이언트 개발자가 여러 대의 단말에서 테스트 한다면, 서버 개발자는 다양한 환경에서 서버 환경을 구축하고 테스트하게 된다. 끝없이 수정한 코드를 다시 실행해볼 개발 서버, 개발팀, 기획팀, 사내, QA팀을 위한 테스트 서버, FGT나 CBT등을 위한 일정 규모의 라이브에 준하는 서버, 그리고 실제로 서비스하는 라이브 서버, 마지막으로 게임이 성공해서 새로운 서버를 열어야하는 경우까지.. 안드로이드와 iOS라는 꽤나 다른 OS에서 동일한 어플리케이션을 동시에 준비하는 클라이언트 개발자들의 노력도 대단하지만, 상황에 따라 소규모부터 대규모까지 동시에 서버 환경을 만들어내야하는 서버 개발자의 고생도 더하면 더하지 덜하진 않다.

그렇다면 각각의 상황에 맞춰 필요한 하드웨어의 미덕과 준비 방법은 어떻게 될까. 이번 칼럼에서는 이를 이야기해보려고 한다.

1. 개발 환경

의외로 많은 개발자들이 개발 환경 하드웨어의 중요성을 무시하곤한다. 개발 환경의 서버는 최적화되기 전의 코드를 수행한다. 또한 끝없이 코드를 컴파일해야 한다. 그러므로 개발 생산성과 테스트 용이성을 위하여, 개발 환경의 하드웨어는 그 어떤 환경보다도 빠르고 많은 CPU 코어, 이래도 될까 싶을 정도로 많은 메모리와 디스크 용량, 가능한 예산 내에서 무조건 최대한 빠른 형태의 IO를 지원하는 디스크를 확보해야한다.
강력한 하드웨어는 개발과 동시에 빠른 피드백이 이루어지는 팀 테스트와 수정을 동시에 진행하는 경우에도 도움이 된다. 예를들어 스크럼 같은 개발 방법론을 활용하여 빠르게 개발해보고 포스트모템을 진행하는 경우, 강력한 개발 환경에서 단시간 안에 코드를 바꾸고 컴파일해서 테스트 해볼 수 있을 때 가장 효율이 좋다.

2. 테스트 환경

테스트 환경은 다양한 파트의 요청사항에 따라 끝도 없이 늘어날 수 있다는 것이 특징이다. 동일한 환경을 쉽고 간편하게, 그리고 필요에 따라 적절한 수준의 하드웨어에 배포할 수 있도록 배려하는 것이 중요하다. 스트레스 테스트를 위해서는 가능한 분리된 인스턴스에서 각각의 로그와 프로파일링 정보를 얻어내는게 중요하다면, 펀테스트를 위해서는 소수의 인원이 즐겁게 즐길 수 있도록 유도하는 환경이 되어야 한다.

보통 테스트 환경에서 코드를 컴파일할 일은 거의 없다. 즉, 새로 만든 패키지를 빠르게 배포하는 것이 중요하고, 사용자의 수나 컨텐츠의 양에 따른 하드웨어 능력의 분배가 중요하다. 또한 쉽게 배포하는 만큼이나 만들어진 서버 환경을 쉽게 회수할 수 있는 것 역시 중요하다.
그러므로 내부에서 사용할 때에는 vm으로 여러 개의 인스턴스를 관리할 수 있도록 하거나, 클라우드 등에서 저렴한 하드웨어를 필요할 때마다 만들어서 사용하는 것이 좋다.

3. 라이브 환경

라이브 환경을 결정하는 것은 보통 서버 개발자가 아니라 퍼블리셔인 경우가 많다. 물론 그렇긴해도 일반적으로 대형 퍼블리셔가 관리하는 IDC거나, 클라우드로 서버를 배포하는 경우가 가장 흔하다.
이 경우 서버 개발자가 준비해야하는 것은 동접자에 따른 전체적인 서버의 수와 구성 방식이다. 그리고 이를 위해서는 잘 구성된 스트레스 테스트 환경과 성능 프로파일링 방법이 필요하다. 그러므로 라이브 환경 설정은 테스트 환경의 연장선에 있다고 할 수 있다. 라이브 서버에 새로운 서버를 추가하는 경우에도 이는 마찬가지이다. 이 때 사용자의 분산과 추가 작업의 양을 결정하는 것은 비슷한 환경에서 얼마나 테스트를 해보았느냐에 달려있다.
또한 라이브 환경 서버 설정은 비용과 밀접한 관련을 가지게 되므로, 예상 동접은 소화할 수 있되, 노는 서버가 없도록 조율할 필요가 있다. 동시에 넉넉한 서버를 확보하기위하여 서버 개발자는 프로젝트의 책임자에게 잘 설명하여 퍼블리셔를 설득할 수 있는 이론적 기반을 마련해줄 수 있다면 금상첨화일 것이다.

지금까지 서버의 환경에 따른 구성과 이를 위해 중요한 부분은 무엇인지, 어떻게 준비해야하는지를 간단히 살펴보았다. 실제로 어떤 서버를 얼마나 준비해야하는지는 서비스 별로 가이드를 하기에 녹록치 않은 것이 사실이다. 게임마다 로직이 다르고, 장르마다 필요한 서비스가 다르다. 또한 어떤 기능을 어떻게 최적화했느냐에 따라 필요한 하드웨어의 사양은 천차만별이다. 그렇다보니 물고기를 주기보다는 물고기를 잡는 방법을 알려주라는 탈무드의 말과 같이, 주로 원론적인 내용 위주로 정리하게 되었다. 이번에도 미약하나마 서버 개발자들의 고민을 조금이라도 해결해주기를 바라며 이 칼럼을 마친다.

아이펀팩토리 박근환 TD

[NDC 2017] 아이펀팩토리 문대경 CEO 강연을 놓치지 마세요!

안녕하세요, 아이펀팩토리 사업팀입니다!

NDC 2017에 아이펀팩토리가 참여 합니다.

26일(수) 13시 ‘아이펀팩토리 문대경 CEO의 강연’과
행사 3일간 매일 진행되는 선착순 이벤트까지!

아이펀팩토리와 함께 NDC를 두 배로 즐기세요!

020304

개발자를 위한 기술 공유의 장, ‘2017 아이펀팩토리 Dev Day’ 성황리 개최!

개발자들과의 소통과 기술 공유를 위한 ‘2017 아이펀팩토리 Dev Day’가 지난 29일 수요일, 판교 엔씨소프트 R&D센터 2층 종합게임시연실에서 개최되었습니다.

지난 2015년부터 매년 개최되어 올해로 3회째를 맞이한 이번 행사는 ‘최고의 게임을 만들기 위한 최고의 기술(Great Technology for Great Games)’이라는 주제로 총 5개 강연이 진행되었으며, 아이펀팩토리 내부 개발자의 강연 이외에도 유니티 테크놀러지스코리아의 오지현 에반젤리스트가 외부 연사로 함께 하였습니다.

강연장을 가득 메운 뜨거웠던 열기의 현장으로 함께 가보실까요?

1
▲ 판교 엔씨소프트 1층에 마련된 등록데스크! 줄이 어마어마 하죠잉?

입장 1시간 전부터 줄이 길게 늘어선 판교 엔씨소프트 1층 등록데스크의 전경입니다. 줄이 어마어마 하죠? 2015년부터 매년 개최된 Dev day 중 사전등록 신청률이 가장 높았던 행사였던 만큼 게임관련학과 학생부터 현직 개발자에 이르기까지 다양한 소속의 분들의 참석하셨답니다.

2▲ 엔씨소프트 R&D센터 2층 강연장 앞

짜잔~ 2층 강연장 앞에서는 이번 행사에 참석해주신 분들을 위해 아이펀팩토리가 성심 성의껏 준비한 점심식사와 선착순 기념품이 준비되어 있었습니다. 안타깝게도 선착순 기념품을 받지 못하신 분들! 너무 아쉬워 마세요~ 다음 데브데이가 있으니까요!

자, 이제 강연장 안으로 들어가볼까요?

3▲ 아이펀팩토리 문대경 CEO의 인사말

엔씨소프트 2층 R&D센터 강연장을 가득 채운 뜨거운 열기! 느껴지시나요?
금일 행사에 강연자로서 직접 참여한 아이펀팩토리 문대경 CEO는 본격적인 행사에 앞서 “데브데이의 취지는 상업적인 내용을 배제하고 기술적인 내용을 공유하는 것”이라며, “이번 행사를 통해 개발자들이 서로 가깝게 이야기할 수 있는 소통의 채널이 되길 바란다”고 행사의 개최 의의를 말씀하셨습니다.

문대경 CEO의 인사말에 이어 본격적인 개발자 토크콘서트, 시작합니다!

5▲ 강연1. 아이펀팩토리 박근환 TD의 ‘혼자서 만드는 MMO 서버’

6▲ 강연2. 아이펀팩토리 민영기 TD의 ‘Python 과 AWS 를 이용하여 게임 테스트환경 구축하기’

7▲ 강연3. 아이펀팩토리 김진욱 CTO의 ‘게임 서버 성능 분석하기’

8▲ 강연4. 유니티테크놀로지스 오지현 에반젤리스트의 ‘유니티 쉐이더 단기 속성’ (출처: 인벤)

9▲ 강연5. 아이펀팩토리 문대경 CEO의 ‘게임 서버 구축 방법 비교: GBaaS vs. Self-hosting’

지금까지 알찬 강연으로 진행된 2017 아이펀팩토리 Dev Day 현장을 함께 보셨습니다.

게임 서비스에 있어 서버 개발과 운영이 중요한 만큼, 거시적인 관점에서 개발자에게 실질적으로 필요한 것들을 공유할 수 있는 값진 시간이었답니다.

이번 데브데이에 함께하지 못해 아쉬우시다구요? 그런 분들을 위해 저희 아이펀팩토리는 강연 자료를 공개합니다. 아래 링크를 꾸욱~ 누르시면 데브데이 강연 자료를 보실 수 있어요! 지금 바로 고고고!

강연1. 아이펀팩토리 박근환 TD의 ‘혼자서 만드는 MMO 서버’

강연2. 아이펀팩토리 민영기 TD의 ‘Python 과 AWS 를 이용하여 게임 테스트환경 구축하기’

강연3. 아이펀팩토리 김진욱 CTO의 ‘게임 서버 성능 분석하기’

강연4. 유니티테크놀로지스 오지현 에반젤리스트의 ‘유니티 쉐이더 단기 속성’

강연5. 아이펀팩토리 문대경 CEO의 ‘게임서버 구축 방법비교: GBaaS vs. Self-hosting’

[오피스N_굿피플] 아이펀팩토리 민영기 CTO인터뷰

굿피플 직무의 시작

Intro
하나의 직무를 선택한다. 그리고 거기에 맞는 회사를 선택해서 지원한다. 이는 취업 준비생의 취업 과정이다. (물론 회사를 먼저 선택하는 경우도 있다.) 그렇게 입사하면, 해당 직무에 대한 역량을 쌓는다. 그리고 2~3년 차를 맞이하면, 두 분류로 나뉜다. 담당 분야에 계속 집중하거나 다방면으로 경험을 시도한다. 얼마 전 만난 아이펀팩토리의 민영기 개발자는 후자에 속한다. 클라이언트 개발자로 시작했지만, 서버 플랫폼 개발자, 서버 개발자로 직무를 변경해가며 자신만의 역량을 쌓았다. 그는 이런 경험이 있었기에 개발자로서의 시야를 넓혔다고 한다. 이제는 또 다른 환경에서 게임 운영에 집중 중인 그의 이야기를 지금 시작한다. By 굿피플 헌터.

ff705b76-f95b-42eb-9424-8adbc87ad4ec.jpg

나는 어릴 적부터 게임을 좋아했어. 그래서 게임을 만들 수 있는 직종 중에 프로그래머를 택했지. 그 시작은 NHN에서 이뤄졌어. 게임 클라이언트 개발을 담당했는데, 개발의 핵심 로직을 서버로 이관하는 작업을 진행하는 분야야. 그렇게 3년간 일했어. 그리고 다른 분야에서 경력을 쌓고 싶어서 내부에서 서버 개발자로 직무를 변경했어.

서버 개발자는 게임 개발도 중요하지만, 게임 운영 지원에도 신경을 많이 써야 해. 게임 개발에 집중하면 될 거라는 내 생각과는 달랐지. 그때 깨달았어. 어느 분야든 부딪히는 문제점은 발생하고, 나는 다방면으로 일하고 싶은 성향이라는 점을 말이야. (웃음) 그래서 네오위즈게임즈로 이직하여 서버 플랫폼 작업을, AINA에서는 RPG와 보드게임의 개발을 했어. 개발자로서 여러 환경에서 일하면서 나만의 역량을 쌓았어.

게임 서버 개발자로 일하면서 게임 운영에 대한 고민을 많이 했어. 그때 아이펀팩토리가 게임 운영을 지원하기 위한 제품을 만든다는 말을 듣고 지원했어.

굿피플 인터뷰 본문 더보기>