최근 한 행사에서 쿠버네티스 프로젝트를 이끌고 있는 CNCF(Cloud Native Computing Foundation클라우드 네이티브 컴퓨팅 재단)의 댄 콘(Dan Kohn) 이그제큐티브 디렉터를 만날 일이 있었다. 그와의 인터뷰에서 흥미로운 이야기를 하나 들었는데, 한국의 온라인 게임회사인 엔씨소프트가 CNCF의 28개 창립멤버 중 하나라는 것이었다.

CNCF는 클라우드 기술과 관련된 표준을 개발하려는 재단이다. 이런 종류의 오픈소스 재단에는 주로 기술 플랫폼 회사나 솔루션 업체들이 참여한다. 멤버로 들어가서 함께 업계 표준 기술을 만들면, 그것이 비즈니스에 도움이 되기 때문이다. 적지 않은 금액을 내면서 참여하는 이유다.

그런데 엔씨소프트와 같은 회사는 기술의 공급자가 아니라 소비자다. 굳이 재단에 참여해서 회비를 내지 않아도 오픈소스 소프트웨어를 이용하는 데에는 아무런 문제가 없다. 엔씨소프트는 굳이 왜 CNCF의 창립부터 멤버로 참여했을까? 궁금증이 들지 않을 수 없었다.

그래서 엔씨소프트의 CNCF 가입과 쿠버네티스 도입을 주도한 이들을 만나 이야기를 들어봤다. 엔씨소프트의 IT인프라 운영을 이끌고 있는 김정현 실장, 강정식 팀장, 오태경 님이다.

왼쪽부터 강정식 팀장, 오태경 님, 김정현 실장

엔씨소프트가 CNCF 초기부터 참여했다고 들었습니다. 초기부터 이와 같은 활동을 한 배경은 무엇입니까?

김정현 실장 : 2015년에 CNCF에 참여했는데 당시 저희 회사는 PC 위주로 매출이 일어나던 상황이었습니다. 상대적으로 다른 회사는 모바일 게임으로 크게 매출을 일으키고 있었습니다. 저희는 아직 리니지M이 나오기 전입니다. 당시 우리도 모바일 게임을 해야 한다는 당위가 있었고, 그럴려면 글로벌 서비스도 당연히 해야 하는 상황이었습니다.  이처럼 회사는 변화하려는 니즈가 있었고, 인프라 부서도 그에 맞춰서 준비해야 하는 숙제가 있는 상황이었어요.

인프라실에서는 이에 대한 방안으로 클라우드를 생각했습니다. 그때는 자체 클라우드도 없었고, 퍼블릭 클라우드 안 쓰고 있었어요. IDC에 물리서버나 단순한 가상서버 이용하던 수준이었고, 한국 위주로 서비스 하고 있었어요.

그래서 인프라실에서 고민한 것은 클라우드를 도입하자, 자체 클라우드도 도입하고, 퍼블릭도 사용할 수 있는  준비를 하자는 것이었습니다.  그래서 오픈스택으로 준비를 하던 때였습니다. 그때 컨테이너와 쿠버네티티스가 얼리어답터 사이에서 도는 걸 알았어요. 또 구글이 쿠버네티스를 오픈소스에 기증하려고 한다는 것을 알게 됐어요. 거기에 인텔 등 큰 기업이 참여해서 서포트 하려고 한다는 거 알게 됐어요.

저희는 그때 판단했죠. 쿠버네티스가 구글 등 글로벌 기업들이 서포트 하기 때문에 우리도 이 기술에 베팅해 보자고 의사결정을 했습니다. CNCF에 가입하려면 매년 3000만원 가까이 회비를 내야 합니다. 가입하기 위해 경영진에 이런 거 하겠다고 보고도 하고 CNCF에 참여하게 됐습니다.

베팅이라고 표현하셨는데, 서비스 회사가 특정 기술에 베팅하는 건 위험하지 않나요?

김정현 실장 : 기술에 베팅을 했다는 게 갑자기 대규모 인프라를 도입했다는 게 아니고, R&D를 해보기로 베팅했다는 의미입니다. 기술 공부를 많이 하고, 내부에서 세미나를 하고, 조그맣게 만들어서 테스트 해봤다는 이야기입니다.

김정현 실장

엔씨소프트는 기술의 판매자가 아니라 유저 입장인데, 재단에 가입 안하고도 오픈소스를 사용할 수 있지 않나요? 굳이 가입한 이유가 있나요?

