AWSでMongoDBを使うには?基本を紹介

はい、承知いたしました。AWSでMongoDBを利用するための詳細な解説記事を、約5000語のボリュームで記述します。


AWSでMongoDBを使うには?基本から応用まで徹底解説

はじめに

現代のアプリケーション開発において、データの取り扱いは最も重要な要素の一つです。特に、柔軟性やスケーラビリティが求められるWebサービスやモバイルアプリケーションでは、従来のリレーショナルデータベース(RDBMS)だけでは対応が難しいケースが増えています。そこで注目されているのが、NoSQLデータベースであり、その中でもドキュメント指向データベースの代表格であるMongoDBです。

MongoDBは、JSONライクな形式(BSON)でデータを格納し、スキーマレスまたは柔軟なスキーマ設計を可能にすることで、変化の激しい開発要件に迅速に対応できます。また、分散データベースとしての特性を持ち、水平スケーリング(シャーディング)や高可用性構成(レプリカセット)を比較的容易に実現できることから、多くの企業で採用が進んでいます。

一方、クラウドコンピューティングプラットフォームの最大手であるAmazon Web Services (AWS) は、インフラストラクチャ、データベース、分析、機械学習など、幅広いサービスを提供しています。AWSを利用することで、インフラストラクチャの調達や管理の負荷を軽減し、必要に応じてリソースを柔軟にスケールさせることが可能です。

このMongoDBとAWSという強力な組み合わせをどのように活用するかは、アプリケーションの特性、運用体制、コストなど、様々な要因によって最適な選択肢が変わってきます。

この記事では、AWS上でMongoDBを利用するための主な選択肢とその特徴、メリット・デメリット、具体的な利用手順、そして運用・管理のポイントについて、約5000語の詳細な解説を行います。これからAWSでMongoDBの利用を検討している方、あるいは現在利用しているが他の選択肢と比較検討したいと考えている方にとって、意思決定の参考となる情報を提供することを目指します。

MongoDBとAWS、それぞれの強み

AWS上でMongoDBを使うメリットを理解するために、まずそれぞれの基本的な強みを確認しておきましょう。

MongoDBの強み:

  • 柔軟なスキーマ: ドキュメント指向であるため、フィールドの追加や削除が容易で、アジャイル開発や継続的な機能追加に適しています。
  • 高い開発効率: JSON/BSON形式は開発者にとって扱いやすく、オブジェクト指向言語との親和性が高いです。
  • スケールアウト: レプリカセットによる高可用性と、シャーディングによる水平スケーリングを標準機能として提供します。
  • 豊富な機能: アトミックな操作、トランザクション(分散トランザクションも含む)、強力なクエリ機能(Aggregation Pipeline)、全文検索、地理空間インデックスなど、多機能です。

AWSの強み:

  • スケーラビリティと柔軟性: 必要に応じてサーバーリソースを増減できます。
  • 高可用性と耐久性: 複数のデータセンター(アベイラビリティゾーン)を利用することで、障害に強いシステムを構築できます。
  • 多様なサービス連携: ストレージ(S3, EBS)、ネットワーキング(VPC, Route 53)、監視(CloudWatch)、セキュリティ(IAM, Security Group)、分析など、他のAWSサービスと連携することで、より高度なシステムを構築できます。
  • コスト効率: 従量課金モデルが基本であり、リザーブドインスタンスやSavings Plansなどを活用することでコストを最適化できます。
  • 運用負荷軽減: マネージドサービスを利用することで、インフラストラクチャの運用・管理から解放されます。

AWS上でMongoDBを利用することは、MongoDBのデータ構造の柔軟性とスケーラビリティを、AWSの堅牢なインフラストラクチャと豊富なマネージドサービスの恩恵を受けながら享受できることを意味します。これにより、アプリケーション開発者はインフラの心配をすることなく、ビジネスロジックに集中できるようになります。

AWSでMongoDBを利用するための主な選択肢

AWS上でMongoDBを利用するには、大きく分けて以下の3つの方法があります。

  1. Amazon DocumentDB (with MongoDB compatibility): AWSが提供する、MongoDB互換のマネージド型ドキュメントデータベースサービス。
  2. MongoDB Atlas on AWS: MongoDB社が提供する、AWS上で動作するフルマネージド型MongoDBサービス。
  3. 自前のEC2インスタンスにMongoDBをインストール・運用: AWSの仮想サーバーであるEC2インスタンス上に、自分でMongoDBソフトウェアをインストールし運用する方法。

これらの選択肢は、それぞれに異なる特徴、メリット、デメリットを持ちます。自身のアプリケーションの要件、運用体制、予算などを考慮して、最適な選択を行うことが重要です。以下で、それぞれの選択肢について詳細に見ていきましょう。

選択肢1: Amazon DocumentDB (with MongoDB compatibility)

概要

Amazon DocumentDBは、AWSが提供する、可用性が高く、耐久性があり、フルマネージドなドキュメントデータベースサービスです。「MongoDB互換性を持つ」という点が重要なポイントです。DocumentDBは、MongoDBのコードベースを使用しているわけではなく、独自のアーキテクチャに基づいていますが、MongoDB 3.6および4.0のAPI、ドライバー、ツールとの互換性(Wire Protocol互換性)を提供することで、既存のMongoDBアプリケーションからの移行を容易にしています。

これにより、開発者はMongoDBの柔軟なドキュメントモデルとクエリ言語を利用しつつ、AWSが提供するマネージドサービスの利便性を享受できます。

特徴

  • AWSネイティブなマネージドサービス: AWSの他のサービス(VPC, IAM, CloudWatchなど)との連携が容易です。
  • 高い可用性と耐久性:
    • ストレージは3つのアベイラビリティゾーンに自動的に複製され、ノード障害やストレージ障害に対する高い耐久性を持ちます。
    • インスタンスはPrimaryとReplicaに分かれ、Primaryインスタンスに障害が発生した場合、自動的にReplicaインスタンスがPrimaryに昇格します(フェイルオーバー)。
    • 最大15個のリードレプリカを作成でき、読み込み処理を分散できます。
  • スケーラビリティ:
    • ストレージとコンピュート(インスタンス)が分離されているため、ストレージ容量は必要に応じて自動的に拡張されます(最大128TiB)。
    • インスタンスのスケーリング(インスタンスタイプの変更)や、リードレプリカの追加・削除による読み込みスケーリングが可能です。
  • 運用負荷の軽減:
    • ハードウェアプロビジョニング、データベースのセットアップ、パッチ適用、バックアップ、監視、障害検知と復旧などの運用タスクはAWSが自動で行います。
  • セキュリティ:
    • VPC内での起動が必須であり、ネットワークレベルでのアクセス制御が容易です(セキュリティグループ)。
    • AWS IAMと連携したアクセス制御が可能です。
    • 保管時のデータと転送中のデータの両方で暗号化をサポートします。
  • コスト効率: ストレージとI/O、インスタンスの利用時間に対して課金されます。マネージドサービスであるため、運用コストを人件費として削減できます。
  • MongoDB互換性: MongoDB 3.6/4.0のWire Protocol互換性を提供します。既存のMongoDBドライバーやツールを多くの場合はそのまま利用できます。

