최신 데이터베이스인 MongoDB는 처음부터 클라우드를 염두에 두고 설계되었으며, 이제는 분산된 워크로드를 통해 고가용성과 손쉬운 확장성을 유지할 수 있는 기능이 내장되어 있습니다. 단일 인스턴스로 실행할 수도 있지만 대부분의 경우 클러스터로 실행됩니다. 이 문서에서는 MongoDB에서 다양한 유형의 클러스터에 대해 알아보고 MongoDB Atlas에서 클러스터를 설정하는 방법을 알아봅니다.
MongoDB 클러스터란 무엇인가요?
MongoDB에서 클러스터는 두 가지 다른 아키텍처를 나타낼 수 있습니다. 클러스터는 복제본 세트 또는 샤딩된 클러스터를 의미할 수 있습니다. 두 가지 모두를 자세히 살펴보겠습니다.
복제본 세트
MongoDB 복제본 세트는 데이터의 정확한 사본을 포함하는 하나 이상의 서버 그룹입니다. 기술적으로 하나 또는 두 개의 노드를 가질 수 있지만, 권장되는 최소 노드는 세 개입니다. 프라이머리 노드는 애플리케이션의 읽기 및 쓰기 작업 제공을 담당하며, 두 개의 세컨더리 노드는 데이터의 복제본을 보유합니다.
MongoDB의 일반적인 복제본 세트
어떤 이유로든 프라이머리 노드를 사용할 수 없게 되면 투표 프로세스를 통해 새 프라이머리 노드를 선택합니다. 이 새로운 프라이머리 노드가 이제 읽기 및 쓰기 작업을 담당합니다.
프라이머리 노드를 사용할 수 없는 경우 클라이언트 애플리케이션의 트래픽은 새 프라이머리 노드로 리디렉션됩니다.
결함이 있는 서버가 다시 온라인 상태가 되면, 프라이머리 노드와 동기화되어 클러스터의 새 세컨더리 노드가 됩니다.
이전 프라이머리 노드가 다시 온라인 상태가 되면 세컨더리 노드로 돌아옵니다.
목표는 애플리케이션에 데이터에 대한 고가용성을 제공하는 것입니다. 서버에 장애가 발생하더라도 클라이언트 애플리케이션은 여전히 클러스터에 연결하여 데이터에 액세스할 수 있어, 전반적인 잠재적 다운타임을 줄일 수 있습니다.
샤딩된 클러스터
샤딩된 클러스터는 여러 복제본 세트에 데이터를 분산하여 수평적으로 확장하는 방법입니다. 컬렉션에서 읽기 또는 쓰기 작업이 수행될 때, 클라이언트는 요청을 라우터(mongos)로 전송합니다. 라우터는 구성 서버를 통해 데이터가 저장된 샤드를 검증한 후, 요청을 특정 클러스터로 전송합니다.
MongoDB의 일반적인 샤딩된 클러스터
각 샤드에는 자체 복제본 세트가 포함되어 있습니다. 고가용성을 보장하려면 라우터 또는 구성 서버도 두 개 이상 있어야 합니다. 이러한 유형의 아키텍처를 사용하면 가용성 저하나 저장 용량에 대한 걱정 없이 데이터베이스를 원하는 만큼 확장할 수 있습니다.
MongoDB 클러스터 생성
필요에 따라 여러 가지 방법으로 MongoDB 클러스터를 만들 수 있습니다. 가장 쉬운 방법은 MongoDB의 서비스형 데이터베이스 플랫폼인 Atlas를 사용하는 것입니다. 자세한 지침은 문서에서 찾을 수 있습니다. 인프라에서 MongoDB를 실행해야 한다면, 본 문서 후반부에 있는 지침을 참고하시기 바랍니다.
Atlas에서 MongoDB 클러스터를 생성하려면 다음 단계를 따르세요.
1. https://cloud.mongodb.com에서 MongoDB Atlas 계정으로 로그인합니다.
2. '만들기' 버튼을 클릭합니다.
3. 클러스터 유형(전용, 서버리스, 공유)을 선택합니다.
4. 클라우드 공급자와 리전을 선택합니다.
5. '클러스터 생성'을 클릭합니다.
MongoDB 클러스터가 프로비저닝을 시작하며, 몇 분 후에 사용할 수 있게 됩니다. 클러스터를 생성할 때, 특정 요구 사항을 충족할 수 있는 다양한 옵션을 확인할 수 있습니다. 각 설정 옵션은 다음 섹션에서 다룹니다.
MongoDB Atlas에서 클러스터 설정하기
모든 애플리케이션은 각기 다르며, MongoDB Atlas 에서 특정 요구 사항에 맞게 클러스터를 설정할 수 있는 다양한 방법을 제공합니다. 일부 특정 설정은 미리 고려해야 하지만, 다른 설정들은 즉시 변경할 수 있습니다. 이 설정들을 사용하면 운영 환경에서 Atlas의 모든 권장사항을 적용할 수 있습니다. 이 섹션에서는 초기 클러스터 생성 시 조정할 수 있는 다양한 구성에 대해 자세히 알아봅니다.
배포 유형
배포 유형은 가장 먼저 선택해야 하는 옵션입니다. 선택한 인스턴스 유형에 따라 나머지 구성 옵션이 달라집니다.
- 서버리스: 이 클러스터 유형은 가격의 관점에서 가장 유연합니다. 트래픽이 가끔 발생하거나 변동이 있는 애플리케이션에 적합합니다. 가능한 구성은 최소한으로 유지됩니다.
- 전용: 전용 클러스터는 운영 환경에서 발생하는 실제 부하를 처리하도록 설계되었습니다. 다양한 서버 크기와 고급 구성도 지원합니다. 운영 환경에서는 이 옵션을 선택하는 것이 좋습니다.
- 공유: 이 클러스터는 MongoDB를 탐색해 볼 수 있도록 설계되었습니다. MongoDB를 무료로 체험할 수 있는 샌드박스를 제공합니다. 사용 가능한 서버 구성은 다소 제한적입니다.
다양한 데이터베이스 배포 유형에 대한 자세한 내용은 문서를 참조하세요.
글로벌 클러스터 구성
특정 위치에서 읽기 및 쓰기 작업을 수행하는 다수의 샤딩된 클러스터가 필요한 경우, 글로벌 클러스터 구성을 활성화해야 합니다. 여기에서 각 클러스터를 원하는 위치를 정확히 선택하고, 사용자 국가와 데이터 액세스에 사용할 서버 간의 매핑을 구성할 수 있습니다.
클라우드 공급자 및 리전
어떤 배포 유형을 선택하든 클러스터를 배포할 특정 리전과 함께 클라우드 공급자를 선택해야 합니다. 세 가지 주요 클라우드 공급자 중 하나에서 MongoDB 클러스터를 인스턴스화할 수 있습니다. 가용성을 더 높이려면 클러스터의 각 노드를 다른 리전이나 심지어 다른 클라우드에도 배포할 수 있습니다. 이를 위해 멀티 클라우드, 멀티 리전, 워크로드 격리 옵션을 활성화해야 합니다. 여기에서 복제본 세트에 포함될 노드의 수와 유형(투표 선택 가능, 읽기 전용, 분석)을 구성할 수 있습니다.
클러스터 계층
리전과 클라우드 공급자를 선택했으니, 이제 클러스터의 노드에 사용할 계층을 선택해야 합니다. 이 구성은 클러스터 가격 책정에 가장 큰 영향을 미치게 됩니다. 다양한 옵션이 제공되며, 각 옵션은 추가로 조정할 수 있습니다. CPU와 RAM의 필요량 등 리소스 요구 사항을 고려하여, 클러스터에 적합한 계층을 찾아 보세요.
그런 다음 저장 용량을 조정하고 자동 확장 옵션과 필요한 IOPS를 설정하여, 클러스터 구성을 추가로 조정할 수 있습니다. AWS 상위 계층(M40+)에서는 서버 클래스(저사양 CPU, 일반 또는 로컬 NVMe SSD)를 선택할 수 있으며, 이 선택은 CPU 수, RAM, 저장 용량에도 영향을 줍니다.
추가 설정
이 마지막 탭에서는 클러스터에 추가할 수 있는 다양한 추가 서비스를 찾을 수 있습니다. 첫 번째 옵션은 MongoDB에 사용하고자 하는 MongoDB 버전입니다. 그 후 자동 백업을 활성화하거나 비활성화할 수 있는 옵션이 제공됩니다. 추가 설정을 확장하면 클러스터를 샤딩하거나, BI connector를 추가하고, 암호화 키를 관리하는 등의 고급 옵션을 사용할 수 있습니다.
대부분의 설정은 추후 필요에 따라 즉시 변경할 수 있으며, 이는 애플리케이션이 발전함에 따라 매우 유용한 기능입니다.
다양한 환경에서 MongoDB 클러스터 생성
MongoDB의 클라우드 기반 인스턴스를 사용할 수 없거나 인프라에서 클러스터를 실행해야 하는 경우, 지원되는 운영 체제에 MongoDB를 설치할 수 있습니다. MongoDB 자체 외에도 Ops Manager 또는 Cloud Manager를 설치하여 클러스터를 관리하는 것이 좋습니다.
Linux(Ubuntu, CoreOS)에서 MongoDB 클러스터 생성
Linux에서 MongoDB 클러스터를 생성하려면 MongoDB 인스턴스 3개가 실행 중이어야 합니다. 이 인스턴스들은 로컬 네트워크에서 서로 통신할 수 있어야 합니다.
Linux에서 클러스터를 설정하는 방법에 대한 자세한 지침은 문서에서 확인할 수 있습니다.
Docker를 사용하여 MongoDB 클러스터를 생성하기
사용자 환경에 MongoDB의 로컬 인스턴스를 설치하거나 팀원들과 공유할 수 있는 임시 개발 환경을 설정하려면 Docker를 사용하는 것이 좋습니다. Docker에서 MongoDB의 로컬 인스턴스 3개를 시작한 후, 문서의 지침을 따르면 됩니다.
다음 단계
이제 클러스터를 생성하고 설정하는 방법을 알았으니, 필요에 맞는 클러스터 토폴로지를 찾는 방법에 대해 자세히 알아볼 수 있습니다. MongoDB University에서 클러스터 설정 토폴로지 동영상을 통해 학습을 이어가 보세요. MongoDB 클러스터의 가능한 모든 구성에 익숙해지면 MongoDB Atlas를 무료로 체험해 보실 수 있습니다. 원하는 대로 클러스터를 설정한 후, 데이터를 사용자에게 제공할 수 있고 필요할 때 확장도 가능합니다.