김정현 실장 : 오픈소스니까 공짜로 쓸 수 있지만, 쿠버네티스가 워낙 초기 단계의 기술이라서 협회에 가입하면 정보를 보다 빨리 얻을 수도 있고, 구글이나 관련 회사로부터 적극적인 지원을 받을 수 있잖아요. 덕분에 구글 엔지니어를 만나기도 하고 그랬다.

당시 한국에서 정보를 얻을 창구는 없었겠죠?

강정식 팀장 : 그때는 한국에 쿠버네티스를 아는 사람이 없었어요. 1.0 릴리즈 할 때라서 버그도 있었고… 지금은 검색하면 꽤 많이 나오는데 그 때는 그런 것도 별로 없었죠.

엔씨소프트 같은 게임회사가 CNCF에 가입한 경우가 많이 있나요?

김정현 실장 : CNCF에 가입한 회사의 종류를 보면 몇 가지가 있어요. 구글이나 인텔같은 인프라를 선도하는 기업이 있고, 그런 인프라 분야에서 솔루션 비즈니스를 하는 회사들이 있어요. 마지막으로 저희 같은 엔드유저가 있는데, 28개 창립멤버 중에서 엔드유저는 저희가 유일했을 거에요. 사실 오픈소스만 사용하면 되니까, 꼭 가입을 해야 할까하는 생각도 잠깐 있었지만, 아까 말한 그런 이유로 가입했죠. 가입 했으니까 조금 더 적극적으로 보게 되지 않을까하는 동기부여 요소로도 사용하려고 했습니다

CNCF에 가입한 게 도움이 됐나요?

강정식 팀장 : 쿠버네티스 코드를 개발하는 사람도 만났고, 문제해결도 함께 했어요. 아마 저희가 가입을 안 했으면 쿠버네티스 코드 개발하신 분이 엔씨소프트에 와서 같이 세미나 하는 건 어렵지 않았을까요?

엔씨소프트 내부에서 쿠버네티스는 지금 어느 상황에 와 있나요?

오태경 : 게임을 출시할 때는 게임 말고도 많은 서비스가 필요합니다. 지금은 수백 개의 서비스들이 마이크로서비스화 되어서 쿠버네티스에 올라가 있습니다. 게임은 아니지만 게임을 도와줄 수 있는 서비스는 대부분 컨테이너로 개발자들에게 직접 제공하는 단계에요.

오태경 님

쿠버네티스 컨테이너에 기반한 서비스는 어떤 게 있을까요?

김정현 실장 : 사용자가 가장 먼저하는 접속하는 프론트 웹페이지, 커뮤니티 사이트, 결제 정보, 결제하는 동작 등 많은 서비스가 마이크로서비스로 되어 있어요.

MMO 게임은 특성상 컨테이너나 VM이 잘 안 맞는 경우도 있어요. 인프라는 무조건 최신이 아니라 맞는 기술을 써야 합니다. 그래서 여전히 물리 서버도 사용합니다. 컨테이너에 잘 맞는 것은 확장성이 필요하거나 가벼워도 되거나 그런 서비스입니다. 여러 게임에 공통으로 들어가는 기능들, 웹이나 커뮤니티사이트, 빌링, 거래 페이지, 계정 등 여러가지 공통 서비스는 마이크로서비스화 해서 작게 만들어놨어요. 그런 게 컨테이너 환경에 잘 맞아요. 100%는 아니지만 대부분의 기능이 쿠버네티스에 올라가 있다고 보면 됩니다.

저희가 1, 2년 스터디하고 본격적으로 1~2년 전부터 서비스 올리기 시작했는데 제가 느끼기에는 굉장히 빠른 속도로 전환되고 있습니다. 처음에는 조심스럽게 클러스터 안에 작은 서비스 몇 개를 올렸는데 빠르게 전파되면서 다른 서비스까지 확장됐어요.

인프라의 구조가 바뀌면 게임 개발자도 이에 적응해야 할텐데, 문제는 없나요?

강정식 팀장 : 저희가 돌아보면 쿠버네티스나 컨테이너 기술이 중요한 게 아니고 이걸 사용하는 개발조직의 문화가 중요합니다. 개발조직의 경우 기존의 게임이 잘 돌아가고 있는 상황에서 굳이 컨테이너를 만들고 기존과 다른 방식으로 해야하는지 의문을 가질 수도 있습니다.

