Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ /
Atlas Architecture Center
/

Atlas の組織、プロジェクト、クラスターに関するガイダンス

組織、プロジェクト、クラスターは、Atlas の企業資産における基盤です。

  • 組織レベルでは、セキュリティ制御を実装し、1 つ以上のプロジェクトに取り組むユーザーを作成できます。

  • プロジェクトは、より細かいセキュリティの分離と承認の境界を提供します。

  • クラスター は、Atlas のクラウドデータベースです。

このページの基本的なガイダンスを使用して、貴社の階層と予想されるクラスターおよびプロジェクトの数に基づいて、組織、プロジェクト、クラスターのレイアウトを設計してください。このガイダンスは、貴社の請求およびアクセスのニーズに合わせながら、セキュリティとパフォーマンスを当初から最適化するために役立ちます。

Atlas エンタープライズプロパティのセキュリティ設定とガバナンスを定義するには、次のレベルの階層を使用します。

Atlas 階層のレベル
説明

(任意)支払い組織

1 つの組織が他の組織の支払い組織になることができます。支払い組織では、組織横断請求を設定して、複数の組織で請求サブスクライブを共有できます。Atlasサブスクライブを確立するときに支払い組織を設定する方法の詳細については、「 請求の管理 」を参照してください。組織間請求を有効にするには、アクションを実行するユーザーが、リンクする両方の組織の組織オーナーまたは請求管理者ロールを持っている必要があります。詳しくは、「 ユーザー ロール 」を参照してください。

支払い組織は、多数の BU または独立して運用される部門を持つ大規模なエンタープライズに一般的ですが、契約や請求書は中央認証局が所有します。

組織

組織には多くのプロジェクトを含めることができ、それらのプロジェクトとその中のクラスター全体に共有統合とセキュリティ設定を適用するためのコンテナが提供されます。複数の Atlas 組織を管理する場合、Atlas フェデレーション管理コンソールは、 組織所有者 ロールを持つユーザーが SSO IdP を管理し、それらを複数の組織にリンクします。組織は多くの場合、 会社内の BU または部門にマッピングされます。組み込みの Atlas Cost Explorer は、組織レベルでクラウド費を集計し、その下にあるプロジェクト レベルとクラスター レベルの明細項目をの内訳します。請求APIを活用して、さらにカスタマイズできます。

プロジェクト

データプレーンのセキュリティ構成(データベースクラスター、ネットワークセキュリティ、その他のデータサービスを含む)は、プロジェクトレベルで行われます。プロジェクトは多くの場合、アプリケーションと環境(例:カスタマーポータルアプリケーションと本番環境)にマッピングされます。各プロジェクトごとに、選択したクラウドプロバイダーに基づいて、AWS および Azure の各リージョンに1つの専用 VPC または VNet があります。

クラスター

Atlas は、プロジェクト用に専用の VPC/VNet 内の各クラスターをプロビジョニングします。セキュリティ構成は、クラスター、データベース、およびコレクション・レベルのアクションに適用できるデータベース・ユーザのロールと権限を除き、プロジェクト内のクラスタ間で共有されます。

組織、プロジェクト、クラスターの階層を示す画像。
クリックして拡大します