MongoDB互換性に関する注意点

DocumentDBは「MongoDB互換性を持つサービス」であり、完全にMongoDBと同じではありません。特に、以下の点に注意が必要です。

  • 特定の機能の非サポート: MongoDBの最新バージョンで追加された機能(例: トランザクションの強化、特定のオペレーター、全文検索エンジンなど)や、一部の管理コマンド、ストレージエンジンオプションなどはサポートされていません。サポートされている機能とオペレーターのリストは公式ドキュメントで確認が必要です。
  • パフォーマンス特性の違い: 基盤となるアーキテクチャが異なるため、同じクエリでもパフォーマンス特性が異なる場合があります。移行前には十分なパフォーマンステストが必要です。
  • 管理方法の違い: AWSコンソール、AWS CLI、またはAWS SDKを通じて管理します。MongoDBのシェルコマンドやツール(mongostat, mongotopなど)の一部はそのまま利用できないか、挙動が異なる場合があります。

これらの理由から、既存のMongoDBアプリケーションをDocumentDBに移行する場合は、互換性テストが不可欠です。新規に開発する場合は、DocumentDBでサポートされている機能範囲で設計する必要があります。

利用開始手順(AWSコンソールを使用)

  1. AWSコンソールにサインイン: DocumentDBコンソールにアクセスします。
  2. クラスターの作成: 「クラスターの作成」ボタンをクリックします。
  3. エンジンの選択: DocumentDBが選択されていることを確認します。
  4. バージョン: 利用可能なバージョン(例: 4.0, 3.6)を選択します。通常は最新バージョンを選択します。
  5. クラスターの構成:
    • インスタンス数: Primaryインスタンスに加えて、作成するリードレプリカインスタンスの数を指定します(後で追加・削除可能)。
    • インスタンスクラス: インスタンスタイプを選択します(例: db.r5.large, db.r5.xlargeなど)。ワークロードと必要なリソース(vCPU, メモリ)に応じて選択します。
    • ストレージタイプ: StandardまたはI/O-Optimizedを選択します。I/O集約型ワークロードではI/O-Optimizedがコスト効率が良い場合があります。
  6. 認証:
    • マスターユーザー名とパスワードを設定します。これはDocumentDBクラスターの管理アクセスに使用されます。
  7. ネットワーク設定:
    • VPC: DocumentDBを配置するVirtual Private Cloud (VPC) を選択します。セキュリティのため、通常はPrivate Subnetに配置します。
    • サブネットグループ: クラスターを起動するサブネットのグループを選択します。複数のアベイラビリティゾーンにまたがるサブネットを選択することで、高可用性を実現できます。
    • VPCセキュリティグループ: DocumentDBインスタンスへのネットワークアクセスを許可するセキュリティグループを指定します。通常は、アプリケーションサーバーが配置されているセキュリティグループからのアクセスを許可します。
  8. クラスターオプション:
    • ポート: デフォルトは27017ですが、必要に応じて変更できます。
    • クラスター識別子: クラスターの一意な名前を指定します。
    • バックアップ保持期間: 自動バックアップを保持する期間を指定します(デフォルト7日間、最大35日間)。
    • 暗号化: 保管時のデータの暗号化を有効にするか選択します(デフォルトで有効化が推奨されます)。
    • メジャーバージョン自動アップグレード: 新しいメジャーバージョンがリリースされた際に自動アップグレードするか選択します。
  9. クラスターの作成: 設定を確認し、「クラスターの作成」ボタンをクリックします。

クラスターの作成には数分から数十分かかる場合があります。作成が完了すると、クラスターのエンドポイントとポート番号が確認できます。

接続方法

DocumentDBクラスターはVPC内に起動されるため、外部から直接接続することはできません。接続元はDocumentDBと同じVPC内、またはVPC PeeringやAWS Direct Connectなどで接続されたネットワーク内に配置されている必要があります。

一般的な接続方法としては、DocumentDBと同じVPC内のEC2インスタンスから接続します。ローカル開発環境から接続したい場合は、以下の方法があります。

  • 踏み台サーバー (Bastion Host): VPC内のパブリックサブネットに配置したEC2インスタンスを経由して接続します。
  • SSHトンネル: VPC内のEC2インスタンスに対してSSHポートフォワーディングを設定し、ローカルポートとDocumentDBのエンドポイントをマッピングして接続します。
  • AWS Systems Manager Session Manager: EC2インスタンスにSSH接続することなく、セキュアなトンネルを構築して接続できます。

接続元から、DocumentDBのエンドポイント、ポート番号、マスターユーザー名、パスワードを使用して接続します。MongoDBドライバーやmongoシェル(mongosh)を使用する場合、TLS/SSL接続が必須です。接続文字列には通常、tls=trueまたはssl=trueのオプションを含め、適切なTLS/SSL証明書を設定する必要があります。

“`bash

例:SSHトンネル経由で接続する場合 (ポート27017をローカルの27017にフォワード)

ssh -N -L 27017:your-documentdb-endpoint.ap-northeast-1.docdb.amazonaws.com:27017 ec2-user@your-bastion-host-public-ip

別のターミナルからmongoシェルで接続

mongosh –tls –tlsCAFile rds-combined-ca-bundle.pem –host localhost:27017 -u your-master-username -p

プロンプトが表示されたらマスターパスワードを入力

``rds-combined-ca-bundle.pem`はAWSのCA証明書バンドルで、DocumentDBとのTLS接続に使用します。AWSのウェブサイトからダウンロードできます。

運用・管理