저희가 2015년에 쿠버네티스를 고민하고 있을 때, 저희 개발조직은 CICD에 대해 고민하고 있었어요. 같은 고민을 하고 있었던 거죠. 저희가 컨테이너를 조사하고 있을 때 개발조직도 이런 것에 대한 필요성을 느끼고 있었고, 준비를 하고 있었죠. 둘이 맞물려 서비스가 자연스럽게 쿠버네티스에 올라갔습니다. 그러나 일반 기업에서는 그런 게 조금 힘들 겁니다.  인프라 조직이 개발조직을 설득해야 하는데 쉽지 않을 겁니다. 그런 면에서 저희는 운이 좋았습니다.

강정식 팀장

김정현 실장 : 아까 말한 공통기능을 만드는 조직이 있어요. 퍼블리싱플랫폼센터라고 있는데, 그 센터도 컨테이너에 관심이 있었고, 의견이 맞아서 ‘시작해보자’ 한 거죠. 그게 잘 됐습니다.

CICD가 되면 IT 운영 조직의 필요성은 줄어드는 것 아닐까요?

김정현 실장 : CICD라는 건 사람이 매뉴얼로 하던 것을 자동화 한 것입니다. 자동화를 하려면 자동화를 하는 사람이 필요하죠. 기존에 하던 일을 자동화하고, 사람들이 셀프 서비스로 쓸 수있도록 시스템을 만드는 일을 합니다. 일의 종류가 달라질 뿐입니다. 과거에는 서비스 개발 조직이 ‘서버 주세요’ 하면 저희는 한참 후에 서버를 달랑 줬어요. 지금은 서버를 달라고 하면 지체없이 곧바로 줄 수 있고, 늘리고 싶을 때 바로 늘려주고, 필요한 소프트웨어가 있다면 과거에는 개발 조직이 직접 일일이 설치해야 했는데 지금은 원클릭으로 설치할 수 있습니다. 이런 자동화 툴을 제공하기 위한 역할로 IT인프라 운영조직이 변경됐습니다. 이런 변화가 회사에 더 많은 효율을 주는 거죠.

앞에서 언급한 플랫폼 개발 조직 이외에 게임을 개발하는 개발자도 쿠버네티스를 사용할 수 있나요?

김정현 실장 : 시도는 하고 있어요. 아직 런칭은 안 됐지만…

강정식 팀장 : 기술적인 문제도 있어요. 저희가 개발하는 게임은 전통적으로 윈도우 기반이라서, 쿠버네티스 도입을 시도 하고 있지만 아직 들어와 있지는 않아요. 윈도우 위주의 개발을 리눅스로 바꿀 것이냐, 아니면 쿠버네티스가 윈도우를 잘 지원해줄 것이냐를 보고 있는 상태입니다.

쿠버네티스가 앞으로는 윈도우도 지원한다고 하던데요?

김정현 실장 : 네, 앞으로 지원한다고 합니다. 내년 정도에 가능성이 있다고 합니다. 저희도 그 부분에 대해 계속 관심있게 지켜보고 있고, 마이크로소프트와도 기술 미팅을 자주 합니다. 윈도우 컨테이너 언제 되는지 물어보고 확인하고 있어요. 한달전 쯤에 물어봤을 때도 아직은 조금 부족하지만 열심히 하고 있다는 대답을 들었어요. 댄 콘(Dan Kohn, 쿠버네티스 이그제큐티브 디렉터) 얘기로는 애저나 GCP는 내년 정도에는 자기네 쿠버네티스 서비스에서 윈도우를 공식 지원할 가능성이 있다고 합니다. 저희도 기대를 가지고 보고 있습니다.

엔씨소프트의 IT 인프라 환경의 특징과 해결하고자 하는 문제점에 대해 알려주세요.

김정현 실장 : 저희는 온프레미스, 코로케이션으로 서비스를 올리는 게 대부분이고요, 온프레미스 안에는 물리 서버, 오픈스택 기반의 프라이빗 클라우드, 그리고 쿠버네티스를 같이 씁니다.

퍼블릭 클라우드는 일부 필요한 경우 사용하고 있어요, 퍼블릭 클라우드 사이에 안정적인 전용선 연결했고, 리니지M 같은 경우에도 문제가 생겼을 때 AWS 퍼블릭 클라우드를 사용할 수 있도록 하이브리드 형태로 준비는 하고 있어요. 현재는 퍼블릭 클라우드를 사용하는 절대 볼륨 자체는 많지 않습니다.

