1. ヘルプ
  2. 実装(全般)
  3. ユースケース別の実装方法

1つのサービスで複数サイトを管理するか、サイトごとにサービスを用意するか、どちらがいいですか?

→ どちらもメリット・デメリットがあり、運用に合わせて最適な構成を選択する必要があります。

microCMSで複数のウェブサイトを管理する方針は、大きく以下の2つに分けられます。

1つのサービスで複数サイトを管理する

1つのサービス内でサイト別にAPIを用意し、ロールで操作範囲を制限する方針です。

以下の画像のように、1つのサービス内に複数のサイト用のAPIを作成して管理します。

サイトごとにサービスを分ける

サイトごとにサービスを用意する方針です。

以下の画像のように、サイトごとに複数サービスを用意し、サービス内に作成するAPIは各サイト専用として管理します。


どちらの方針にもメリット・デメリットがあるため、各運用要件やセキュリティポリシー、コスト要件に応じて、最適な構成を選択する必要があります。


以下の観点で、2つの方針のメリット・デメリットをご案内します。

  • 権限・セキュリティ
  • 運用・設計難易度
  • 担当者の負担
  • 移行・拡張性
  • 機能的な制限
  • 複数サイト間の連携の容易さ
  • パフォーマンス
  • コスト

権限・セキュリティ

高い権限・セキュリティ管理が必要な場合、サイトごとにサービスを分けることで、権限設定やAPIキー管理の単純化、セキュリティリスクの局所化が可能です。

1つのサービスで複数サイトを管理する場合

1つのサービスで複数サイトを管理する場合、サイトごとにロールを作成するなどの対応が必要となります。

APIを追加した際に、都度権限の調整が必要となり、権限の設定ミスによるリスクが高まります。APIキーも同様で、適切に権限を設定していなかった場合、漏洩時の影響範囲が広がってしまいます。

サイトごとにサービスを分ける場合

権限をサービスレベルで分けられるため、1サービス内で複雑なロールを設計する必要がなくなります。APIキー漏洩などのセキュリティリスクも限定的になります。

運用・設計難易度

サイトごとにサービスを分けた方が、比較的運用や設計の難易度が低くなります。

1つのサービスで複数サイトを管理する場合

複数サイトを1サービスで運用する場合、APIを1サービス内で設計する必要があり、API設計が複雑化し、設計ミスのリスクが高まります。

例えば、1サービス内で同一のエンドポイント名は使用できないため、APIの命名規則を事前に整備して命名の衝突を避ける必要があります。

サイトごとにサービスを分ける場合

サイトごとにサービスを分けることで、設計・運用作業の範囲が明確になります。1サービスあたりの管理対象が1サイトとなるため、運用手順や設計ルールを単純化できます。

担当者の負担

サイトごとに担当者が分かれているか、すべてのサイトを担当者が横断して管理するかによって、適切な方針が変わります。

1つのサービスで複数サイトを管理する場合

一般に、1つのサービスで複数サイトを管理する場合、管理画面で目的のAPIを探しにくくなり、操作効率の低下につながる可能性があります。一方、1つの管理画面ですべてのサイトのAPIを管理できるというメリットもあります。

サイトごとにサービスを分ける場合

サイトごとに担当者が分かれている場合は、サイトごとのAPIを横断して管理する必要がないため、サイトごとにサービスを分けることで、管理画面の操作効率を上げることができます。

移行・拡張性

サイトごとにサービスを分けることで、移行を容易に行えたり、拡張性を保てます。

1つのサービスで複数サイトを管理する場合

1サービスですべてのウェブサイトを管理する場合は、将来的に特定のサイトのみを譲渡したり、別システムに切り出す必要が出てきた場合などに、移行や分離が困難になることがあります。

サイトごとにサービスを分ける場合

サービスをサイトごとに用意しておけば、将来的にサイトごとに運用会社を変更したり、別サービスに移行したい場合も、1サイト=1サービスで独立しているため、移行コストやリスクを抑えられます。

機能的な制限

複数サイトを1サービスで運用する場合、機能的な制限に注意する必要があります。

1つのサービスで複数サイトを管理する場合

データ転送量やAPIリクエスト数などはサービス単位で集計され、API単位では集計できないため、サイトごとの利用状況を細かく把握できません。

また、1サービスで作成できる複数環境は原則10個までのため、各サイトでステージング環境が必要な場合、複数環境が不足する可能性があります。

1サービス内のAPI数が多くなりがちなため、レートリミットにも注意が必要です。

サイトごとにサービスを分ける場合

サービスがサイトごとに分かれているため、データ転送量などの利用状況をサイト単位で確認できます。

また、複数環境の個数制限やレートリミットについても、1つのサービスで複数サイトを管理する場合に比べると制約とならないケースが多いです。

複数サイト間の連携の容易さ

1つのサービスで複数サイトを管理することで、サイト間で同一コンテンツを取り回せるメリットが得られます。

1つのサービスで複数サイトを管理する場合

サイト間でコンテンツやメディアを共用したいケースでは、1サービスで複数サイトを管理するメリットを享受できます。

サービスを共用するため、サイトAの画像やコンテンツをサイトBでも利用したり、コンテンツ参照を使ってカテゴリーを共用することが可能です。

サイト間連携が容易になり、二重管理が生まれにくくなります。

サイトごとにサービスを分ける場合

サイトごとにサービスを用意する場合は、コンテンツやメディアの共用はできません。二重管理を回避するには、外部ストレージやAPI連携などの追加設計が必要です。

パフォーマンス

サイトのパフォーマンスについては、どちらの方針でも差はありません。

コスト

1つのサービスで複数サイトを管理する方がコストを低く抑えやすいですが、実際の利用状況や契約に依存します。

1つのサービスで複数サイトを管理する場合

1つのサービス内で複数サイトを管理する場合、サイトごとの契約が不要なため、コストを抑えやすくなります。

サイトごとにサービスを分ける場合

サイトごとにサービスを用意する場合、サイトごとに契約が必要なため、コストが高くなる傾向があります。


ただし、データ転送量やメンバー数、API数が多い場合は、従量課金により両方式のコスト差が縮小する場合があります。

 

Enterpriseプランの場合は1つの契約で複数サービスを利用できるため、サイトごとにサービスを分ける場合でも、契約でコスト調整が可能です。

各方針が適しているケース

ここまでの観点を踏まえ、どちらの方針が適しているかをケースごとにまとめます。

1つのサービスで複数サイトを管理するのが適しているケース

  • サイト間でコンテンツやメディアを共有したい場合
  • 複数のサイトを特定の担当者が横断管理したい場合
  • コストを最優先したい場合

サイトごとにサービスを分けるのが適しているケース

  • 権限やセキュリティのリスクを最小化したい場合
  • 運用や設計を単純化したい場合
  • サイトごとに担当者が分かれている場合
  • 将来的に他事業者などに譲渡予定のウェブサイトがある場合
  • サイトごとの利用状況を細かく管理したい場合

なお、本ヘルプでご案内した2通りの方針を両方取り入れることも考えられます。


例えば、microCMSで管理したいサイトのうち、サイトのターゲットや担当者でサイトをグルーピングし、それぞれのグループごとにサービスを作成して運用する、などの方針も有効です。