2015.03.05 데이터 사이언스

엔씨가 사용하는 오픈소스 #3 – 개발, 운영도구(Bootstrap, Pig, Voldemort, Ganglia)

 

엔씨가 사용하는 오픈소스 #1 빅데이터 처리기술 : ‘하둡(HADOOP)’

엔씨가 사용하는 오픈소스 #2- 분석도구 ‘하이브(HIVE)’와 ‘R’ 편에 이어지는, 오픈소스 이야기 3편!

 

엔씨가 사용하는 오픈소스 #3

 

개발, 운영도구

부트스트랩(Bootstrap), 피그(Pig), 볼드모트(Voldemort), 강글리아(Ganglia)

NC_bigdata-1

진행 : 김진필 팀장(데이터인프라개발팀)

참여 : 백승학 차장, 최부경 과장, 윤영도 과장, 김주환 대리

리니지 운영자가 대규모 이벤트를 열었을 때 조건에 맞는 참가자를 걸러내는 방법에는 어떤 것이 있을까요? 엑셀 시트를 열어놓고 수만 명의 신청자 데이터를 일일이 검색해야 할까요? 300여대의 서버를 관리함과 동시에 각 서버의 상태를 모니터링하려면 어떻게 해야할까요? 하나씩 찾아보며 상태를 체크하는 수 밖에 없을까요? 정녕, 정녕 그 고생길 뿐인걸까요?

엔씨소프트의 게임은 스케일이 거대한만큼 하루하루 발생하는 데이터의 양 또한 어마어마할 수 밖에 없어, 이전 소개해드렸던 빅데이터 처리기술(하둡)분석도구(하이브, 하이브R) 의 중요성이 점점 커져가고 있습니다. 그렇다면 이러한 빅데이터 분석툴을 개발하거나 운영할 수 있는 기술은 어떻게 얻을 수 있을까요?

뜻이 있는 곳에 길이 있다는 말이 있죠. 프로그래머는 그 길을 스스로 만들어 냅니다. 툴을 개발하거나 운영도구를 스스로 찾아내고, 만들어내고, 자기 손에 잘 맞도록 고쳐내죠. 오늘은 엔씨소프트에서 사용하는 대표적인 개발, 운영도구를 소개해드립니다. 데이터인프라개발팀과 데이터서비스 개발팀의 전문가들이 모여 엔씨에서 사용하는 오픈소스 – 부트스트랩(Bootstrap), 피그(Pig), 볼드모트(Voldemort), 강글리아(Ganglia)에 관해 이야기를 나누어 보았습니다. 🙂


 

Q1. 자기소개 부탁드립니다.

김진필 : 안녕하세요, 오늘 진행을 맡은 김진필입니다. 데이터인프라개발팀 팀장을 맡고 있습니다.

백승학 : 안녕하세요, 데이터서비스개발팀 백승학입니다. 사용자툴 개발을 담당하고 있습니다.

김주환 : 안녕하세요, 데이터분산플랫폼팀 김주환입니다. 하둡과 하둡에코시스템 관리를 담당하고 있습니다.

윤영도 : 안녕하세요, 데이터인프라개발팀 윤영도입니다. 빅데이터 관련 인프라개발을 담당하고 있습니다.

최부경 : 안녕하세요, 데이터인프라개발팀 최부경입니다. 하둡ETL개발 및 운영을 담당하고 있습니다.

 

1

▲ 김진필 팀장(좌), 백승학 차장(우)

Q2. 부트스트랩(Bootstrap)

Q2-1. 부트스트랩(Bootstrap) 에 대해 소개 부탁 드립니다.

백승학 : 부트스트랩(Bootstrap)은 트위터(Twitter)에서 공개한 front-end 웹 개발 오픈소스 프레임워크입니다. css, html, javascript 기반의 템플릿, 웹UI, 반응형 웹 구현 등을 지원합니다.

Q2-2. 이를 사용하여 만든 툴은 어떤 것이 있으며 주로 사용하는 용도가 무엇인가요?