DocumentDBの運用・管理は、主にAWSコンソール、AWS CLI、またはAWS SDKを通じて行います。

  • 監視: Amazon CloudWatchと連携しており、CPU使用率、メモリ使用率、接続数、スループット(リクエスト数、I/O)、レプリカラグなどの主要なメトリクスを監視できます。アラームを設定して、異常が発生した場合に通知を受け取ることも可能です。パフォーマンスチューニングの際は、これらのメトリクスが重要な手がかりとなります。
  • バックアップとリストア: 自動バックアップはデフォルトで有効になっており、指定した期間(最大35日間)保持されます。特定の時点へのポイントインタイムリカバリも可能です。手動スナップショットを作成することもできます。これらのバックアップデータから新しいクラスターをリストアできます。
  • スケーリング:
    • コンピュート: インスタンスクラス(サイズ)の変更は、DocumentDBクラスターを一時停止し、ダウンタイムを伴います。
    • 読み込み: リードレプリカインスタンスを追加・削除することで、読み込みスループットをスケールさせることができます。リードレプリカの追加は通常、ダウンタイムなしで行えます。
    • ストレージ: ストレージは自動的にスケールするため、ユーザー側での操作は不要です。
  • セキュリティ:
    • セキュリティグループ: 許可するIPアドレスやセキュリティグループを適切に設定し、データベースへのアクセス元を制限します。
    • IAM: IAMユーザーやロールに対して、DocumentDBリソースへのアクセス権限(クラスター作成、変更、削除など)を付与します。
    • データベース認証: マスターユーザーや追加で作成したデータベースユーザーによる認証を有効にします。
  • イベント通知: DocumentDBクラスターに関する重要なイベント(フェイルオーバー、バックアップ完了など)が発生した際に、SNSを通じて通知を受け取るように設定できます。

メリットとデメリット

メリット:

  • 運用負荷が低い: フルマネージドサービスのため、OSやデータベースソフトウェアの管理(インストール、パッチ適用、アップデートなど)から解放されます。
  • 高い可用性と耐久性: AWSのインフラストラクチャにより、デフォルトで高いレベルの可用性と耐久性が提供されます。
  • AWSサービスとの連携: CloudWatch, IAM, VPCなど、既存のAWSサービスとの連携が容易です。
  • スケーラビリティ: ストレージの自動拡張、リードレプリカによる読み込みスケーリングが容易です。

デメリット:

  • MongoDBの最新機能や一部機能が利用できない: MongoDBの最新バージョンで追加された機能や、特定のコマンド・オペレーターがサポートされていない場合があります。
  • 互換性の確認が必要: 既存のMongoDBアプリケーションを移行する場合、互換性テストとコード修正が必要になる可能性があります。
  • 料金体系が複雑になる場合がある: インスタンスサイズ、I/O、ストレージ、バックアップストレージなど複数の要素で課金されます。
  • MongoDB社独自のツールやサービスとの連携が限定的: MongoDB Atlasが提供するような付加サービス(Atlas Search, Atlas Data Lakeなど)は利用できません。

どんなケースに適しているか

  • 既存のMongoDBアプリケーションをAWSに移行したいが、データベースの運用・管理はAWSに任せたい場合。
  • 新規にドキュメントデータベースを利用したいが、MongoDBの特定の高度な機能は必要なく、AWSネイティブなサービスとして運用したい場合。
  • AWSの他のサービスと密接に連携するアプリケーションを開発する場合。
  • 運用チームの人数が少なく、データベースの専門家がいない場合。

選択肢2: MongoDB Atlas on AWS

概要

MongoDB Atlasは、MongoDB社が提供する、グローバルなクラウドデータベースサービスです。AWSを含む主要なクラウドプロバイダー(AWS, Azure, GCP)上で、フルマネージドなMongoDB環境を提供します。MongoDB Atlasを使用することで、ユーザーは基盤となるインフラストラクチャ(AWS上)の管理から解放され、MongoDBのクラスター構築、スケーリング、監視、バックアップ、セキュリティなどを、Atlasの管理コンソールまたはAPIを通じて一元的に行うことができます。

DocumentDBがMongoDB互換性を持つサービスであるのに対し、MongoDB Atlasは「マネージドな本家MongoDB」です。

特徴

  • 本家MongoDBのフル機能: MongoDBの最新バージョンと全ての機能(トランザクション、Aggregation Pipeline、各種インデックス、セキュリティ機能など)を利用できます。新機能のリリースも迅速に反映されます。
  • マルチクラウド対応: AWSだけでなく、AzureやGCP上にもクラスターを構築できます。マルチクラウド戦略をとる場合に有効です。
  • 高い可用性と耐久性:
    • レプリカセットは自動的に複数のアベイラビリティゾーンに分散して構成されます(最低3ノード)。
    • 地理的に分散したレプリカセット(Global Clusters)を構築し、リージョン障害や読み込みレイテンシの最適化に対応できます。
    • 自動バックアップとポイントインタイムリカバリ機能を提供します。
  • 優れたスケーラビリティ:
    • インスタンスサイズ(Vertical Scaling)やレプリカセットメンバー数の変更が容易です。
    • シャーディング(Horizontal Scaling)の設定・管理もAtlasコンソールから簡単に行えます。ワークロードに応じてシャード数を増減できます。
    • ワークロードの変動に合わせて自動的にスケールアップ/ダウンするServerless Tierも利用可能です(一部リージョン、一部機能制限あり)。
  • 充実した運用・管理ツール:
    • Atlasコンソール上で、パフォーマンス監視、クエリ最適化のアドバイス(Performance Advisor)、インデックス推奨、バックアップ管理、セキュリティ設定などを直感的に行えます。
    • 自動パッチ適用、自動バージョンアップグレード機能を提供します。
  • 豊富な付加サービス:
    • Atlas Search: Lucene 기반の全文検索機能。
    • Atlas Data Lake: S3などのデータレイク上のデータをMongoDBライクなクエリで分析。
    • Atlas App Services: モバイル/Webアプリ向けのバックエンド機能(認証、Functions、GraphQL APIなど)。
    • Atlas Data Federation: 複数のデータソース(MongoDB Atlas, S3など)を統合してクエリ可能に。
  • 強固なセキュリティ:
    • ネットワークアクセス制御(IP Whitelist, VPC Peering, Private Endpoint)。
    • 強力な認証メカニズム(SCRAM, x.509, LDAP/Active Directory連携)。
    • 保存データと転送データの暗号化。
    • 監査ログ機能。