マルチリージョンおよびマルチクラウド配置の場合は、地理的境界全体でパフォーマンス、セキュリティ、コンプライアンスを最適化するために、次の追加の推奨事項を検討してください。

  • レイテンシ を最小限に抑えるには、アプリケーションユーザーに最も近いリージョンにクラスターを配置します。

  • ネットワーク分離を維持するために、各プロジェクト内のリージョンごとに専用の VPC / VNet を使用します。

  • クラスターを配置する各リージョンにプライベートエンドポイントを設定して、安全で低レイテンシの接続を確保します。

  • データ レジデンシー要件が確実に満たされるように、異なる規制機関に対して個別のプロジェクトを作成します(例、 、 GDPR準拠のEUプロジェクト、 SIX 準拠の USプロジェクト)。

  • ゾーンシャーディングでグローバルクラスターを使用し、シャードキー値に基づいて読み取りと書込みを適切な地理的リージョンに自動的にルーティングします。

  • 監査するとガバナンス目的で、データ分類とリージョンコンプライアンス要件を持つプロジェクトとクラスターにタグを付けます。

  • 複数のリージョンに読み取りレプリカを持つクラスターを配置して、フェイルオーバー機能を有効にします。

  • 同じアプリケーション環境内のすべてのリージョンで一貫したバックアップスケジュールを維持します。

  • リージョン全体で障害復旧手順を定期的にテストして、ビジネス継続を確保します。

  • 管理とモニタリングを簡素化するために、クラウドプロバイダー間で一貫した命名規則を使用します。

  • 同じプロジェクト内のすべてのクラウド環境でセキュリティ構成を標準化します。

  • クロスクラウドデータレプリケーションとネットワーク接続を計画する際には、クラウドプロバイダー固有の機能と制限を考慮してください。

次の推奨事項は、すべての 配置パラダイムに適用されます。

サンドボックス、テストプロジェクトおよびクラスターを、アプリケーションプロジェクトおよびクラスターから分離するために、次の 4 つの環境を使用することを推奨いたします。

environment
説明

開発(Dev)

開発者が安全なサンドボックス環境で新しいことを自由に試すことができます。

テスト(テスト)

開発環境で作成された特定のコンポーネントまたは関数をテストします。

ステージング

すべてのコンポーネントと機能をステージングして、本番にデプロイする前にアプリケーション全体が期待どおりに動作することを確認します。ステージングはテスト環境と似ていますが、新しいコンポーネントが既存のコンポーネントと連携することが保証されます。

本番環境(Prod)

エンドユーザー向けに稼働中のアプリケーションのバックエンドです。

開発者は開発やテストのために、Atlas CLI を使用してAtlas のローカル配置を作成できます。自分のマシンからローカルで作業することで、外部の開発・テスト環境にかかるコストを削減できます。

開発者は、Dockerで Atlas CLI コマンドを実行し、コンテナを使用してローカル Atlas 配置を構築、実行、管理することもできます。コンテナは、アプリケーションの実行に必要なすべてのソフトウェアを含む標準化されたユニットです。コンテナ化により、開発者は、安全、信頼、移植性のあるテスト環境でローカル Atlas 配置を構築できます。詳細については、 Dockerを使用したローカル Atlas 配置の作成 を参照してください。

一般的には、一元的に管理される支払い組織と、支払い組織にリンクされている BU または部門ごとに 1 つの組織とすることを推奨します。次に、下位環境(開発環境またはテスト環境)と上位環境用にそれぞれ1つのクラスターを含むプロジェクトを作成してください。これらのプロジェクトでクラスターを作成できます。詳細については、推奨階層に関する次の情報を参照してください。

組織ごとに 250プロジェクトの制限に簡単に達する場合は、環境ごとに 1 つの組織を作成することをお勧めします。たとえば、下位環境と上位環境用に 1 つずつ、または開発、テスト、ステージング、本番環境でそれぞれ 1 つなどです。この設定には、追加の分離の利点があります。制限を増やすこともできます。詳細については、「 Atlas サービスの制限 」を参照してください。

BU全体で共通のチームと権限を持ち、組織ごとに発生可能な プロジェクトの上限より小さい場合は、Atlas250 組織の作成数が少なくなる次の階層を考慮してください。

他の組織がネストされている支払い組織と、その下にネストされている組織の画像。
クリックして拡大します

組織が非常に分散化されており、契約および請求の責任者としての役割を果たすための一元化された機能がない場合は、次の階層を検討してください。この階層では、各 BU、部門、またはチームがそれぞれの Atlas 組織を持っています。この階層は、各チームがかなり独立しており、社内で人員や権限を共有していない場合、またはクラウドプロバイダーのマーケットプレイスを通じて、もしくは独自の契約で直接クレジットを購入したい場合に役立ちます。この階層には支払い組織が存在しません。

上位に支払い組織がない複数の組織を示す画像。
クリックして拡大します

