티스토리 뷰
개요
- MongoDB는 수년간 대표적인 NoSQL 제품으로 자리 잡았다. 특히, 전통적인 RDBMS 대비 우월한 샤드 및 스케일 아웃 능력으로 대량 트래픽, 대량 데이터가 발생하는 모던 웹 시대에 걸맞는 저장소로 널리 쓰이고 있다.
- MongoDB는 관리 측면에서 굉장한 전문성과 노력이 필요하다. 프로덕션 레벨이라면, 제작사가 직접 제공하는
MongoDB Atlas
유료 클라우드 서버리스 매니지드 상품 이용을 추천한다. 데이터 증가에 따른 스케일 아웃 같은 까다롭고 어려운 관리 이슈를 대부분 자동으로 수행해주며, 매우 편리한 브라우저 기반의 관리 UI를 제공한다. 특히 2019년 6월부터MongoDB Atlas Full-Text Search
서비스를 개시하였는데, MongoDB 생태계에서, 복잡한 백엔드 아키텍쳐에 대한 고민 없이 순수히 풀텍스트 검색 자체에 집중할 수 있어 강력히 추천한다. [관련 링크]
MongoDB Atlas 클러스터 생성
- MongoDB Atlas 클러스터는 웹 콘솔을 통해 직관적으로 생성할 수 있다. 아래는 개발 환경에 권장하지만 추후 스케일링의 제한이 없는 M10 클러스터 티어를 AWS 클라우드의 서울 리전에 생성하는 예이다.
MongoDB Cloud 콘솔 접속
# Deployment
→ [Database] 클릭
→ [Build a Database] 클릭
→ [Advence Configuration Options] 클릭
→ [Dedicated] 클릭
# Global Cluster Configuration
→ [Enable Global Writes] 체크 해제
# Deployment your database
→ Provider: [AWS] 선택
→ Region: [Seoul] 선택
# Cluster Tier
→ Tier: [M10] 선택 (2GB RAM, 10GB Storage, 2 vCPUs, from $0.10/hr)
→ Storage: 10 (입력)
→ [Cluster Tier Scaling] 체크
→ [Allow cluster to be scaled down] 체크
→ Minimum cluster size: [M10] 선택
→ Maximum cluster size: [M30] 선택
→ [Storage Scaling] 체크
# Additional Settings
→ Select a Version: [MongoDB 7.0] 선택
→ [Turn on Cloud Backup] 체크
→ [Continuous Cloud Backup] 체크
→ [Enable Business Intelligence Connector] 체크 해제
# Cluster Name
→ Cluster Name: foo-dev (입력)
→ [Create Cluster] 클릭
# Security Quickstart
→ How would you like to authenticate your connection?: [Username and Password]
→ Username: {db-admin-username}
→ Password: {db-admin-password}
→ [Create User] 클릭
M10
,M20
은 개발 환경에 추천되는 클러스터 티어이다.M30
부터 대용량 트래픽이 발생하는 운영 환경에 추천되는 클러스터 티어이다. 이 티어부터 샤드를 지원한다.- M10부터 다운 타임 없는 오토 스케일링을 지원한다. 조건은 클래스 선택시 General을 선택해야 하며, 유입량에 따라 자동으로 클러스터 티어와 스토리지 용량을 변경해준다.
- M10부터 기본적으로 레플리카 셋으로 구성되는데, 운영 중에도 샤드로 업그레이드가 가능하다. 유의할 점은 샤드는 최소 M30으로의 티어 업그레이드를 요구하며, 한번 샤드로 전환한 후에는 M30 미만의 티어로 다운그레이드가 불가능하다.
- M10부터 VPC 피어링을 지원하는데 이를 이용하면 애플리케이션이 위치한 VPC와 MongoDB Atlas를 같은 내부 네트워크로 취급할 수 있다. 이를 통해 외부 인터넷 경유 없이 순수한 내부 통신이 가능해진다.
Amazon VPC 피어링 연결 생성
- MongoDB Atlas는 퍼블릭 연결을 제공하는 서비리스 매니지드 서비스이지만 프라이빗으로 구성된 Amazon VPC와 VPC 피어링 연결을 생성하여 마치 격리된 내부 네트워크에 애플리케이션과 함께 위치시키는 것이 가능하다. 이를 통해 중요한 데이터에 대한 접근을 원천 차단하여 보안을 강화할 수 있다. VPC 피어링 연결을 생성하는 방법은 아래와 같다.
AWS VPC 콘솔 접속
→ [VPC] 클릭
→ 피어링 연결을 생성할 기존 프라이빗 VPC를 선택
→ [Edit VPC settins] → [Enable DNS hostnames] 체크 → [Enable DNS resolution] 체크 → [Save] 클릭
(해당 VPC의 소유자 ID를 기억: 111111111111)
(해당 VPC의 ID를 기억: vpc-11111111111111111)
(해당 VPC의 CIDR을 기억: 10.0.0.0/16)
- 이번에는 MongoDB Atlas에서 아래와 같이 피어링 연결을 생성하고 요청한다.
MongoDB Atlas 콘솔 접속
→ [Atlas] 클릭 → [Network Access] 클릭 → [Peering] 클릭
→ [Add Peering Connection] 클릭
# Peering Connection
→ Cloud Provider: [AWS] 선택 → [Next] 클릭
# Your Application VPC
→ Account ID: 111111111111 (앞서 기억해둔 VPC의 소유자 ID를 입력)
→ VPC ID: vpc-11111111111111111 (앞서 기억해둔 VPC의 ID를 입력)
→ VPC CIDR: 10.0.0.0/16 (앞서 기억해둔 VPC의 CIDR을 입력)
→ [Add this CIDR block to my IP whitelist] 체크
→ Application VPC Region: [ap-northeast-2] 선택 (리전 선택)
# Your Atlas VPC
→ Atlas VPC Region: ap-northeast-2 (선택 불가)
→ VPC CIDR: 192.168.120.0/21 (입력 불가, 이후 AWS VPC 콘솔에 입력하기 위해 기억)
→ [Initate Peering] 클릭
(Status: Waiting for Approval로 변경됨을 확인)
- 다시 AWS VPC 콘솔로 돌아와서 요청한 피어링 연결을 수락하고, 라우팅 테이블에 추가한다.
AWS VPC 콘솔 접속
→ [Peering connections] 클릭
→ (Status: Pending acceptance 피어링 연결 선택)
→ [Actions] 클릭 → [Accept request] 클릭 → [Accept request] 클릭
# VPC 피어링 연결 요청 수락
→ [Yes, Accept] 클릭
→ [지금 내 라우팅 테이블 수정] 클릭
# 라우팅 테이블
→ [foo-dev-private] 선택
→ [작업] 클릭 → [라우팅 편집] 클릭
→ 대상: 192.168.120.0/21 (앞서 기억해둔 VPC의 CIDR을 입력) → 대상: [Peering Connection] 선택 → [mongodb-atlas-foo-dev] 선택
→ [라우팅 저장] 클릭
Amazon EC2 피어링 연결 확인
- 앞서 피어링 연결을 생성한 후, 같은 VPC(또한 서브넷)에 위치한 Amazon EC2 인스턴스에서 정상 연결을 확인할 수 있다. 방법은 아래와 같다.
# Amazon Linux에 Atlas CLI 저장소 등록
$ sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
# Atlas CLI 설치
$ sudo yum install mongodb-atlas -y
# Atlas CLI 버전 확인
$ atlas --version
atlascli version: 1.19.0
# MongoDB Atlas 디비 피어링 연결 확인
$ mongosh "mongodb+srv://{db-admin-username}:{db-admin-password}@{db-srv}"
새 유저 생성
Atlas CLI
를 이용하여 새로운 유저 계정을 생성할 수 있다. 아래는 새로운 유저를 생성하고 readWrite, dbAdmin 2개 권한을 부여하는 예이다.
# 새 유저 계정 생성
$ atlas dbusers create --username {new_username} --password {password} --role readWrite@{mongodb-atlas-db-name} --role dbAdmin@{mongodb-atlas-db-name} --projectId {mongodb-atlas-project-id}
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jstl
- Spring Boot
- Kendo UI
- jsp
- 태그를 입력해 주세요.
- 평속
- DynamoDB
- 구동계
- JHipster
- MySQL
- Kendo UI Web Grid
- kotlin
- maven
- 로드 바이크
- Eclipse
- Spring MVC 3
- java
- chrome
- graylog
- 자전거
- 로드바이크
- bootstrap
- CentOS
- Tomcat
- Docker
- 알뜰폰
- jpa
- spring
- node.js
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함