利用開始手順(MongoDB Atlasコンソールを使用)

  1. MongoDB Atlasアカウントの作成: MongoDB Atlasのウェブサイトでサインアップします。
  2. 組織とプロジェクトの作成: チームやアプリケーションごとに組織やプロジェクトを作成します。
  3. データベースデプロイメントの作成: プロジェクト内で「Build a Database」または「Create」ボタンをクリックします。
  4. デプロイメントタイプの選択:
    • Dedicated: 本番環境向けの専有リソース(インスタンスタイプを選択)。最も高機能でスケーラブル。
    • Serverless: トラフィックに応じて自動的にスケーリング(一部機能制限あり)。
    • Shared: 開発・テスト向けの無料または低コストな共有クラスター。
      今回はDedicatedを例に説明します。
  5. クラウドプロバイダーとリージョンの選択:
    • クラウドプロバイダーとして「AWS」を選択します。
    • AWSの利用可能なリージョンから、アプリケーションサーバーに最も近いリージョンを選択します(レイテンシを最小化するため)。複数のリージョンにまたがるクラスター(Multi-Region Cluster)も構成可能です。
  6. クラスター構成の選択:
    • インスタンスサイズ (Tier): M10, M20, M30など、インスタンスタイプを選択します。M10以上が本番推奨です。vCPU、メモリ、ストレージ容量、IOPSなどのスペックを確認して選択します。
    • ストレージ容量とIOPS: 必要に応じて、デフォルトから変更できます。
    • 追加設定: MongoDBバージョン、バックアップ設定(Cloud Backup推奨)、レプリカセットメンバー数などを設定します(通常3ノードから)。
    • シャーディング: データ量やスループットが多い場合は、ここで最初からシャードクラスターとして構成することも可能です(後から有効化も可能)。
  7. クラスターの名前付け: クラスターに任意の名前を付けます。
  8. デプロイメントの作成: 設定内容を確認し、「Create Cluster」ボタンをクリックします。

クラスターのデプロイには数分から数十分かかります。

接続設定

クラスターがデプロイされたら、接続設定を行います。

  1. データベースユーザーの作成: 「Database Access」タブで、アプリケーションから接続するためのユーザー名とパスワードを作成します。最小限の権限を付与することを推奨します。
  2. ネットワークアクセスの設定: 「Network Access」タブで、データベースへの接続を許可するIPアドレスまたはAWS VPCを設定します。
    • IP Whitelist: 接続元サーバーのグローバルIPアドレスを登録します。固定IPがない場合や多数の接続元がある場合は管理が煩雑になります。
    • VPC Peering: AWSアカウント間でVPC Peering接続を設定し、VPC内からプライベートIPで接続できるようにします。最もセキュアで推奨される方法です。Atlasコンソールから設定を開始し、AWSコンソールで承認する手順が必要です。
    • Private Endpoint: AWS PrivateLinkを利用して、VPC内からPrivate IPでAtlasにセキュアに接続します。VPC Peeringよりもさらにセキュアで管理しやすいですが、一部制約や追加料金があります。
  3. 接続文字列の取得: 「Connect」ボタンをクリックし、接続方法を選択します。
    • Drivers: アプリケーションで使用するプログラミング言語とドライバーを選択すると、接続文字列が表示されます。この文字列に、作成したデータベースユーザーのユーザー名とパスワードを埋め込んで使用します。
    • MongoDB Shell: mongoshコマンドでの接続方法が表示されます。
    • MongoDB Compass: GUIツールであるCompassからの接続方法が表示されます。

接続文字列は通常、以下のようになります(一部情報はマスクしています)。
mongodb+srv://<username>:<password>@your-cluster-name.mongodb.net/myDatabase?retryWrites=true&w=majority
<username><password>を置き換えて使用します。+srv形式はDNS Seed Listを使用するため、接続先のノード情報などを意識する必要がなく便利です。

運用・管理

MongoDB Atlasの運用・管理は、Atlasコンソールを中心に、APIやCLIツール(Atlas CLI)を使用して行います。

  • 監視: Atlasコンソールに豊富なパフォーマンスメトリクス(CPU, メモリ, 接続数, オペレーション数, キュー数, レプリカラグなど)が表示されます。遅いクエリの特定や、インデックスの推奨など、パフォーマンス診断ツールも利用できます。アラート設定も可能です。
  • バックアップとリストア: Cloud Backup機能により、自動的にスナップショットバックアップが取得され、指定した保持期間保存されます。任意の時点へのポイントインタイムリカバリも可能です。バックアップデータから新しいクラスターやテストクラスターを容易にリストアできます。
  • スケーリング:
    • Vertical Scaling: クラスターのインスタンスサイズ(Tier)は、Atlasコンソールから簡単に変更できます。インスタンスタイプの変更は、通常、ローリングアップデート(ダウンタイムなし、ただし一時的にプライマリ昇格が発生する可能性あり)で行われます。
    • Horizontal Scaling (シャーディング): シャーディングの有効化、シャードキーの選択、シャード数の増減はAtlasコンソールから管理できます。トラフィックの増加に合わせて容易にスケールアウトできます。
    • Serverless Tier: ワークロードに応じて自動的にリソースが調整されるため、手動でのスケーリング管理が不要です。
  • セキュリティ: ネットワークアクセス、データベースユーザー、監査ログ設定などをコンソールで管理します。保存データはデフォルトで暗号化されます。
  • 自動化: 自動バージョンアップグレード、自動パッチ適用などが設定可能です。

メリットとデメリット

メリット:

  • MongoDBのフル機能を利用可能: 最新バージョンを含む、MongoDBの全ての機能を利用できます。
  • 運用・管理が非常に容易: フルマネージドであり、GUIツールが充実しているため、運用負荷が極めて低いです。パフォーマンス診断やスケーリングも簡単に行えます。
  • マルチクラウド対応: AWSだけでなく他のクラウドも選択肢に入れられます。
  • 豊富な付加サービス: 全文検索、データレイク統合、モバイルバックエンドなど、MongoDBの機能を拡張するサービスが利用できます。
  • 優れたスケーラビリティ機能: シャーディングの管理が容易で、Serverless Tierなどのオプションもあります。

デメリット:

  • MongoDB社への依存: MongoDB AtlasはMongoDB社が提供するサービスであるため、利用にはMongoDB社との契約が必要となり、AWSアカウントとは別に管理が必要です(請求統合オプションはあります)。
  • コスト: DocumentDBやEC2自己運用と比較して、一般的にコストが高くなる傾向があります(ただし、運用にかかる人件費や隠れたコストを考慮すると、必ずしも高くなるとは限りません)。
  • AWSサービスとの連携はDocumentDBほどシームレスではない場合がある: AWSネイティブなDocumentDBと比較すると、CloudWatchの詳細な統合やIAMの細かな権限制御などは、一部設定が必要な場合があります(VPC PeeringなどはAWS側とAtlas側双方での設定が必要です)。

どんなケースに適しているか

  • MongoDBの最新機能や特定の高度な機能(例: 分散トランザクション、特定のオペレーター)を積極的に利用したい場合。
  • データベースの運用・管理負荷を最大限に削減したい場合。
  • MongoDB社の提供する豊富な運用ツールや付加サービス(Atlas Search, Data Lakeなど)を利用したい場合。
  • マルチクラウド戦略をとる可能性がある場合。
  • 既存のMongoDB環境をそのままクラウドに移行したい場合(互換性の問題がほとんど発生しない)。

