コンテンツにスキップ

aws

Multi-tenant アーキテクチャー 実現方法 (2)

マルチテナント方式の概要

マルチテナント方式とは、単一のソフトウェアインスタンスとそれをサポートするインフラストラクチャを使用して、複数の顧客 (テナント) にサービスを提供するソフトウェアアーキテクチャです。この方式では、各テナントのデータは分離され、他のテナントからアクセスできないようになっています。

  1. 各テナントは、あたかも自分たち専用のソフトウェアインスタンスを使用しているかのようにサービスを利用できますが、実際にはリソースを共有することでコスト削減や効率的な運用を実現しています。
  2. マルチテナント方式を採用する主なメリットは、リソースの効率的な利用とコスト削減です。 単一のインフラストラクチャを共有することで、ハードウェア、ソフトウェア、および運用コストを削減できます。また、メンテナンスやアップグレードも一元的に行うことができるため、管理の負担を軽減できます。
  3. さらに、マルチテナント方式では、テナントごとに個別のシステムを構築・運用する必要がないため、迅速なサービス提供が可能になります。 マルチテナントアプリケーションでは、「組織」はユーザーやリソースをグループ化する方法として有効です。
  4. 組織は、異なるクライアントやグループがアプリケーションを使用する際に、それぞれに独自のユーザー、データ、および設定を持つ別々のセクションのように機能します。これにより、特定のサービスと管理を提供しやすくなります。 ただし、マルチテナント方式では、テナント間のデータ分離、パフォーマンスの安定性、リソース管理など、いくつかの課題も存在します。
  5. これらの課題に対処するためには、適切なアーキテクチャ設計、セキュリティ対策、および運用管理が必要となります。

Multi-tenant アーキテクチャー 実現方法 (1)

マルチテナント方式で「文書管理+検索サービス」を構築する際に、Aurora(RDB)とOpenSearchを用いてメタデータおよび検索インデックスを管理するための実現方法をまとめたものです。この内容を参考に、要件やシステム特性に応じて、必要に応じた方法を選択・組み合わせる必要があります。

前提

  • サービス概要
    • ユーザ企業(エンドユーザ)がアップロードした文書のメタデータをAuroraで管理し、検索に必要なインデックス情報をOpenSearchで管理する。
    • 企業(テナント)単位で文書へのアクセスや検索が行われる。
  • マルチテナント要件
    • テナント(企業)ごとにデータを安全に隔離する必要がある。
    • テナント数増加に対してスケーラブルに対応できるアーキテクチャが求められる。
    • コスト管理や運用負荷にも配慮が必要。

AWS Cloudformation ベストプラクティス まとめ

1. はじめに

AWS CloudFormation は、AWS リソースをコードとして定義し、Infrastructure as Code (IaC) を実現するためのサービスです。文書管理+検索サービスを提供するうえでは、多様なAWSリソース(例: Amazon S3、Amazon DynamoDB、Amazon OpenSearch Service、Amazon EC2、IAM など)を利用することが多く、これらを効率よく管理するために CloudFormation は欠かせない存在となります。 本ドキュメントでは、主に以下のような運用管理を想定しています:

  • 文書保管のための S3 バケットや、ドキュメントメタデータを管理する DynamoDB テーブルの管理
  • 検索基盤としての Amazon OpenSearch Service (旧 Elasticsearch Service) の構築・更新
  • CloudFormation テンプレートのバージョン管理・変更管理
  • 変更差分やスタックドリフトの検出
  • 運用・保守プロセスの自動化 (CI/CD パイプライン連携など)

以下の各項目で、AWS CloudFormation のベストプラクティスを踏まえ、運用に役立つポイントを解説します。