各環境が分離している状態を維持するには、各クラスターをその独自のプロジェクト内に配置することをお勧めします(下図を参照)。このように配置することで、管理者は各環境で異なるプロジェクト構成を維持したうえで、役割に最小限必要なアクセス権のみをユーザーに付与するという最小権限の原則を徹底できます。

クラスターの作成時に、Terraform などのオートメーションツールを使用して、プライベートエンドポイントや CMK などのプロジェクトレベルの構成をクラスター全体で共有できます。さらに、クラスター作成を自動化すると、それぞれ本番環境と開発環境向けの並列高環境と低環境の作成が標準化され、コストが節約されます。

詳細については、「 プロジェクトごとに複数のクラスターを考慮する必要がある場合 」を参照してください。

各組織内のプロジェクトごとの 1 つの配置を示す画像。
クリックして拡大します

次の図は、それぞれのプロジェクトに複数の Atlas クラスターが環境別にグループ化されている組織を示しています。同じプロジェクト内に複数のクラスターを配置すると、1 つのアプリケーションが複数のバッキング クラスターを使用する場合や、同じチームが環境全体で複数のアプリケーションを担当する場合に、管理が簡素化されます。これにより、同じプロジェクト内のすべてのクラスターが同じプロジェクト構成を共有するため、プライベートエンドポイントやカスタマーが管理するキーなどの機能のセットアップコストが簡素化されます。

しかし、このクラスター階層は最小権限の原則に違反する可能性があります。

次の両方が当てはまる場合にのみ、同じプロジェクト内に複数のクラスターを配置します。

  • プロジェクトにアクセスできる各チームノードは、プロジェクト内の他のすべてのアプリケーションとクラスターで作業しています。

  • 開発環境およびテスト環境用のクラスターを作成しています。ステージング環境と本番環境では、同じプロジェクト内のクラスターは同じアプリケーションに属し、 同じチームによって管理される ことをお勧めします。

環境ごとにグループ化された配置を示す画像。
クリックして拡大します

レポートおよび統合のための解析を容易にするために、次の詳細を使用してクラスターまたはプロジェクトにタグを付けることをお勧めします。

  • BU または部門

  • teamName

  • ApplicationName

  • environment

  • バージョン

  • メールでの問い合わせ

  • 重要度(PIIPHI などの機密性の高い分類を含む、クラスターに保存されているデータの階層を示す)

タグを使用した請求データの解析について詳しくは、「Atlas 請求データの機能」を参照してください。

専用配置(クラスター サイズ M10 以上)では、Atlas はリソースを排他的に割り当てます。共有クラスターより安全性とパフォーマンスに優れているため、本番環境でのユースケースには専用配置がお勧めです。

次のクラスター サイズガイドでは、ソフトウェア開発やインフラストラクチャに使用される一般的な例えである「t シャット サイジング」を使用して、簡素化された方法でキャパシティープランニングを説明します。T シャットのサイズ設定に関する推奨事項は、サイズ分析のおおよその開始点としてのみ使用してください。クラスターのサイズ設定は、リソースニーズ、パフォーマンス要件、ワークロード特性、増加予想の変化に基づいて行われる反復的なプロセスです。

重要

このガイダンスは、重要なアプリケーション、大メモリのワークロード、高 CPU のワークロードを除外します。このようなユースケースは、 カスタマイズされたガイダンスについては、 MongoDBサポート にお問い合わせください。

配置に必要なクラスター リソースは、組織のおおよそのデータ サイズとワークロードを使用して推定できます。

  • 必要なストレージの合計:未加工データ全体の 50%

  • 必要な RAM の合計: 未加工データ全体の 10%

  • 必要な CPU コアの合計 :データベース操作 1 秒あたりの予想ピーク読み取り/書込み操作数 割かつ 4000

  • 必要なストレージ IOPS の合計:データベースの読み取り/書き込み操作の数が 1 秒あたりに増加することが予想されます(最小 IOPS = 5%、最大 IOPS = 95%)