選択肢3: 自前のEC2インスタンスにMongoDBをインストール・運用

概要

この方法は、AWSの仮想サーバーであるEC2インスタンスをプロビジョニングし、そのOS上に自分でMongoDBソフトウェア(コミュニティ版またはエンタープライズ版)をインストールし、全ての運用・管理を自前で行うものです。これは、オンプレミス環境でデータベースサーバーを運用する形態に最も近いです。

特徴

  • 最大限の自由度: 利用するMongoDBのバージョン、構成(レプリカセット、シャードクラスター)、ストレージエンジン、各種設定などを自由に決定できます。
  • コストを細かく制御可能: 利用したEC2、EBS、ネットワークなどのAWSリソースに対して直接課金されます。リザーブドインスタンスなどを活用することで、計算リソースのコストを削減できます。
  • MongoDBの全機能を利用可能: 任意のバージョンのMongoDBの全機能を利用できます。
  • 高い運用負荷: OSのパッチ適用、MongoDBソフトウェアのインストール、設定、パッチ適用、バージョンアップグレード、監視、バックアップ、リストア、障害検知と復旧、スケーリング、セキュリティ設定など、データベースに関連する全ての運用・管理タスクを自分で行う必要があります。

利用開始手順

  1. EC2インスタンスの起動:
    • 適切なAMI(Amazon Machine Image、OSイメージ)を選択します(例: Amazon Linux, Ubuntu, CentOS)。
    • ワークロードに適したインスタンスタイプを選択します(メモリやCPUに余裕があるタイプ、例: m/r系)。
    • データ量やI/O性能要件に合わせて、EBSボリュームの種類とサイズ、IOPS/スループットを設定します(gp3, io2 Block Expressなど)。データベースには高いI/O性能が求められることが多いため、適切なEBS設定が重要です。
    • MongoDBを配置するVPCとサブネットを選択します(通常Private Subnet)。
    • セキュリティグループを設定し、MongoDBへのアクセス元(アプリケーションサーバーなど)からのインバウンドトラフィックを許可します(デフォルトポートは27017)。
    • インスタンスへのアクセスに必要なキーペアを設定します。
  2. EC2インスタンスへの接続: SSHなどを利用してEC2インスタンスに接続します。
  3. MongoDBのインストール:
    • OSにMongoDBのリポジトリを追加します。
    • パッケージマネージャー(yum, aptなど)を使用してMongoDBソフトウェアをインストールします(コミュニティ版またはエンタープライズ版)。
    • SELinuxやファイアウォール(OSレベル)の設定を適切に行います。
  4. MongoDBの設定:
    • 設定ファイル(mongod.conf)を編集し、データディレクトリ、ログファイルパス、バインドIPアドレス(通常はEC2インスタンスのプライベートIP)、認証設定(security.authorization: enabled)、ネットワーク設定などを構成します。
    • レプリカセット名やシャードクラスターの設定を行います。
  5. レプリカセット/シャードクラスターの構築:
    • 高可用性構成のためには、複数のEC2インスタンスを起動し、それぞれにMongoDBをインストールした後、レプリカセットを初期化します(rs.initiate())。
    • スケーラビリティのためにシャーディングが必要な場合は、Config Serverレプリカセット、Shard Server(レプリカセット)、Mongosルーターインスタンスなどを構築・設定します。
  6. セキュリティ設定:
    • データベースユーザーを作成し、適切なロールと権限を付与します。管理者権限を持つユーザーは制限します。
    • 認証(SCRAM-SHA-1/256など)を有効にします。
    • TLS/SSLを使用して、クライアントとMongoDB間の接続を暗号化します。
    • 可能であれば、保管時のデータを暗号化します(ファイルシステムレベル暗号化など)。
  7. 接続: アプリケーションサーバーから、MongoDBインスタンスのプライベートIPアドレスとポート番号、作成したデータベースユーザーの認証情報を使用して接続します。接続文字列は以下のようになります。
    mongodb://username:password@private_ip_address:port/myDatabase?authSource=admin&ssl=true

運用・管理

この方法では、データベースに関わる全ての運用・管理を自分で行う必要があります。

  • 監視: OSレベルの監視(CPU, メモリ, ディスクI/O, ネットワーク)にはAmazon CloudWatch Agentを利用できます。MongoDB自体の監視には、mongostat, mongotopといった標準ツールや、MongoDB Cloud Manager (Ops Manager) の導入、あるいはZabbix, Mackerelなどのサードパーティ製監視ツールとMongoDB用のプラグインを組み合わせて利用します。主要なメトリクス(オペレーション数、キュー、レプリカラグ、コネクション数など)を継続的に監視し、アラートを設定する必要があります。
  • バックアップとリストア:
    • mongodump/mongorestoreコマンドを使用する方法。
    • ファイルシステムのスナップショット(EBSスナップショット)を使用する方法(レプリカセットのSecondaryメンバーで行うなど工夫が必要)。
    • MongoDB Cloud Manager/Ops Managerのバックアップ機能を使用する方法。
    • これらの方法を組み合わせて、定期的なバックアップの自動化、バックアップデータの検証、リストア手順の確立とテストを自前で行う必要があります。
  • パッチ適用とアップグレード: OSとMongoDBソフトウェアの両方について、セキュリティパッチやバグフィックス、新機能のアップデートを計画的に実施する必要があります。レプリカセットやシャードクラスター環境でのローリングアップグレード手順を確立し、ダウンタイムを最小限に抑えるように実行する必要があります。
  • スケーリング:
    • Vertical Scaling: EC2インスタンスタイプやEBSボリュームの変更には、通常ダウンタイムが発生します。
    • Horizontal Scaling: レプリカセットへのメンバー追加や、シャードクラスターのシャード数増加は、手動でノードを追加・設定し、クラスターに組み込む作業が必要です。運用中にシャードを再分散するバランシング処理など、シャーディング特有の運用も発生します。
  • セキュリティ: セキュリティグループやOSファイアウォールの管理に加え、MongoDB自体のセキュリティ設定(認証、ロールベースアクセス制御、TLS/SSL、監査ログ)を適切に行い、継続的に見直す必要があります。
  • 障害対応: ハードウェア障害、OS障害、MongoDBソフトウェア障害、ネットワーク障害など、様々な障害シナリオを想定し、自動復旧メカニズムの設計や、手動での復旧手順の確立、訓練が必要です。レプリカセットの自動フェイルオーバー設定などが含まれます。

メリットとデメリット

メリット:

  • 最大限の自由度: 構成、バージョン、設定を完全に制御できます。
  • 最新機能の迅速な利用: 新しいバージョンのMongoDBがリリースされ次第、すぐに導入できます。
  • コストの細かな制御: AWSリソースの選択や最適化により、コストを細かく管理できます。既存のライセンスを持ち込みたい場合なども対応可能です(エンタープライズ版)。

