게이머들에게 '서버'는 멀고도 가까운 존재입니다. 걸핏하면 터지는 서버에 분노를 표하는 흔한 '게이머의 삶'을 살지만, 그 속에 담긴 개발 노하우나 과정을 잘 알고 있는 이는 드물기 때문이죠. 이처럼 게이머에게 있어 서버는 어떤 단어보다 친숙하면서도 먼 개념에 해당합니다.
따라서 NDC 2021을 통해 진행된 용찬호 엔지니어의 세션은 무척 흥미롭게 다가왔습니다. 부인하지 않겠습니다. 세션은 '전문 지식'을 요구했던 만큼, 몇몇 부분에서는 되감기가 필요할 정도로 까다로웠습니다. 하지만 아무 생각 없이 플레이한 게임의 서버가 이토록 복잡한 구조와 개념으로 운영되고 있다는 걸 알게 된 가치 있는 시간이기도 했죠. 데브시스터즈가 품은 미지의 존재, '쿠버네티스'를 소개합니다. / 디스이즈게임 이형철 기자
강연자: 용찬호
소속: 데브시스터즈
이력:
▲ 데브시스터즈 R&D 센터 소프트웨어 엔지니어
▲ '시작하세요, 도커 그리고 쿠버네티스!' 출간
데브시스터즈는 <쿠키런>으로 잘 알려져있지만, <퍼즐월드>나 <파티파티> 등 다양한 게임을 개발한 회사이기도 합니다. 따라서 그들은 안정적인 운영을 도와줄 '인프라'가 필요하다고 판단했죠.
이를 위해서는 퍼블리싱의 효율성을 올려줄 인프라와 컨테이너 오케스트레이션, 그리고 확장성 있는 인프라와 오픈소스 생태계가 필요했습니다. 그 결과 채택된 것이 오늘 소개해드릴 '쿠버네티스'입니다. 참고로 쿠버네티스란 컨테이너화된 어플리케이션을 자동으로 배포, 관리해주는 시스템을 말합니다.
쿠버네티스는 데브시스터즈가 필요로 한 내용을 모두 충족한 시스템이었습니다. 동일한 인프라에서 동일한 구조로 게임을 런칭할 수 있는 환경을 제공할 수 있을뿐더러, 서버 하나가 잘못되더라도 밸런싱이 가능했으며 확장성과 오픈소스 생태계까지 갖췄기 때문이죠.
그렇다고 해서 쿠버네티스가 무조건적인 정답은 아닙니다. 도입하기 전 충분한 검토와 연구가 당연히 필요하죠. 개발사와의 협업은 가능한지, 그 방향성이 컨테이너 기반 클라우드와 적합한지 등을 꼼꼼히 따져봐야 합니다.
데브시스터즈는 약 일곱 개의 쿠버네티스 클러스터를 게임 인프라로 활용하고 있습니다. 그 용도도 무척 다양한데요, 게임 퍼블리싱 플랫폼 자체는 물론 게임별 dev, qa, staging 프로덕션 게임 서버와 데이터베이스도 쿠버네티스에서 운영하고 있죠. 게임 로깅 인프라나 윈도우즈 컨테이너를 위한 쿠버네티스까지 사용하고 있을 만큼, 그 범위도 넓은 편입니다.
다만, 데브시스터즈가 처음부터 쿠버네티스를 잘 썼던 건 아닙니다. 용찬호 엔지니어는 "성공적 도입을 위해 R&D를 길게 진행했다. 2014년에 처음으로 쿠버네티스를 연구했지만, 기능이 빈약했기에 많이 활용하진 못했다"라며 당시를 회상했습니다.
쿠버네티스는 크게 '셀프 호스트'(Self-hosted)와 완전 관리형으로 나뉩니다.
셀프 호스트는 컨트롤 플레인을 직접 관리할 수 있으며 튜닝 등 실험적 활용이 가능하지만, 장애 발생 시 직접 해결해야 한다는 단점을 갖고 있습니다. 반면, 완전 관리형은 컨트롤 플레인에 대한 관리를 완전히 위임하는 것으로 부담을 줄일 수 있다는 평가를 받습니다. 또한, 클라우드가 제공하는 윈도우즈 컨테이너 등도 쉽게 활용 가능합니다. 하지만 앞서 말씀드린 클러스터 튜닝이 불가능하다는 문제점도 있죠.
데브시스터즈는 두 항목을 저울질한 결과, 효율성이 높은 관리형 쿠버네티스를 선택했습니다.
현재 데브시스터즈는 게임 퍼블리싱에 필요한 요소 대부분을 쿠버네티스에서 운영하고 있습니다. 용진호 엔지니어에 따르면 쿠버네티스의 장점은 '동일한 게임 환경을 찍어내듯 복제할 수 있다'는 점입니다. 실제 라이브 서비스를 위해 준비된 게임 환경이 존재할 경우, 똑같은 세팅으로 부하 테스르를 할 수 있는 모델을 만들 수 있는 거죠.
다만 이를 위해서는 '게임 서버를 위한 쿠버네티스 배포 자동화', '여러 게임을 위한 멀티 테넌시 환경', '쿠버네티스에서 게임 운영하기' 등 세 가지 요소가 필요합니다.
쿠버네티스 기술 스택에는 다양한 요소가 존재합니다.
먼저, 서비스 메시는 네트워크 트래픽 제어와 메트릭 가시성 확보를 위해 사용됩니다. 데브시스터즈의 경우 istio와 envoy를 사용하고 있는데요, 각각 서비스 메시의 컨트롤 플레인 구성과 게임 서버로 오가는 모든 트래픽을 대신 처리하기 위한 프록시의 역할을 수행합니다.
쿠버네티스의 기능을 보조하기 위한 애드온에도 주목해야 합니다. 인증서를 생성하거나 단기 메트릭을 수집하기 위한 필수 애드온 외에도 필요에 따라 수많은 애드온을 운영할 수 있기 때문이죠. 데브시스터즈는 라이브 클러스터에서 서른 개 이상의 애드온을 활용하고 있습니다.
용찬호 엔지니어는 애드온 부분에서 다음과 같은 말을 전했습니다. 결론만 말하자면 애드온의 숫자가 많더라도 걱정할 필요가 없다는 겁니다.
"중요한 건 필요한 기능을 위해 적절한 애드온을 사용하는 거지, 깊은 이해가 필요한 건 아니라는 점이다. 이해도가 높다면 트러블슈팅이 가능하겠지만... 굳이 그럴 필요는 없다. 필요할 때 필요한 애드온을 필요한 만큼만 가져다 쓰는 게 핵심이다."
세션 말미, 용찬호 엔지니어는 데브시스터즈가 쿠버네티스를 쓴 이유를 세 가지로 요약함과 동시에 한 가지 당부의 말을 전했습니다.
"라이브 환경에 쿠버네티스를 도입한다는 건 굉장히 허들이 높은 작업일 수 있다. 따라서 섣불리 도입하라고 말씀드릴 순 없다. 하지만, 게임 개발 환경과 같은 소소한 부분에서라도 쿠버네티스를 천천히 도입하면서 허들을 줄이는 것도 나쁘지 않을 거다."