어떤 업무에 퍼블릭 클라우드를 사용하시나요?

김정현 실장 : MMO 같은  큰 게임 말고, 캐주얼 게임이나 야구게임, 야구정보 서비스 등은 AWS 를 썼어요. 이런 건 처음에 서비스 볼륨 예측이 잘 안되더라고요. 그래서 AWS에 구축하고, 커지면 거기서 증설하는 형태로 전략을 실행했고요, 1년 정도 지나서 안정화 돼서 서버 고정되면 IDC로 가져와서 비용을 절감하는 형태로 운영하고 있습니다.

요즘 대한항공 같은 사례를 보면 전체 IT 인프라를 퍼블릭 클라우드로 간다고 합니다. 쿠팡이나 배달의민족 같은 경우도 그렇고… 넥슨의 듀랑고 같은 경우에도 AWS에서 서비스 되는 것으로 알고 있는데요, 이런 분위기와 엔씨소프트는 좀 다르게 가는 것 같습니다?

김정현 실장 : 게임 회사들도 넥슨의 경우 모바일 게임은 퍼블릭 클라우드 사용하지만, IDC를 여전히 운영하고 PC 게임은 대부분 IDC에서 돌아가는 것으로 알고 있어요. 대부분 비슷한 전략인데, 중요한 것은 비용이죠. 게임회사가 AWS의 복잡한 기능을 쓰는 건 아닙니다. 코스트와 확장성을 따져봤을 때 퍼블릭 클라우드가 단순 인프라만 따져봤을 때 자체 클라우드보다 비싸거든요. 비용을 잘 계산해 보고 따져서 하는데 아직은 온프레미스가 쌉니다. 그럼에도 불구하고 초기에 전체 물량 예측이 어렵다거나 할 때에는 퍼블릭 클라우드를 사용하죠. 사용하되 프라이빗과 퍼블릭을 빠르게 왔다갔다 할 수 있도록 하는 게 가장 중요하다고 보는 거죠.

엔씨소프트의 프라이빗 클라우드는 오픈스택 기반인데 AWS와 왔다갔다 할 수 있나요?

강정식 팀장 : 거기서 최적화 된 게 컨테이너와 쿠버네티스입니다. 컨테이너로 묶여 있으면 퍼블릭 클라우드가 됐든 프라이빗이 됐든 물리서버든 왔다갔다 할 수 있는 거죠.

김정현 실장 : 쿠버네티스 클러스터 아래에 IDC내 온프레미스, 일부는 퍼블릭 클라우드 이렇게 연결돼 있는 거에요. 서비스 배포는 그냥 쿠버네티스에 하고, 늘어날 때 필요하면 AWS에 빠르게 확장할 수 있도록 하이브리드 구성을 해놓았어요. 쿠버네티스는 오픈스택에서 돌아가고 있어요. 많은 회사들이 그럴 것입니다.

컨테이너는 가상머신이 필요없어서 계층이 얇아지는 것이 장점인데, 오픈스택 위에 쿠버네티스 올리면 그런 장점이 사라지지 않나요?

강정식 팀장 : 2015년 처음 쿠버네티스 도입할 때 그런 고민 좀 했어요. 이 문제에 대해 구글 엔지니어에게 물어본 적이 있어요. 그의 대답이 그런 고민 하지 말고 일단 하라고 하더군요. 장점만 취하면 된다고… 계층의 얇아진다는 장점을 취하려고 굳이 물리서버로만 하겠다고 했다면 IDC 안에서의 확장이 어려웠을 거에요. 계층이 얇아지는 장점이 상쇄되는 면이 있지만, 그런 게 꼭 필요한 서비스라면 물리서버를 따로 붙여서 쓰면 되죠. 굳이 계층을 줄이기 위해 “VM은 절대 안돼”이런 접근은 안 좋은 거 같아요.

김정현 실장 : 성능의 차이도 생각보다 크지 않아요. 성능보다는 빠른 확장성이 중요했어요. 물리 서버 확장은 아무래도 가상머신보다는 느려요.

쿠버네티스 도입할 때 어려운 점이 있었다면 어떤 게 있었나요?