デメリット:

  • 運用負荷が極めて高い: データベースの専門知識を持つチームが必須であり、24時間365日の運用体制の構築・維持に多大な労力とコストがかかります。
  • 可用性・耐久性・セキュリティの設計・実装・運用責任が全て自社にある: マネージドサービスのように自動で提供されるわけではないため、これらを自前で高品質に実現するのは困難であり、リスクも伴います。
  • スケーラビリティの実現・維持が困難: 特にシャーディング環境のスケーリングや運用は複雑で、高度なノウハウが必要です。
  • 隠れたコストが発生しやすい: 運用にかかる人件費、障害発生時の機会損失、セキュリティインシデントのリスクなどを考慮すると、マネージドサービスより高コストになるケースが多いです。

どんなケースに適しているか

  • MongoDBの特定の高度な機能や設定が必須であり、DocumentDBやAtlasでは実現できない場合。
  • 非常に特殊な構成が必要な場合。
  • 既にMongoDBの運用・管理に関する高度な専門知識を持つチームがあり、コストを極限まで抑えたい場合(ただし、人件費を含めたトータルコストでの比較が必要です)。
  • 学習や検証目的で、MongoDBをゼロから構築してみたい場合。

本番環境で高い可用性、耐久性、スケーラビリティ、セキュリティが求められる場合は、一般的にDocumentDBまたはMongoDB Atlasのようなマネージドサービスを利用することが強く推奨されます。

各選択肢の比較

ここまで見てきた3つの選択肢を、様々な観点から比較してみましょう。

比較項目 Amazon DocumentDB (with MongoDB compatibility) MongoDB Atlas on AWS 自前のEC2インスタンスにMongoDBをインストール・運用
タイプ AWSマネージド型DB (MongoDB互換) MongoDB社マネージド型DB (AWS上で動作) 自己運用 (IaaS上にDBソフトウェアをインストール)
MongoDB互換性/機能 MongoDB 3.6/4.0 ワイヤプロトコル互換 (一部機能制限あり) 本家MongoDBの最新バージョンと全機能 任意のバージョンと全機能を利用可能
運用管理負荷 低 (AWSが多くのタスクを自動化) 非常に低い (MongoDB社が全て管理) 極めて高い (OS, DBソフト, バックアップ, 監視など全て自前)
可用性・耐久性 高 (AWSの複数AZに分散、自動フェイルオーバー、自動バックアップ) 非常に高 (複数AZ分散、地理的分散、自動バックアップ、ポイントインタイムリカバリ) 設計・実装・運用次第。自前で構築する必要があり、高レベル実現は困難。
スケーラビリティ 容易 (リードレプリカ追加、インスタンスタイプ変更、ストレージ自動拡張) 非常に容易 (Atlasコンソールからスケーリング、シャーディング管理、Serverless) 実装・運用次第。手動でのノード追加・設定が必要。大規模環境は複雑。
セキュリティ AWSサービス連携 (VPC, SG, IAM), 暗号化サポート 豊富 (IP/VPC/Private Endpoint, 多様な認証, 暗号化, 監査) OS/DBレベルで全て自前設定・運用。高度な設定には専門知識が必要。
コスト インスタンス、I/O、ストレージ、バックアップ容量など。Atlasより安い場合が多い。 インスタンス、ストレージ、I/O、ネットワーク転送など。DocumentDBより高い傾向。 EC2, EBS, ネットワーク、バックアップなどAWSリソース費用 + 高額な人件費。
移行の容易さ 既存アプリのコード修正・テストが必要になる可能性がある。AWS DMSなどのツールあり。 基本的に既存のMongoDB環境からほぼコード修正なしで移行可能。Live Migrationツールあり。 mongodump/mongorestoreなどでデータ移行。インフラ構築・設定が必要。
AWSサービス連携 非常に密接 (CloudWatch, IAM, VPCなど) VPC Peering, Private Endpointなど設定可能。CloudWatchメトリクス統合など。 EC2, EBS, S3, CloudWatchなど基盤サービスとの連携は可能。
管理主体 AWS MongoDB社 自社
適したケース AWSネイティブ運用重視、互換性範囲内でOK、運用負荷削減したい。 最新機能必須、運用負荷を最大限減らしたい、多機能ツール利用、マルチクラウド。 特殊要件あり、厳密なコスト制御、運用ノウハウが豊富にある。

コストに関する補足:
単純な計算リソースやストレージの費用だけを比較すると、EC2自己運用が最も安く見えるかもしれません。しかし、運用にかかる人件費、監視ツール費用、障害対応やセキュリティ対策にかかるコスト、障害発生時の機会損失などを考慮した「総所有コスト(TCO)」で比較すると、多くの場合、DocumentDBやMongoDB Atlasのようなマネージドサービスの方が結果的に安価になるか、コストパフォーマンスに優れることが多いです。特に、高い可用性やスケーラビリティが求められる本番環境では、マネージドサービスが提供する信頼性や運用効率の価値は非常に大きいです。DocumentDBとAtlasのコスト比較は、利用するインスタンスサイズ、I/O量、データ転送量、使用する機能などによって変動するため、それぞれの料金計算ツールを使って比較検討することが重要です。

実際のアプリケーション開発における考慮事項