백승학 : 부트스트랩(Bootstrap)을 사용하여 하이브R(HiveR)과 HiveR Scheduler를 개발하였습니다. 하이브R(HiveR)은 일반적인 데이터 추출과 분석을 위해 사용하고 있습니다. HiveR Scheduler는 게임 이벤트 기간 동안 조건에 맞는 대상자를 추출할 때 사용하거나, 데이터를 정기적으로 가공하여 전달하거나 적재할 때 사용하고 있습니다.

 

BootStrap 예제 - HiveR Scheduler

▲ 엔씨소프트에서 사용하는 HiveR Scheduler

Q2-3. 웹 UI 개발에 부트스트랩(Bootstrap) 이외에 웹 UI 관련 오픈 소스들은 어떤 것들이 사용되고 있나요?

백승학 : 웹 UI개발의 경우 작은 프레임워크나 오픈소스 라이브러리가 굉장히 많이 쓰이고 있습니다. 저희는 구현 기능 및 목적에 따라 신뢰할만한 것을 선별하여 사용하고 있습니다. 몇 가지만 소개해드리면 다음과 같습니다. 가장 널리 알려진 Jquery.ui를 기본으로 표 형태를 나타내기 위한 SlickGrid, 사용자 서식을 검사하기 위한 Bootstrap, Validator, 쿼리를 편집하기 위한 CodeMirror, 어려운 표현식을 문자로 풀어주는 cronGen, 날짜와 시간을 표현하기 위한 moment 등의 오픈소스가 웹UI 개발에 사용되고 있습니다.

Q2-4. 부트스트랩(Bootstrap)을 사용해본 소감은 어떤가요?

백승학 :저와 같이 디자인에 대한 경험이 부족한 사람도 기본 수준 이상의 결과물을 쉽게 만들 수 있는 점은 좋았습니다. 하지만 다른 도구와 마찬가지로 고도의 결과물을 얻기 위해서는 많은 노력이 필요하긴 합니다.

 

Q3. 강글리아(Ganglia)

Q3-1. 강글리아(Ganglia) 에 대해 소개 부탁 드립니다.

김주환 : 강글리아(Ganglia)는 UC Berkeley에서 개발한 대용량 데이터를 처리하는 클러스터(cluster) 장비의 리소스, 즉 CPU, Memory, Network 를 모니터링하기 위한 툴입니다.

Q3-2. 엔씨소프트에서는 강글리아(Ganglia)를 어떻게 활용 하고 있나요?

김주환 : 클러스터 장비의 리소스 상태 정보를 저장하고 이슈가 발생할 경우 이에 대한 분석 용도로 사용하고 있습니다. 이를 통해 각 장비의 문제를 쉽게 파악하고 있습니다. 엔씨소프트의 경우 300여대까지 늘어난 클러스터 장비 전체를 한 번에 모니터링하기 위해 강글리아(Ganglia)를 도입하여 사용하고 있습니다.

nc ganglia dash borad (1)

▲ 엔씨소프트에서 사용하는 강글리아

Q3-3. 강글리아(Ganglia) 사용 소감에 대해 말씀 부탁 드립니다.

김주환 : 강글리아(Ganglia)는 새로운 장비를 추가할 때 plug-in을 사용한 확장성과 커스터마이징 기능이 우수하기 때문에 큰 어려움이 없이 사용할 수 있었습니다. 당시만 하더라도 내부 BI(business intelligence) 용도로는 큰 규모이기도 했고 상대적으로 선도적인 업무여서 보람이 있었습니다.

2_2

▲ 왼쪽부터 김주환 대리, 윤영도 과장, 최부경 과장

Q4. 볼드모트(Voldemort)

Q4-1. 볼드모트(Voldemort) 에 대해 소개 부탁 드립니다.

윤영도 : 링크드인(LinkedIn)에서 개발한 Key-value 기반의 NoSQL 스토리지입니다.

Q4-2. 엔씨소프트에서는 볼드모트(Voldemort)를 어떻게 활용하고 있나요?

윤영도 : 블레이드&소울에서 수집한 데이터로 구축한 “개인화 추천 콘텐츠”를 저장하고, plaync를 통해 이를 고객에게 제공하고 있습니다.

Q4-3.  다양한 NoSQL 스토리지 중에서 볼드모트(Voldemort)를 사용하는 이유는 무엇인가요?