次のクラスター サイズガイドを使用して、オーバープロビジョニングせずにパフォーマンスを確保するクラスター層を選択します。この表には、各クラスター層のデフォルトのストレージとパフォーマンス機能、およびクラスター層がステージングおよび本番環境に適しているかどうかが表示されています。

クラスター サイズガイドには、クラスターの合計データ サイズとデフォルトIOPS の期待値も含まれています。これらは追加の構成で増やすことができます。次のストレージ推奨事項は、クラスター全体ではなく、シャードごとであることに注意してください。詳しくは、「 Atlas のスケーラビリティに関するガイダンス 」を参照してください。

T シャードのサイズ
クラスター階層
ストレージ範囲: AWS/Google Cloud/ Azure
CPUs (#)
デフォルトの RAM
デフォルトの IOPS
予想される合計データサイズ
予想されるピーク読み取り /書込み
に適しています

M10 [1]

2 GBから 128 GB

2

2 GB

1000

1 GBから 10 GB

120

開発/テストのみ

Med

M30

8 GB から 512 GB

2

8 GB

3000

20 GBから 50 GB

3000

Prod

M50

8 GB から 4 TB

16

32 GB

3000

360 GBから 420 GB

3000

Prod

X-Large

M80

8 GB から 4 TB

32

128 GB

3000

1200 GBから 1750 GB

6000

Prod

[1] M10 は、共有 CPU 階層であり、高度に規制されたセカンダリまたは機密データの場合、最小かつ最小の開始階層は M30 である必要があります。

例、架空の finnish会社、MongoFinance が、合計で 400 GBの処理データを保存する必要があるとします。ピークアクティビティでは、MongoFinance の従業員とカスタマーは、MongoFinance データベースへの 1 秒あたり最大 3000 の読み取りまたは書込みを実行します。 MongoFinance のストレージとパフォーマンス要件は、大規模なまたは M50 のクラスター層で最適に満たされます。

クラスター階層とそれをサポートするリージョンの詳細については、各クラウドプロバイダーに関する Atlas ドキュメントをご覧ください。

Tip

すべてのピリオドにわたって推奨事項を強制する Terraform の例については、 Githubの次のいずれかの例を参照してください。

次の例では、オートメーション用の Atlas ツール を使用して組織、プロジェクト、クラスターを作成します。

これらの例では、次のようなその他の推奨される構成も適用されます。

  • 開発用またはテスト環境では、クラスター階層が M10 に設定されています。アプリケーションサイズに推奨されるクラスター層については、 クラスター サイズガイドを使用してください。

  • 単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。

  • この例では、 AWS、 Azure、Google Cloud をどちらも使用しています。これら 3 つのクラウドプロバイダーのいずれかを使用できますが、クラウドプロバイダーと一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンの詳細については、「 クラウドプロバイダー 」を参照してください。

  • 中規模アプリケーション用のクラスター階層が M30 に設定されました。クラスターサイズガイドを使用して、アプリケーションのサイズに応じた推奨クラスター階層を確認してください。

  • 単一リージョン、3 ノード レプリカ セットまたはシャード配置トポロジー。

  • この例では、 AWS、 Azure、Google Cloud をどちらも使用しています。これら 3 つのクラウドプロバイダーのいずれかを使用できますが、クラウドプロバイダーと一致するようにリージョン名を変更する必要があります。クラウドプロバイダーとそのリージョンの詳細については、「 クラウドプロバイダー 」を参照してください。

注意

Atlas CLI を使用してリソースを作成する前に、次の手順を実行する必要があります。

BU に対して次のコマンドを実行します。ID と名前を変更して、実際の 値を使用します。

atlas organizations create ConsumerProducts --ownerId 508bb8f5f11b8e3488a0e99e --apiKeyRole ORG_OWNER --apiKeyDescription consumer-products-key

この例に関する構成オプションと詳細については、atlas organizations create を参照してください。

Atlas Administration APIを使用して、組織を作成し、支払い組織にプログラムでリンクすることができます。そのためには、https://cloud.mongodb.com/api/atlas/v2/orgs エンドポイントに POSTリクエストを送信し、federationSettingsIdフィールドに支払い組織IDを指定します。リクエストのサービス アカウントまたはAPIキーには「組織オーナー」のロールがあり、リクエストする組織は支払い組織である必要があります。

次の例では、cURL を使用してリクエストを送信します。

curl --location '/api/atlas/v2/orgs?envelope=false&pretty=false' \
--header 'Content-Type: application/vnd.atlas.2023-01-01+json' \
--header 'Accept: application/vnd.atlas.2023-01-01+json' \
--data '{
"name": "<organization name>",
"apiKey": {
"desc": "<organization description>",
"roles": [
"ORG_MEMBER"
]
},
"federationSettingsId": "<ID of org to link to>",
"orgOwnerId": "<organization owners ID>",
"skipDefaultAlertsSettings": false
}'