AWS上でMongoDBを利用する際に、アプリケーション開発者が考慮すべき点をいくつか紹介します。

  • 接続設定: アプリケーションからの接続には、取得した接続文字列を使用します。セキュリティのため、接続元のサーバーのIPアドレスを制限し、データベースユーザーには必要最小限の権限のみを付与することが重要です。TLS/SSL接続は必須で有効化しましょう。
  • データモデル設計: RDBMSとは異なり、MongoDBはドキュメント指向です。正規化だけでなく、非正規化も積極的に利用し、関連データを可能な限り単一のドキュメントに埋め込むことで、読み込みパフォーマンスを向上させることができます。ただし、ドキュメントサイズ制限(16MB)や、データの冗長化による更新時の複雑性にも注意が必要です。ワークロード(読み込み中心か書き込み中心か、関連データの取得頻度など)を考慮した設計が重要です。
  • インデックス設計: パフォーマンスの鍵となるのがインデックスです。クエリのフィルタリング条件やソート順を考慮して適切なインデックス(単一フィールド、複合、マルチキー、テキスト、地理空間、ハッシュドなど)を作成する必要があります。DocumentDBとAtlasではサポートされるインデックスタイプに違いがある場合があるため、利用するサービスに合わせて確認が必要です。不要なインデックスは書き込みパフォーマンスを低下させ、ストレージを消費するため、定期的な見直しも重要です。
  • クエリ最適化: 遅いクエリはデータベース全体のパフォーマンスに影響します。explain()メソッドを使用してクエリの実行計画を確認し、意図したインデックスが使用されているか、Collection Scanが発生していないかなどを分析します。DocumentDBやAtlasの監視ツール(Performance Advisorなど)も活用しましょう。Aggregation Pipelineを使用する場合は、パイプラインステージの順序や使用するオペレーターにも注意が必要です。
  • 監視とパフォーマンスチューニング: データベースのパフォーマンスを継続的に監視し、問題が発生した場合はチューニングを行います。CloudWatch (DocumentDB) やAtlasコンソール (Atlas) から主要メトリクスを監視します。インスタンスサイズの見直し、インデックスの追加・削除、クエリの修正、シャードキーの見直しなどがチューニングの手段として考えられます。
  • エラーハンドリングとリトライ: データベースへの接続エラー、タイムアウト、書き込みコンフリクト(トランザクション使用時など)などのエラーが発生する可能性があります。アプリケーション側で適切にエラーをハンドリングし、一時的なエラーの場合は指数バックオフなどのロジックを用いてリトライ処理を実装することが望ましいです。
  • デプロイメント戦略: アプリケーションとデータベースを同じAWSリージョン、可能であれば同じVPC内に配置することで、ネットワークレイテンシを最小限に抑えることができます。Blue/Greenデプロイメントやカナリアリリースなどの戦略を採用する場合、データベーススキーマの変更やデータ移行をどう行うかも考慮が必要です。

移行について

オンプレミス環境や他のクラウドからAWS上のMongoDB(DocumentDBまたはAtlas)へデータを移行する場合、いくつかの方法があります。

  • AWS Database Migration Service (DMS): AWSが提供するデータ移行サービスで、多様なデータベース間の移行をサポートしています。MongoDBからDocumentDBへの移行パスも提供されています。DMSは継続的なレプリケーション(CDC – Change Data Capture)もサポートしており、本番環境を稼働させたままダウンタイムを最小限に抑えた移行が可能です。ただし、DMSもDocumentDBの互換性の範囲内での移行となります。
  • MongoDB Atlas Live Migration: MongoDB Atlasが提供する、MongoDB環境からAtlasへのオンライン移行ツールです。既存のMongoDBレプリカセットやシャードクラスターから、ダウンタイムを最小限に抑えてAtlasにデータを転送できます。MongoDB社が提供するツールであるため、互換性の問題は発生しにくいです。
  • mongodump / mongorestore: MongoDBの標準コマンドラインツールです。mongodumpでデータをバックアップし、mongorestoreでリストアします。シンプルな移行や小規模なデータ量に適していますが、大規模なデータ量や継続的な変更がある場合は、ダウンタイムが長くなる傾向があります。また、レプリカセットやシャーディング構成のバックアップ・リストアには注意が必要です。
  • Export/Import (mongoexport / mongoimport): CSVやJSON形式でのデータエクスポート/インポートに使用します。スキーマ変換などが必要な場合に便利ですが、バイナリ形式のmongodump/mongorestoreに比べて性能は劣ります。

移行元環境の規模、データ量、許容されるダウンタイム、移行先サービス(DocumentDBかAtlasか)によって、最適な移行方法は異なります。事前の十分な計画とテストが不可欠です。

コスト最適化のヒント

AWS上でMongoDBを利用する際のコストを最適化するための一般的なヒントです。

  • 適切なインスタンスタイプの選択: ワークロードに対して過剰または不足しているインスタンスタイプを選択しないことが重要です。監視メトリクス(CPU, メモリ使用率)を参考に、必要十分なインスタンスサイズを選択しましょう。開発・ステージング環境では本番環境より小さなインスタンスを使用するなど、環境に応じた選択も重要です。
  • ストレージタイプの選択と容量管理: DocumentDBやEC2+EBSの場合、ストレージのI/O性能と容量がコストに影響します。ワークロードのI/O要件に合わせて適切なストレージタイプ(gp3, io2 Block Expressなど)とIOPS/スループット設定を選択しましょう。不要なデータを削除したり、古いバックアップを削除したりすることで、ストレージコストを削減できます。
  • リードレプリカの適切な配置: 読み込み性能が必要な場合にリードレプリカを追加しますが、必要以上に多くのレプリカを作成するとコストが増加します。読み込みトラフィックとレプリカの利用率を監視し、適切な数を維持しましょう。地理的に分散させる場合は、リージョン間のデータ転送コストも考慮が必要です。
  • バックアップの保持期間: 自動バックアップや手動スナップショットの保持期間を必要最低限に設定することで、バックアップストレージのコストを削減できます。
  • 監視とアラート設定: コスト増加に繋がるような異常(例: I/Oスパイク、接続数の急増によるインスタンス負荷増)を早期に検知できるよう、主要メトリクスに対するアラートを設定し、迅速に対応できるようにします。
  • 開発/ステージング環境の管理: 開発・テスト目的で利用する環境は、本番環境と同等のスペックは不要な場合が多いです。本番より小さいインスタンスサイズを使用したり、必要に応じて環境を停止・削除したりすることでコストを削減できます。DocumentDBやAtlasの無料ティアや低コストティアを活用することも有効です。
  • リザーブドインスタンス / Savings Plansの活用 (主にEC2自己運用): 長期的に利用することが確定しているEC2インスタンスやEBSボリューム、その他のAWSサービス(EC2-Instance Savings Plansなど)に対して、リザーブドインスタンスやSavings Plansを適用することで、オンデマンド料金よりも大幅な割引を受けることができます。DocumentDBやAtlasでも、長期利用割引が提供されている場合があります。

セキュリティのベストプラクティス