윤영도 : 볼드모트(Voldemort)는 조회 속도가 빠르고 확장성과 안정성이 우수하여 대규모 데이터를 재적재하는데 적합해 선정했습니다. “개인화 추천 콘텐츠”는 한 번 구축할 때마다 기존 데이터를 삭제하고 다시 대량의 데이터를 적재하는 작업이 진행됩니다. 일반적인 NoSQL에서 이러한 작업을 반복할 경우 성능이 저하되거나 데이터의 단편화 현상이 발생할 수 있어 서비스에 좋지 않은 영향을 줄 위험이 있습니다. 이를 방지하기 위해 도입한 것이 볼드모트(Voldemort)입니다.

Q4-4. 그 동안 볼드모트(Voldemort)를 사용 하면서 어려웠던 점이라던가 사용 소감에 대해 설명 부탁 드립니다. 

윤영도 : 볼드모트(Voldemort)는 다른 오픈소스에 비하여 사용자가 적어 상대적으로 관련 자료가 부족합니다. 이 때문에 운영하면서 문제가 발생하였을 때 이를 해결하기 위한 자료를 찾기가 어려웠습니다. 자료를 도저히 찾을 수 없는 경우에는 소스코드 분석을 통해 해결했는데 이 부분 작업이 힘들고 어려웠습니다.

edit_shutterstock_238986361

Q5. 피그(Pig)

Q5-1. 피그(Pig)에 대해 소개 부탁 드립니다.

최부경 : 피그(Pig)는 야후(Yahoo)에서 개발한 스크립트 언어로 대용량 데이터셋을 고차원으로 처리할 수 있는 언어입니다. 피그(Pig)를 사용하여 개발하면 별도의 Map/Reduce 함수 구현 없이 손쉽게 코드를 작성 할 수 있고 시스템 내부에서 최적화를 처리해줍니다. 때문에 하둡(Hadoop) 데이터 처리를 위한 코드를 작성할 때 좀 더 쉽고 편해지는 장점이 있습니다.

Q5-2. 업무에서는 피그(PIG) 를 어떻게 사용하고 있는지요?

최부경 : 데이터 분석을 위해 피그(Pig)를 사용하여 하둡(Hadoop)에 적재된 게임로그나 스냅샷 데이터 등의 대용량 데이터의 ETL(Extract, Transform, Load)작업을 수행하고 있습니다.

Q5-3. 피그(PIG) 사용 소감에 대해 한 말씀 부탁 드립니다.

최부경 : 피그(Pig)는 개발 접근성이 좋기 때문에 데이터를 변환, 적재하는 업무에서 사용하기 편리합니다. 또 데이터 흐름에 대한 처리가 직관적이기 때문에 신규 개발 및 유지보수가 용이한 장점도 있습니다. 작년 초 통계데이터를 하둡(Hadoop)으로 전환하면서 게임 관련 모든 ETL작업도 피그(Pig)로 전환하는 작업을 진행하였습니다. ETL 작업의 규모가 상당히 많았지만 피그(Pig)로 구현하면서 빠르고 효율적으로 완료할 수 있었습니다.


데이터 분석과 업무는 눈에 잘 띄는 업무는 아닙니다. 게임 제작 및 운영을 담당하는 회사 내부 분들을 대상으로 하는 업무이기 때문에, 게임 소비자에게는 그 존재가 잘 알려지지 않을 수 밖에 없지요. 대외적으로 성과가 도드라지는 일은 아니지만 이 자리에 모인 데이터플랫폼실의 전문가들은 언제나 새로운 기술을 습득하고 분석하며 엔씨소프트의 환경을 최적화시키기 위해 노력을 아끼지 않고 있습니다. 그들의 노력만큼 엔씨소프트의 데이터 분석 기법이 더 발전할 것이고, 결국 게임 사용자들에게 더 나은 즐거움을 줄 수 있다는 것을 알기 때문입니다.

늘 앞서 나가야 하기에 더 부담되는 자리, 하지만 그만큼 엔씨소프트의 게임이 한 발짝씩 더 나아가는 자리라는 것을 알고 있기에 엔씨소프트의 데이터플랫폼실은 계속해서 새로운 기술을 익히며 더 많은 데이터를 빠르게! 효율적으로! 마법처럼 다루어 나갈거라는거! =ㅂ=!

TOP