制約を知ることが早期のパフォーマンス確保につながる。
「ガバナ制限」の正しい理解

更新日:04/04/2023

[Salesforceコラム]

「ガバナ制限」はなぜ起こる?制約の背景を理解し付き合う方法

この記事を書いた人

株式会社JSOL ソーシャルトランスフォーメーション事業本部 飯田 博記

JSOL認定プロフェッショナル(ITアーキテクト)、ITストラテジスト
Salesforce認定テクニカルアーキテクト(CTA)、16x Salesforce 認定資格

飯田 博記

技術リーダーとして、Salesforce導入プロジェクト、活用・定着化支援案件に参画。システム基盤領域の経験を軸に、顧客業務から基盤までわかるアーキテクトを目指す。
Salesforce Architect Groupの共同リーダーとしてコミュニティエコシステムでも活動中。

世にあるSaaS・PaaSの多くは、誰でも使える優れた標準機能を有しています。世界15万社以上に導入されているSalesforceは、その代表的なサービスの1つです。しかしその一方で、利用する際には注意が必要なこともあります。今回はSalesforce活用における留意点として挙げられることの多い「ガバナ制限」について、JSOLの飯田が解説していきます。

小規模から大規模ユーザーまで、同じ機能が利用できるSalesforce

Salesforceの優れた点として、マルチテナントアーキテクチャを採用していることが挙げられます。マルチテナントアーキテクチャとは、複数ユーザーが共通のシステムやプラットフォームを利用する仕組みです。
これにより、中小企業の小規模ユーザーから大手企業の大規模ユーザーまで、同じ機能を利用することができます。

同様のことをSaaS以外のアプリ開発で実現するのは難易度が高いと言えます。小規模ユーザーの視点では、ひととおりの機能・基盤の開発・維持に多額の投資が必要となってしまい難しいでしょう。大規模ユーザーの視点では、多くのユーザーの利用に耐えるシステムを構成するには、コストも嵩みます。こういった点をカバーし、サービスとして利用できるのはSalesforceの大きなメリットでしょう。

Salesforceでは、マルチテナントアーキテクチャを実現するために様々な工夫が行われています。その仕組みに目を向けてみます。まず、データを保存し管理するためのデータベースがあります。利用者に画面機能を提供するSaaS・PaaSのアプリケーションがあります。そして、データベースとアプリケーションの間にマルチテナントを実現するためのアーキテクチャが位置付けられます。 マルチテナントアーキテクチャによって、小規模から大規模ユーザーまで同じ機能が利用できる仕組みが実装されています。例えば、標準項目(ID項目、Name項目、作成者・作成日時など、決まった項目が設けられます)、カスタム項目を追加する仕組み、レコードアクセス権限・共有設定の仕組みなどです。このマルチテナントアーキテクチャのひとつとして、開発したコードが共有リソースを独占しないよう制限事項が強制される「ガバナ制限」があります。

マルチテナントアーキテクチャ・ガバナ制限

Salesforceの留意点「ガバナ制限」とは

Salesforceのガバナ制限では、1つのプログラムの中で発行してよいクエリの合計数や、クエリによって取得できるレコードの合計数、発行できるDMLの合計数、CPU時間、ヒープの合計サイズなどが制限されています。これらは開発者にとっては一見、自由がない・制約が多くて作りにくいなど、サービスの利用を阻害する制限に思えるかもしれません。

ガバナ制限が設けられていることで、設計・開発時点で問題に対処することができます。システムテストになってからではなく、設計段階で対処することができる。「トランザクションあたりのクエリの合計数が限定されているから、コレクションを利用してクエリの発行回数を削減しよう」など、より早いフェーズでの対応を行うことで、パフォーマンス確保のシフトレフトが実現するのではないでしょうか。

開発担当者はガバナ制限をデメリットと捉えるのではなく、「事前にどのような制限があるのか」「どうすればトラブルを回避できるのか」を開発段階で把握し、対応することが重要です。

Salesforceの制限や留意点を理解し、付き合う方法を学ぶ

今回ご紹介した「ガバナ制限」のように、Salesforceは便利な一方で留意すべき点もあります。これを理解し、上手くSalesforceの利点を享受するには、本質を知るアーキテクトの視点が助けになります。

アーキテクトには様々な分野がありますが、今回ご紹介したマルチテナントアーキテクチャ・ガバナ制限(データアクセスによるもの)は、データアーキテクトの分野に相当します。 これらの仕組みを知り、システム設計の際にあるべきアプローチをとっていく。これがアーキテクトの仕事であると捉えています。

Salesforceの留意点にある背景を理解することで、付き合う方法を見つけ、Salesforceの利点を享受していきましょう。

この記事に関連のあるタグ

  • # アーキテクト
  • # 本質志向のアーキテクチャ視点