클라우드 기반 NoSQL 데이터베이스 몽고DB 아틀라스 (MongoDB Atlas) 소개 및 간단 사용

 제가 처음 사용한 NoSQL 디비가 바로 MongoDB입니다. 제가 알기로 NoSQL 데이터베이스 중 가장 유명하고 가장 많이 사용되고 있습니다. 오늘은 클라우드 기반 몽고DB 아틀라스(Atlas) 를 소개하려고 합니다. 클라우드 3사에서 다 사용가능합니다. 클러스터가 자동으로 스케일 아웃하고, 자동 회복(self-healing) 기능이 있어서 fault-tolerant 합니다. NoSQL 데이터베이스는 비관계형으로 빅데이터를 처리하는데 효율적이라 빅데이터 플랫폼에 필수로 사용됩니다. 


  • 구글 계정으로 등록하기를 누르거나 Start Free를 눌러 시작합니다. 늘 그렇지만 정책은 읽지도 않고 동의하는 척 해줍니다.

  • 조직과 프로젝트 이름을 설정하고 선호하는 코드 샘플 언어를 선택합니다. (나중에 변경 가능)


  • 저는 테스트가 목적이니 FREE 무료 버전을 선택했습니다. 실제 프로덕션 환경에서 소중한 고객 데이터를 다룰 계획이시면 유료 버전을 꼭 선택하세요. 


  • 클러스터를 만듭니다. 저는 구글과 끈끈한 정이 있으니 구글 클라우드를 선택했습니다. 그리고 가보지도 못한 벨기에 구글 데이터 센터에 제 몽고DB 클러스터를 구축하기로 합니다. 제 무료 몽고DB가 벨기에에 위치한 구글 데이터센터에 노드 3대로 돌아가게 됩니다. 꽤 낭만적이죠?  

  • 1~3분 사이에 제 몽고DB 클러스터 구축이 끝난다고 합니다. 요즘 클라우드 서비스들이 다 이렇습니다. 마우스 클릭 몇 번으로 몇 분만에 서비스를 구축을 할 수 있습니다. 클라우드 전혀 어렵지 않아요~

  • 데이터베이스를 구축했으니 사용자를 등록합시다. 
저거 눌러서 사용자 만듭니다.

인증 방법 선택하고, 접근 권한도 제어 가능합니다.

사용자 추가 완료


  • Network Access 메뉴에서 IP 주소를 추가합니다. IP whitelist를 만들어서 해당 IP만 제 몽고 DB 클러스터에 접속할 수 있게 합니다. 실무에선 회사 IP 대역을 추가하면 좋겠죠?
Step 1

Step 2

등록 완료


  • 샘플 데이터를 추가합니다. 저는 샘플 데이터 없는 솔루션은 쳐다도 안봅니다. 소신 ㅇㅈ?



  • 몽고 DB에 Connect(접속)하는 3가지 방법이 있습니다. CONNECT 버튼을 누릅니다.

  • 몽고 쉘로 접속 할 수 있고, 애플리케이션에서 몽고DB 드라이버로 접속 할 수 있고, 마지막으로 몽고DB 써보신 분은 잘 아는 몽고DB Compass로 접속할 수 있습니다. GUI 툴입니다.

  • 저는 MongoDB Compass를 사용하겠습니다. 제 OS에 맞는 버전 다운 후 실행하고 아래 connection string을 복사한 뒤 사용해서 접속할 것입니다.


  • 몽고DB Compass 설치부터 합니다.

  • 설치완료 후 MongoDB Compass에 복사한 connection string에 password 부분을 바꾸어 접속합니다. 

  • 시키는대로 password 바꿔서 넣고, 특수문자는 URL encode 했는데도 안돼 삽질하다가 Fill in connection fields individually 눌러서 접속 성공했습니다. 역시 삽질은 기본!


  • Compass로 샘플 데이터를 조회합니다. 역시 NoSQL 데이터는 관계형 데이터베이스(RDBMS)의 데이터와 다르게 생겼네요. 

  • 근데 굳이 쉘이나 드라이버, 컴파스를 사용하지 않고도 데이터베이스를 조회하고 조작할 수 있습니다. COLLECTIONS 버튼을 누릅니다.

  • 샘플데이터를 클릭해서 구경합니다. 

  • 새로운 데이터베이스와 컬렉션(Collection)을 만듭니다.

  • 새로운 데이터를 추가합니다.

  • 제가 추가한 데이터가 잘 저장되었네요.



  • NoSQL 데이터가 가까이서 보면 이렇게 생겼습니다. NoSQL에 여러 종류가 있는데 MongoDB는 document 기반 데이터베이스입니다.

  • 인덱스(index)도 구경합니다. 


  • 인덱스는 아래와 같이 추가할 수 있습니다.

  • 필터(filter)를 사용해 데이터를 조회할 수 있습니다.

  • 좌측의 아이콘을 이용해서 데이터를 수정, 복사, 삭제 할 수 있습니다.

  • 데이터를 시각화해주는 Charts 기능도 사용할 수 있습니다.

  • 사용한 요금은 아래와 같이 확인합니다. 저는 무료 버전이라 안심!

  • 마지막으로 distributed 시스템의 특징을 보여드리겠습니다. 벨기에 데이터 센터에 제 몽고 클러스터는 3개의 노드로 구성 되어있습니다. 쉽게 표현해서 서버 3대가 있는데 1대를 메인으로 하고 나머지 2대를 보조로 합니다.  몽고는 primary, secondary로 표현하네요. 카프카 같은 분산처리 플랫폼에선 리더(leader)와 팔로워(follower)라고 부릅니다. 일반적으로 primary, leader라고 불리는 서버에 데이터를 read/write하게 되고 secondary, follower라고 불리는 서버들은 단순히 메인서버의 데이터를 똑같이 복제해서 가지고 있게 됩니다. 만약 메인 서버가 다운이 되면, 다른 보조 서버가 메인 서버의 역할을 담당하게 됩니다. 나중에 메인 서버가 살아나면 다시 데이터를 똑같이 복제해서 가지고 있게 됩니다. 이런식으로 데이터가 사라지지 않게 보존합니다. replica set (복제 세트)라고 부르는 이유기도 합니다. 이러한 알고리즘 덕분에 Fault -tolerant 한 시스템이 될 수 있습니다. 아래에 보시면 벨기에 리전에 3개의 노드가 있습니다.  01서버가 primary이네요.

  • 아래 그래프를 보시면 아시겠지만 Primary라고 불리는 01 서버에만 움직임이 보이시죠?  

** 관계형 DBMS는 NoSQL DBMS처럼 분산처리하기가 힘듭니다. 그래서 NoSQL 데이터베이스를 빅데이터 처리에 많이 사용하게 됩니다. 

Comments