강정식 팀장 : 국내에 레퍼런스가 없어서 기술적인 자료 찾을 수 없었어요. 저희 실의 문화이기는 한데, 새로운 게 있으면 일단 깔고 시작해 봅니다. 새로운 거에 대한 두려움이 없는 편이에요.  시작은 자유롭게 하되, 실제  라이브 적용은 천천히 하는 마인드가 있어요. 기술적인 자료를 찾아볼 수없어서 혼자 깔아보고 혼자하는 경험이 어려웠고요, 그거 말고는 크게 어려웠던 점은 없었던 거 같습니다.

오태경 : 쿠버네티스를 업그레이드 할 때 무중단으로 완벽하게 되지는 않거든요. 저희가 세세하게 처음부터 보면서 어떤 부분을 보완해나가야 할지 고민을 했었죠.

김정현 실장 : 쿠버네티스가 빠르게 발전하는 것은 고마운데, 굉장히 빠르게 버전이 릴리즈가 됩니다. 그래서 너무 빨리 바뀝니다. 옛 버전 유지하면 새로운 기능을 못 쓰고, 버그패치도 못 받으니까 업그레이드를 해야 하는데 현재 서비스를 운영하고 있는 쿠버네티스를 업그레이드 한다는 것은 리스크가 있습니다. 업그레이드 무중단으로 해야 합니다. 원래 쿠버네티스 사상 자체는 무중단으로 업그레이드 되는 것이지만, 실제로 해보려면 잘 안되는 경우가 많아요. 마음껏 업그레이드를 못했습니다. 그래서 새로운 버전으로 클러스터를 별도로 만들어서 병렬로 운영하다가 조금씩 옮기는 방식을 취했습니다. 그래서 저희가 업그레이드라고 안 부르고 옆그레이드라고 부릅니다. 그런 점이 좀 어려운 부분입니다.

지금까지 엔씨소프트는 퍼블릭 클라우드는 주로 AWS를 써왔는데, 다른 클라우드를 활용할 계획도 있으신가요?

김정현 실장 : AWS가 한국에 제일 먼저 들어왔기 때문에 주로 사용했던 겁니다. 지금은 애저도 테스트 하고 있어요. 구글도 아직은 IDC가 없기 때문에 안 쓰지만, 들어오면 테스트 할 겁니다. 저희는 하이브리드 클라우드를 하지만, 멀티 클라우드도 정책으로 하고 있거든요. 준비가 되는 대로 애저도 GCP도 사용할 예정입니다.

강정식 팀장 : 클라우드는 옵션이죠. AWS 장애로 저희 서비스가 장애 나면 안되잖아요.

김정현 실장 : 사용자 입장에서 쇼핑 사이트는 지금 장애라도 조금 후에 구매할 수 있지만, 게임은 더 크리티컬한 거 같아요. 유저가 중요한 강화를 한다든지 하는 중요한 이벤트에 서비스가 다운 되면 피해가 막심합니다. 그래서 저희는 안정성이 굉장히 중요합니다. 저희는 저희 IDC든 애저든 AWS든 장애가 날 수 있다고 봅니다. 그래서 하이브리드, 멀티 클라우드를 하려는 거에요.

앞으로 엔씨소프트 인프라는 어떤 방향으로 발전해 나갈까요?

강정식 팀장 : 2017년 쿠버네티스 컨퍼런스에 갔을 때 화두가 ‘서버리스’더라구요. 저희도 쿠버네티스의 미래는 서버리스로 가는 거라고 생각하고 있습니다. 저희 방향도 그렇게 보고 있습니다. 개발자가 서버에 신경을 안 쓰고 개발에만 집중할 수 있을 거에요.

김정현 실장 :  애플리케이션 카타로그 서비스를 제공하려고 합니다. 사용자가 DB나 웹서버 등 많이 사용하는 소프트웨어를 설치하고 운영할 때 원클릭으로 쉽게 할 수 있도록  미리 준비해 두는 거에요. 그 다음에 저희가 생각하는 것은 글로벌 배포에요. 글로벌 서비스를 하려면 컨테이너든 VM이든, 바이너리든 어디든 쉽게 배포할 수 있도록 하는 겁니다. 이걸 하려면 버전 관리도 중요하고, 네트워크 경로 준비도 필요하고, 배포 사이트를 비슷한 환경으로 만들어놔야 합니다. 글로벌 배포를 자동화하고 빠르게 하는 것이 저희 회사의 글로벌 서비스를 하기 위해 필요하다고 생각해서 그 부분을 고려하고 있습니다.

네, 말씀 감사합니다.