上記のAPI呼び出しの詳細については、「 Atlas 組織がAPIドキュメントを作成 」を参照してください。

ユーザー ID と組織 ID を取得するには、次のコマンドをご覧ください。

アプリケーションと環境のペアごとに次のコマンドを実行します。ID と名前を変更して、 値を使用します。

atlas projects create "Customer Portal - Prod" --tag environment=production --orgId 32b6e34b3d91647abb20e7b8

その他の構成オプションとこの例に関する情報については、「 Atlas プロジェクト作成 」を参照してください。

プロジェクト ID を取得するには、次のコマンドをご覧ください。

ステージング環境と本番環境では、クラスターをプロビジョニングする際に、カスタマー キー管理による暗号化を有効にすることを推奨します。規制の厳しい業界にいる場合や機密データを保存している場合を除き、開発およびテスト環境では、コストを削減するためにカスタマー キー管理による暗号化を省略することを検討してください。詳細については、「Atlas の組織、プロジェクト、およびクラスターに関する推奨事項」をご覧ください。

Atlas CLI を使用して、カスタマーキー管理で暗号化を管理することはできません。代わりに、次のメソッドを使用してください。

開発環境とテスト環境用の単一リージョン クラスターを作成するには、作成したプロジェクトごとに次のコマンドを実行します。 ID と名前を変更して、 値を使用します。

atlas clusters create CustomerPortalDev \
--projectId 56fd11f25f23b33ef4c2a331 \
--region EASTERN_US \
--members 3 \
--tier M10 \
--provider GCP \
--mdbVersion 8.0 \
--diskSizeGB 30 \
--tag bu=ConsumerProducts \
--tag teamName=TeamA \
--tag appName=ProductManagementApp \
--tag env=Production \
--tag version=8.0 \
--tag email=marissa@acme.com \
--watch

マルチリージョンクラスターを構成するには、作成したプロジェクトごとに次の cluster.jsonファイルを作成します。 ID と名前を変更して、 値を使用します。

{
"name": "CustomerPortalDev",
"projectId": "56fd11f25f23b33ef4c2a331",
"clusterType": "REPLICASET",
"diskSizeGB": 30,
"mongoDBMajorVersion": "8.0",
"backupEnabled": true,
"replicationSpecs": [
{
"numShards": 1,
"regionConfigs": [
{
"providerName": "GCP",
"regionName": "EASTERN_US",
"members": 3,
"priority": 7
},
{
"providerName": "GCP",
"regionName": "CENTRAL_US",
"members": 2,
"priority": 5
},
{
"providerName": "GCP",
"regionName": "WESTERN_US",
"members": 2,
"priority": 4
}
]
}
],
"tags": [
{ "key": "bu", "value": "ConsumerProducts" },
{ "key": "teamName", "value": "TeamA" },
{ "key": "appName", "value": "ProductManagementApp" },
{ "key": "env", "value": "Production" },
{ "key": "version", "value": "8.0" },
{ "key": "email", "value": "marissa@acme.com" }
]
}

上記の構成ファイルを作成したら、次のコマンドを実行してクラスターを作成します。

atlas clusters create --file <path to your configuration file>

