·설치 이유

서버를 통해 데이터를 관리하기 위해서는 데이터베이스를 관리하는 시스템이 별도로 필요하다. 때문에 서버를 만드는 많은 사람들은 MySQL을 이용해 서버를 관리한다. MySQL이란 관계형 데이터베이스 관리 시스템(RDBMS)인데, 오픈 소스이면서 다양한 OS와 프로그래밍 언어를 지원하기 때문에 널리 사용된다. MySQL은 표준 데이터베이스 언어인 SQL(Structure Query Language)를 사용하며, 크기가 큰 데이터 집합도 빠르고 효율적으로 관리할 수 있도록 한다.

그러나 게임 서버의 경우 RDBMS로 모든 데이터 처리를 감당하기는 어렵다. 게임 출시 초기라면 가능하지만, 게임이 성공하면 대부분의 사용자 테이블은 RDBMS의 기준을 만족하지 못한다. 그 예시로 쿠키런 서버는 A가 B에게 하트를 보내는 기능을 할 때, 처리해야 하는 데이터는 사용자 수 N x N가 되므로 기하급수적으로 늘어나는 데이터를 RDBMS가 감당하지 못한다. RDBMS는 빅데이터를 RDB의 스키마 *11)*에 맞춰 넣기 위해서는 엄청난 시간의 down time이 발생하는 등의 문제가 있었다.

이런 RDBMS의 한계를 극복하기 위해 분산 환경에서 대용량의 데이터를 빠르게 처리할 수 있는 NoSQL(Not Only SQL)이 개발되었으며, 오늘 설치할 MongoDB는 문서형 NoSQL이다. MongoDB는 유연성과 확장성이 높아 Schema-less의 구조를 취하여 다양한 형태로 많은 데이터를 저장할 수 있다. 다만, NoSQL에서는 트랜잭션 *12)*이 불가능하기 때문에 인앱 구매(IAP,IAB)나 결제 정보는 무조건 RDBMS에 저장해야 한다.

·설치 과정

전 주 설치 과정의 마지막에 했던 것과 동일한 방식으로 PuTTY를 이용해 CentOS에 접근해 터미널 창을 연다. CentOS의 기본 저장소에는 MongoDB가 없으므로 새로 repository 파일을 만들어 추가해 준다. RHEL이나 CentOS에서는 중앙 패키지 저장소를 사용하는 yum을 통해 패키지를 관리한다. yum의 저장소 정보는 /etc/yum.repos.d/저장소명.repo 의 형식으로 되어있다.

sudo vi /etc/yum.repos.d/mongodb-org.repo

위의 명령어를 입력하면 mongodb-org 패키지의 저장소를 생성하는 동시에 vi *13)*에서 문서 편집을 할 수 있다.

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

설치하려는 버전을 명확히 기술해 준다. 해당 문서 작성 기준, MongoDB 홈페이지에서는 4.0이 가장 최신판으로 나와 있다.

[] 저장소를 식별할 수 있는 ID
name 저장소의 이름
baseurl 패키지를 설치·업데이트 할 때 사용할 기본 저장소의 URL을 지정한다.
gpgcheck yum으로 패키지를 설치할 때 GPG 14) 서명 검증을 할지 안 할지를 정한다.
기본 모드는 서명 검증을 하는 1이며, 0이면 하지 않는다.
enabled 1이면 해당 저장소를 사용하고, 반대로 0일 경우에는 사용하지 않겠다는 의미이다.
gpgkey gpgcheck를 할 때 사용할 서버의 공개키 경로를 설정한다.

Esc를 누르고 :wq 를 입력하면 vi에 수정된 내용을 저장하고 종료한다.

:wq

저장소가 만들어졌으니, 이제 mongodb-org 패키지를 설치할 수 있다. Ubuntu에서는 apt였던 부분을 yum으로 바꿔서 설치 명령을 하면 간단히 패키지 설치가 완료된다.

sudo yum install mongodb-org