본문 바로가기

IT Insight

"클라우드 기반 서버리스 기술, 소규모 게임 개발사의 무기"

728x90

 

개요

 

'마블 스냅' 세컨드 디너 공동 창립자 용 우, AWS 콘퍼런스 강연에서 " 클라우드 기반 서버리스(serverless) 기술은 소규모 개발사가 서버 유지보수 부담을 줄이고 재미있는 게임을 만드는 데 집중할 수 있게 하는 '비밀 무기'입니다"라고 말했다. 

세컨드 디너는 블리자드에서 '스타크래프트2', '디아블로 3', '하스스톤' 등을 만든 유명 개발자들이 의기투합해 만들어진 게임사다. 세컨드 디너가 작년 정식 출시한 '마블 스냅'은 게임계 오스카상이라 불리는 '더 게임 어워드'에서 '최고의 모바일 게임' 상을 받았다.

한국계 미국인 개발자인 우 CPO는 "블리자드 같은 대기업에서 게임을 만들 때는 데이터 센터 구축이나 고객 지원까지 모두 사내에서 해결했지만, 다섯 명이 시작한 회사에서는 우리가 가장 잘 할 수 있는 기획과 제작 역량에 집중해야 했다"고 '마블 스냅' 개발 과정을 회고했다.

게임 개발 과정 중 AWS의 기술을 활용해 게임 서비스 규모를 쉽게 대규모로 확장하고, 출시할 수 있었다"고 말하며 또한 '리그 오브 레전드'·'발로란트'를 서비스하는 라이엇게임즈에서 서버 인프라를 총괄하는 잭 콘시어는 "2020년 모든 데이터센터를 클라우드로 이전하기로 결정했다"며 "14개의 지역에 걸친 수천 개의 서비스를 이전하는 대규모 작업이었다"고 회상했다.

 

 

 

클라우드 기반 서버리스 기술
  • 서버리스 (serverless) 

 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델

서버리스 어플리케이션은 배포되고 나면 필요에 따라 자동으로 스케일 업 되거나 스케일 다운되며 어플리케이션 개발에서와 달리 추상화 되어 있다.

 

  • 서버리스 컴퓨터에서 클라우드 제공업체의 역할 

 서버리스 모델에서 클라우드 제공업체는 코드를 프로덕션으로 바로 배포할 수 있는 사용자를 대신하여 물리 서버를 구동하고 리소스를 신속하게 할당합니다.

서버리스 컴퓨팅 서비스는 일반적으로 서비스로서의 백엔드(Backend-as-a-Service, BaaS)와 서비스로서의 기능(Function-as-a-Service, FaaS)이라는 두 그룹으로 나뉩니다.  

BaaS는 개발자가 다양한 제3사 서비스와 애플리케이션에 액세스할 수 있게 해줍니다. 예를 들어, 클라우드 제공업체는 인증 서비스와 추가 암호화, 클라우드 액세스 가능한 데이터베이스 및 상세한 데이터 사용량을 제공할 수 있습니다. BaaS를 활용하는 경우 서버리스 기능은 일반적으로 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 통해 호출됩니다.

 

  • 서비스로서의 기능(FaaS)

 서비스로서의 기능(FaaS)은 이벤트 기반 컴퓨팅 실행 모델로, 개발자가 작성하는 로직은 플랫폼에서 전체를 관리하는 컨테이너로 배포된 후 온디맨드로 실행됩니다.

BaaS와 달리 FaaS는 사전 작성된 서비스 라이브러리에 의존하지 않고 사용자 정의 애플리케이션을 생성하는 개발자에게 더 많은 제어 권한을 제공합니다. 

FaaS를 활용하면 개발자는 API를 통해 서버리스 애플리케이션을 호출할 수 있고, FaaS 제공업체는 이를 API 게이트웨이를 통해 처리합니다.

 

  • Knative, 서버리스 쿠버네티스

 자동화된 인프라에서 컨테이너화된 애플리케이션을 실행하는 방법으로, 쿠버네티스 컨테이너 오케스트레이션 플랫폼이 서버리스 환경을 구동하는 데 널리 사용되는 것은 그리 놀라운 일이 아닙니다. 그러나 쿠버네티스 자체만으로는 기본적으로 서버리스 애플리케이션을 구동할 수 없습니다.

Knative는 서버리스 애플리케이션을 배포, 실행, 관리하기 위해 쿠버네티스에 구성 요소를 추가하는 오픈소스 커뮤니티 프로젝트입니다.

서버리스 Knative 환경에서는 코드를 Red Hat OpenShift와 같은 쿠버네티스 플랫폼에 배포할 수 있습니다. Knative를 활용하면 컨테이너 이미지로서 코드를 패키징한 다음 시스템으로 전달하면 됩니다. Knative는 인스턴스를 자동으로 시작하고 중단하므로 필요할 때에만 코드가 구동됩니다

 

  • 서버리스 컴퓨팅의 장단점
장점 단점
1. 개발자 생산성을 높이고 운영비용을 줄일 수 있음
   -> 항상 자체 서버를 실행하고 관리하는 대신 필요한 만큼 클라우드 기반 컴퓨팅 시간에 대해 비용을 지불하기 때문
2. BaaS 오퍼링의 모든 구성 요소를 통합해 어플리케이션 개발을 더욱 간소화
3.  개발자가 인프라를 설명할 필요를 줄임으로써 DevOps 도입을 지원합
1. 클라우드 제공업체가 자사 구성요소들이 상호작용하는 방법을 제한할 수 있어 사용자 시스템의 유연성과 커스터 마이징 수준에 영향을 주게됨
2. 제어 권한을 이전하면 벤더 종속성 문제도 발생 할 수 있는데, 제공 업체를 변경하면 새로운 벤더 사양에 맞추기 위해 시스템을 업그레이드 하는 비용이 발생 할 수도 있음