ステージング環境と本番環境用の単一リージョンクラスターを作成するには、作成したプロジェクトごとに次の cluster.jsonファイルを作成します。 ID と名前を変更して、 値を使用します。

{
"clusterType": "REPLICASET",
"links": [],
"name": "CustomerPortalProd",
"mongoDBMajorVersion": "8.0",
"replicationSpecs": [
{
"numShards": 1,
"regionConfigs": [
{
"electableSpecs": {
"instanceSize": "M30",
"nodeCount": 3
},
"priority": 7,
"providerName": "GCP",
"regionName": "EASTERN_US",
"analyticsSpecs": {
"nodeCount": 0,
"instanceSize": "M30"
},
"autoScaling": {
"compute": {
"enabled": false,
"scaleDownEnabled": false
},
"diskGB": {
"enabled": false
}
},
"readOnlySpecs": {
"nodeCount": 0,
"instanceSize": "M30"
}
}
],
"zoneName": "Zone 1"
}
],
"tag" : [{
"bu": "ConsumerProducts",
"teamName": "TeamA",
"appName": "ProductManagementApp",
"env": "Production",
"version": "8.0",
"email": "marissa@acme.com"
}]
}

cluster.json ファイルを作成した後、作成した各プロジェクトに対して次のコマンドを実行します。このコマンドは、cluster.json ファイルを使用してクラスターを作成します。

atlas cluster create --projectId 5e2211c17a3e5a48f5497de3 --file cluster.json

マルチリージョンクラスターを構成するには、次の例に示すように、前述の cluster.jsonファイルの replicationSpecs 配列を変更して、複数のリージョンを指定します。

{
"replicationSpecs": [
{
"numShards": 1,
"regionConfigs": [
{
"electableSpecs": {
"instanceSize": "M30",
"nodeCount": 3
},
"priority": 7,
"providerName": "GCP",
"regionName": "EASTERN_US",
"analyticsSpecs": {
"nodeCount": 0,
"instanceSize": "M30"
},
"autoScaling": {
"compute": {
"enabled": false,
"scaleDownEnabled": false
},
"diskGB": {
"enabled": false
}
},
"readOnlySpecs": {
"nodeCount": 0,
"instanceSize": "M30"
}
},
{
"electableSpecs": {
"instanceSize": "M30",
"nodeCount": 3
},
"priority": 5,
"providerName": "GCP",
"regionName": "CENTRAL_US",
"analyticsSpecs": {
"nodeCount": 0,
"instanceSize": "M30"
},
"autoScaling": {
"compute": {
"enabled": false,
"scaleDownEnabled": false
},
"diskGB": {
"enabled": false
}
},
"readOnlySpecs": {
"nodeCount": 0,
"instanceSize": "M30"
}
},
{
"electableSpecs": {
"instanceSize": "M30",
"nodeCount": 3
},
"priority": 6,
"providerName": "GCP",
"regionName": "WESTERN_US",
"analyticsSpecs": {
"nodeCount": 0,
"instanceSize": "M30"
},
"autoScaling": {
"compute": {
"enabled": false,
"scaleDownEnabled": false
},
"diskGB": {
"enabled": false
}
},
"readOnlySpecs": {
"nodeCount": 0,
"instanceSize": "M30"
}
}
],
"zoneName": "Zone 1"
}
],
}

上記の構成ファイルを作成したら、次のコマンドを実行してクラスターを作成します。

atlas clusters create --file <path to your configuration file>

その他の構成オプションとこれらの例については、「 Atlas クラスターの作成 」を参照してください。

注意

Terraform でリソースを作成する前に、次の手順を実行する必要があります。

  • 支払い組織を作成し、その支払い組織の API キーを作成します。ターミナルで次のコマンドを実行し、API キーを環境変数として保存します。

    export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
    export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
  • Terraform のインストール

開発環境およびテスト環境では、アプリケーションと環境のペアごとに次のファイルを作成します。各アプリケーションと環境ペアのファイルを 独自のディレクトリに配置します。ID と名前を変更して、 値を使用します。

# Create a Project
resource "mongodbatlas_project" "atlas-project" {
org_id = var.atlas_org_id
name = var.atlas_project_name
}
# Create an Atlas Advanced Cluster
resource "mongodbatlas_advanced_cluster" "atlas-cluster" {
project_id = mongodbatlas_project.atlas-project.id
name = "ClusterPortalDev"
cluster_type = "REPLICASET"
mongo_db_major_version = var.mongodb_version
replication_specs {
region_configs {
electable_specs {
instance_size = var.cluster_instance_size_name
node_count = 3
}
priority = 7
provider_name = var.cloud_provider
region_name = var.atlas_region
}
}
tags {
key = "BU"
value = "ConsumerProducts"
}
tags {
key = "TeamName"
value = "TeamA"
}
tags {
key = "AppName"
value = "ProductManagementApp"
}
tags {
key = "Env"
value = "Test"
}
tags {
key = "Version"
value = "8.0"
}
tags {
key = "Email"
value = "marissa@acme.com"
}
}
# Outputs to Display
output "atlas_cluster_connection_string" { value = mongodbatlas_advanced_cluster.atlas-cluster.connection_strings.0.standard_srv }
output "project_name" { value = mongodbatlas_project.atlas-project.name }

注意

マルチリージョンクラスターを作成するには、独自の region_configsオブジェクトで各リージョンを指定し、それを replication_specsオブジェクトにネストします。 priority フィールドは降順で定義する必要があり、次の例に示すように、71 の間の値で構成されている必要があります。

replication_specs {
region_configs {
electable_specs {
instance_size = "M10"
node_count = 2
}
provider_name = "GCP"
priority = 7
region_name = "NORTH_AMERICA_NORTHEAST_1"
}
region_configs {
electable_specs {
instance_size = "M10"
node_count = 3
}
provider_name = "GCP"
priority = 6
region_name = "WESTERN_US"
}
}
# Atlas Organization ID
variable "atlas_org_id" {
type = string
description = "Atlas Organization ID"
}
# Atlas Project Name
variable "atlas_project_name" {
type = string
description = "Atlas Project Name"
}
# Atlas Project Environment
variable "environment" {
type = string
description = "The environment to be built"
}
# Cluster Instance Size Name
variable "cluster_instance_size_name" {
type = string
description = "Cluster instance size name"
}
# Cloud Provider to Host Atlas Cluster
variable "cloud_provider" {
type = string
description = "AWS or GCP or Azure"
}
# Atlas Region
variable "atlas_region" {
type = string
description = "Atlas region where resources will be created"
}
# MongoDB Version
variable "mongodb_version" {
type = string
description = "MongoDB Version"
}
# Atlas Group Name
variable "atlas_group_name" {
type = string
description = "Atlas Group Name"
}
atlas_org_id = "32b6e34b3d91647abb20e7b8"
atlas_project_name = "Customer Portal - Dev"
environment = "dev"
cluster_instance_size_name = "M10"
cloud_provider = "AWS"
atlas_region = "US_WEST_2"
mongodb_version = "8.0"
# Define the MongoDB Atlas Provider
terraform {
required_providers {
mongodbatlas = {
source = "mongodb/mongodbatlas"
}
}
required_version = ">= 0.13"
}

ステージング環境と本番環境において、各アプリケーションと環境のペアごとに以下のファイルを作成します。各アプリケーションと環境のペアごとに、それぞれのディレクトリ内でファイルを配置します。ID と名前を変更して、自分の値を使用します。

# Create a Group to Assign to Project
resource "mongodbatlas_team" "project_group" {
org_id = var.atlas_org_id
name = var.atlas_group_name
usernames = [
"user1@example.com",
"user2@example.com"
]
}
# Create a Project
resource "mongodbatlas_project" "atlas-project" {
org_id = var.atlas_org_id
name = var.atlas_project_name
# Assign the Project the Group with Specific Roles
teams {
team_id = mongodbatlas_team.project_group.team_id
role_names = ["GROUP_READ_ONLY", "GROUP_CLUSTER_MANAGER"]
}
}
# Create an Atlas Advanced Cluster
resource "mongodbatlas_advanced_cluster" "atlas-cluster" {
project_id = mongodbatlas_project.atlas-project.id
name = "ClusterPortalProd"
cluster_type = "REPLICASET"
mongo_db_major_version = var.mongodb_version
replication_specs {
region_configs {
electable_specs {
instance_size = var.cluster_instance_size_name
node_count = 3
}
priority = 7
provider_name = var.cloud_provider
region_name = var.atlas_region
}
}
tags {
key = "BU"
value = "ConsumerProducts"
}
tags {
key = "TeamName"
value = "TeamA"
}
tags {
key = "AppName"
value = "ProductManagementApp"
}
tags {
key = "Env"
value = "Production"
}
tags {
key = "Version"
value = "8.0"
}
tags {
key = "Email"
value = "marissa@acme.com"
}
}
# Outputs to Display
output "atlas_cluster_connection_string" { value = mongodbatlas_advanced_cluster.atlas-cluster.connection_strings.0.standard_srv }
output "project_name" { value = mongodbatlas_project.atlas-project.name }

注意

マルチリージョンクラスターを作成するには、次の例に示すように、各リージョンを独自の region_configsオブジェクトで指定し、replication_specsオブジェクトにネストします。

replication_specs {
region_configs {
electable_specs {
instance_size = "M10"
node_count = 2
}
provider_name = "GCP"
priority = 7
region_name = "NORTH_AMERICA_NORTHEAST_1"
}
region_configs {
electable_specs {
instance_size = "M10"
node_count = 3
}
provider_name = "GCP"
priority = 6
region_name = "WESTERN_US"
}
}
# Atlas Organization ID
variable "atlas_org_id" {
type = string
description = "Atlas Organization ID"
}
# Atlas Project Name
variable "atlas_project_name" {
type = string
description = "Atlas Project Name"
}
# Atlas Project Environment
variable "environment" {
type = string
description = "The environment to be built"
}
# Cluster Instance Size Name
variable "cluster_instance_size_name" {
type = string
description = "Cluster instance size name"
}
# Cloud Provider to Host Atlas Cluster
variable "cloud_provider" {
type = string
description = "AWS or GCP or Azure"
}
# Atlas Region
variable "atlas_region" {
type = string
description = "Atlas region where resources will be created"
}
# MongoDB Version
variable "mongodb_version" {
type = string
description = "MongoDB Version"
}
# Atlas Group Name
variable "atlas_group_name" {
type = string
description = "Atlas Group Name"
}
atlas_org_id = "32b6e34b3d91647abb20e7b8"
atlas_project_name = "Customer Portal - Prod"
environment = "prod"
cluster_instance_size_name = "M30"
cloud_provider = "AWS"
atlas_region = "US_WEST_2"
mongodb_version = "8.0"
atlas_group_name = "Atlas Group"
# Define the MongoDB Atlas Provider
terraform {
required_providers {
mongodbatlas = {
source = "mongodb/mongodbatlas"
}
}
required_version = ">= 0.13"
}

この例に関するその他の設定オプションや情報については、「MongoDB & HashiCorp Terraform」およびMongoDB Terraform のブログ記事をご覧ください。

ファイルを作成した後、各アプリケーションと環境ペアのディレクトリに移動し、次のコマンドを実行して Terraform を初期化します。

terraform init

Terraform プランを表示するには、次のコマンドを実行します。

terraform plan

次のコマンドを実行して、アプリケーションと環境のペアに対して 1 つのプロジェクトと 1 つのデプロイメントを作成します。コマンドは、ファイルと MongoDB & HashiCorp Terraform を使用して、プロジェクトとクラスターを作成します。

terraform apply

プロンプトが表示されたら、yes を入力し、Enter を押して設定を適用します。

組織、プロジェクト、クラスターの階層とサイズを計画した後、次の推奨リソースを参照するか、左側のナビゲーションを使用して、Well-Architected Framework の各柱の機能とベスト プラクティスを見つけます。

戻る

ハイブリッド

項目一覧