MongoDB Atlas とは
MongoDB Atlas (以下 Atlas という)は、MongoDB Inc.によって作られた MongoDB の DBaaS(DB as a Service) です。
Atlas を使うと、MongoDB のデプロイの簡素化、耐障害性とパフォーマンスの向上が見込めます。内部的にはAWS, Azure, Google Cloud から選んでその中でデプロイを行っています。
MongoDB とは
MongoDB は、MongoDB Inc. によって開発された NoSQL (ドキュメント指向データベース) です。
※ 詳細は割愛します
MongoDB: アプリケーション データ プラットフォーム
Database Deployment
ここからは、Atlas のリソースの中でも肝となる Database Deployment に関して説明していきます。
Atlas で DB を作成する際、Database Deployment という単位のリソースを作成し、その中に DB を作成することになります。Database Deployment には、
- クラスタ
- サーバーレスインスタンス
と、2種類あります。
Google Cloud の Tokyo リージョンは、サーバーレスインスタンスをサポートしていなかったこともあり、触っていないため以降はクラスタの説明をしていきます。
クラスタ
Database Deployment の選択肢はクラスタとサーバーレスインスタンスの2種類と上述しましたが、UI でDatabase Deployment の選択画面へ遷移すると選択肢が3つあります。
これは、クラスタの種類が Dedicated とShared の2種類あるためです。
Dedicated Cluster と Shared Cluster
- Dedicated: 一般的なProduction環境で用いられるようなクラスタタイプ
- Shared: 学習や検証などに用いるためのクラスタタイプ。使える機能に制限はあるが、無料
💡 Shared Clusterを用いたクラスタの作成方法が、公式ドキュメントや動画教材の中でまとめられています。入門には良さそうです。
Deploy a Free Cluster
M001: MongoDB Basics – Practice | MongoDB
Cluster Tier
クラスタを構築する際、Cluster Tier を選択する必要があります。
Cluster Tier は、クラスタ内のメモリ、ストレージや IOPS といった仕様を決める指標のようなもので、M10、M20、M30 と数字が大きくなるにつれてクラスタを構成するサーバーもハイスペックになっていきます。
ref: https://www.mongodb.com/docs/atlas/manage-clusters/#select-cluster-tier
また、Cluster Tier によって料金も決まります。
💡 料金に関しては、MongoDB For Startupsというスタートアップ向けのプログラムも存在し、審査が通れば無料の Atlas のクレジットをゲットできます。
オートスケール
Dedicated Cluster を選択した場合は、Cluster Tier、ストレージ容量またはその両方のオートスケールも有効にことも可能です。オートスケールはローリングベースで行われるためダウンタイムは生じません。
ref: https://www.mongodb.com/docs/atlas/cluster-autoscaling/
バックアップ
クラスタ作成時に Cloud Backup という機能を有効にすることも可能です(作成後も変更可能)。
Cloud Backup はクラウドプロバイダが提供するスナップショット機能を使ってバックアップを取ります。最短で1時間間隔でスナップショットを撮る設定が可能です。料金は $0.10/GB month。
ref: https://www.mongodb.com/docs/atlas/backup/cloud-backup/overview/
また、より高頻度でバックアップを取りたい場合、Continuous Cloud Backup という追加オプションを有効にすることで、1分間隔でバックアップを取ることが可能になります。Continuous Cloud Backup 料金はスナップショットを保存する地域と使用ストレージ量によって決まります。
ref: https://www.mongodb.com/docs/atlas/billing/cluster-configuration-costs/#continuous-cloud-backups
ネットワーク
IP アクセスリスト
Atlas では、プロジェクト単位で単一の IP または CIDR を IP アクセスリストに設定します。そのリストに含まれているところからの Database Deployment への接続のみ許可します。
ref: https://www.mongodb.com/docs/atlas/security/ip-access-list/
💡 Atlas は、Organization
> Project
> Database Deployment
という階層の管理単位で構成されています。Organization と Project が、元々の MongoDB には無い Atlas 固有の単位です。
Network Peering
Dedicated クラスタはネットワーク ピアリング接続もサポートしていて、クラウドプロバイダーとの VPC とプライベートな接続をすることができます。
ref: https://www.mongodb.com/docs/atlas/security-vpc-peering/#std-label-vpc-peering
注意:無料の Shared クラスタでは利用できません
Terraform(MongoDB Atlas Provider)
Terraform(MongoDB Atlas Provider)もあります。
Terraform Registry
例えば、Dedicated クラスタを立てるなら下記のように書きます。(詳細は割愛)
resource "mongodbatlas_cluster" "sample" {
project_id = var.mongodb_atlas_project_id
name = "sample-cluster"
cluster_type = "REPLICASET"
replication_specs {
num_shards = 1
}
cloud_backup = true
auto_scaling_disk_gb_enabled = true
auto_scaling_compute_enabled = true
auto_scaling_compute_scale_down_enabled = true
provider_name = "GCP"
provider_region_name = "NORTHEASTERN_ASIA_PACIFIC"
provider_instance_size_name = "M10"
provider_auto_scaling_compute_max_instance_size = "M20"
provider_auto_scaling_compute_min_instance_size = "M10"
disk_size_gb = 40
...
mongo_db_major_version = "5.0"
}
最後に
Atlas に関しては初めて使ったのですが、公式ドキュメントや紹介記事が多く、欲しい情報には割とすぐ辿り着けた印象です。
今回紹介したのは、Atlas が提供する機能の中でもごく一部で、ほかにも監視周りやシャードやグローバルクラスターなどいろいろな機能がありますので、実際に使う際は、公式ドキュメントを一通り眺めてみることをお勧めします。
どなたかがAtlasを使う際の参考になれば幸いです。