データベースは機密情報を含むことが多いため、セキュリティ対策は非常に重要です。AWS上でMongoDBを利用する際のベストプラクティスをいくつか紹介します。

  • VPC内でのデータベース配置: データベースをインターネットから直接アクセスできないプライベートサブネットに配置します。これはDocumentDBでもAtlas (VPC Peering/Private Endpoint利用時) でもEC2自己運用でも共通の原則です。
  • セキュリティグループ/ネットワークACLによるアクセス制限: データベースインスタンスへのネットワークアクセスは、アプリケーションサーバーなど、信頼できる送信元からのトラフィックのみを許可するように、セキュリティグループやネットワークACLを厳密に設定します。不要なポートは閉じます。
  • IAMロール/ユーザーによるアクセス制御: AWSアカウント内のユーザーやサービスがDocumentDBやEC2インスタンスなどのAWSリソースに対してどのような操作(作成、変更、削除、開始、停止など)を許可するかを、IAMポリシーを使って詳細に制御します。データベースへの認証情報(ユーザー名、パスワード)をIAMユーザーに付与するのではなく、AWS Secrets Managerなどに安全に保存し、IAMロールを持つEC2インスタンスやLambda関数などから取得して使用する構成が推奨されます。
  • データベース認証 (SCRAM-SHA-1/256): MongoDBに接続する際は、認証を必須にします。SCRAM-SHA-256などの強力な認証メカニズムを使用し、推測されにくい複雑なパスワードを設定します。管理者ユーザーとアプリケーションユーザーで異なるユーザーを作成し、それぞれに最小限の権限のみを付与します(最小権限の原則)。
  • 転送中のデータと保存データの暗号化:
    • クライアントとデータベース間の通信は、必ずTLS/SSLを使用して暗号化します。DocumentDBやAtlasでは設定で容易に有効化できます。EC2自己運用の場合も、MongoDBの設定ファイルでTLS/SSLを有効化し、適切な証明書を設定します。
    • データベースに保存されているデータは、保管時に暗号化します。DocumentDBやAtlasではKMSキーを使用した暗号化をデフォルトで有効化できます。EC2自己運用の場合、EBSボリュームの暗号化や、MongoDB Enterprise版のStorage Engine Encryption機能などを利用して実現します。
  • 監査ログの有効化: データベースへのアクセス履歴、実行された操作、認証試行などのログを記録します。DocumentDBやAtlasでは監査ログ機能を有効化できます。EC2自己運用の場合、MongoDB Enterprise版の監査ログ機能を利用するか、サードパーティツールと連携します。監査ログは定期的に確認し、異常なアクティビティがないか監視することが重要です。

これらのセキュリティ対策を組み合わせることで、AWS上のMongoDB環境をより安全に運用できます。

まとめ

AWS上でMongoDBを利用する方法は、主にAmazon DocumentDB、MongoDB Atlas、そしてEC2自己運用の3つがあります。それぞれに異なる特徴、メリット、デメリットがあり、どれが最適かは、アプリケーションの要件、運用体制、必要な機能、コストなどを総合的に判断して決定する必要があります。

  • Amazon DocumentDB は、AWSのマネージドサービスとして運用負荷を軽減し、既存のAWS環境との連携を重視する場合に適しています。MongoDBの最新機能が不要で、互換性範囲内で十分な場合に有力な選択肢となります。
  • MongoDB Atlas は、MongoDBの最新バージョンとフル機能、そしてMongoDB社が提供する豊富な運用ツールや付加サービスを利用したい場合に最適です。運用負荷を最大限に削減し、マルチクラウドも視野に入れる場合に強力な選択肢となります。
  • 自前のEC2インスタンスにMongoDBをインストール・運用 する方法は、構成やバージョンを完全に自由に制御したい場合、あるいは非常に特殊な要件がある場合に検討されます。ただし、運用負荷とリスクが極めて高いため、本番環境での利用は慎重な検討が必要です。

現代のクラウドネイティブな開発においては、データベースの運用・管理にリソースを割くよりも、アプリケーション開発に集中できるマネージドサービス(DocumentDBやAtlas)を利用することが一般的です。これにより、開発スピードを向上させ、サービス品質を高めることができます。

どの選択肢を選んだとしても、適切なデータモデル設計、インデックス設計、クエリ最適化、そして強固なセキュリティ対策は、アプリケーションの成功に不可欠です。また、データベースのパフォーマンスとコストを継続的に監視し、必要に応じて最適化を行う運用も重要となります。

この記事が、AWSでMongoDBを活用するための第一歩となり、皆様のプロジェクト成功の一助となれば幸いです。ご自身の要件に合わせて、各サービスの公式ドキュメントなども参照しながら、最適な道を選択してください。

付録: 用語解説

  • NoSQL: リレーショナルデータベース以外のデータベース管理システムの総称。データの格納方法や構造、クエリ言語などがRDBMSとは異なる。
  • ドキュメント指向データベース: データをドキュメント(JSONやBSONのような構造化されたデータ)として格納するデータベース。MongoDBはその代表例。
  • BSON: Binary JSONの略。JSONに似ているが、数値型やバイナリ型などのデータ型が追加されており、効率的なストレージと走査が可能。
  • レプリカセット: MongoDBの高可用性構成。複数のMongoDBインスタンス(ノード)で同じデータを共有し、Primaryノードが書き込みを受け付け、Secondaryノードにデータを複製する。Primary障害時にはSecondaryがPrimaryに昇格する。
  • シャーディング: MongoDBの水平スケーリング手法。データセットを複数のShard(シャード)と呼ばれる小さな塊に分割し、異なるサーバー(シャードレプリカセット)に分散して格納する。Mongosと呼ばれるルータープロセスがクエリを適切なシャードにルーティングする。
  • AWS (Amazon Web Services): Amazonが提供するクラウドコンピューティングプラットフォーム。
  • EC2 (Elastic Compute Cloud): AWSの仮想サーバーサービス。
  • VPC (Virtual Private Cloud): AWS上に論理的に隔離された仮想ネットワークを構築するサービス。
  • サブネット: VPCを分割したネットワークの範囲。通常、インターネットからアクセス可能なPublic SubnetとアクセスできないPrivate Subnetに分ける。
  • セキュリティグループ: EC2インスタンスなどのリソースに対する仮想ファイアウォールとして機能し、インバウンド/アウトバウンドトラフィックのルールを制御する。
  • IAM (Identity and Access Management): AWSリソースへのアクセスを安全に管理するためのサービス。ユーザー、グループ、ロールを作成し、権限を付与できる。
  • CloudWatch: AWSリソースとアプリケーションを監視するためのサービス。メトリクス収集、ログ管理、アラーム設定などが可能。
  • EBS (Elastic Block Store): EC2インスタンスにアタッチして使用できるブロックストレージボリューム。
  • AZ (Availability Zone): AWSリージョン内で物理的に分離された独立したデータセンター群。高可用性構成のために複数のAZを利用する。
  • Wire Protocol: ネットワーク経由でデータベースとクライアントが通信するためのプロトコル。DocumentDBはMongoDBのWire Protocol互換性を持つ。
  • TLS/SSL: 通信を暗号化し、セキュアにするためのプロトコル。

参考資料/公式ドキュメント


上記で約5000語の詳細な解説記事を作成しました。各選択肢の概要、特徴、利用手順、運用管理、メリット・デメリット、そして比較について網羅し、実際の開発における考慮事項やコスト最適化、セキュリティについても触れています。付録として用語解説も加えました。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール