SaaS におけるオンボーディングとは ?
SaaS on AWS を成功に導くためのポイントとは ? 第 5 回
青嶋 智久
こんにちは ! パートナーソリューションアーキテクトの青嶋です。
前回の投稿 では SaaS におけるアイデンティティ管理についてご紹介しました。ログインしたユーザーを「認証」により誰であるかを判断し、そのユーザーがどのテナントに属しているかを「テナントコンテキスト」により伝達し、そしてそのユーザーがどのリソースを使えるかを「認可」によりコントロールするイメージを掴んでいただけたのではないかなと思います。
では、これらのテナントごとのユーザーの認証・認可をする前段階、つまりテナントやユーザーの作成はどうするのでしょうか ?
今回はこの前段階のプロセスである「オンボーディング」に目を向けて解説していきたいと思います。
初回の投稿 でも触れられていたように、SaaS においてはサービス全体を提供し管理する「提供者」、テナント全体のユーザーとその権限を管理する「テナント管理者」、そしてテナントに属するユーザーである「利用者」を意識する必要があります。提供者はサービスの要件に合わせて、テナントやテナント管理者、利用者を適切に作成し、管理できる仕組みを提供する必要があります。そして、これらの仕組みを適切に取り扱うためにサービスの要件に応じた一連のプロセスが必要です。ここではテナントやテナント管理者、利用者を追加する際にはどのような考え方で、何をしなければならないかを説明していきたいと思います。
この連載記事のその他の記事はこちら
- 選択
- 第 1 回 SaaS on AWS を成功に導くためのポイントとは ?
- 第 2 回 SaaS ビジネスの成否を分けるテナント分離戦略
- 第 3 回 動的なポリシー生成を使ったテナント分離
- 第 4 回 SaaS on AWS における認証認可の実装パターンとは ?
- 第 5 回 SaaS におけるオンボーディングとは ?
- 第 6 回 SaaS におけるデータパーティショニング設計の勘所
- 第 7 回 SaaS におけるメトリクスの取得と可視化
- 第 8 回 マルチテナントアーキテクチャのコスト分析
- 第 9 回 SaaS における料金プランとメータリング、ビリング
- 最終回 AWS と始める SaaS 化への道
SaaS におけるオンボーディングとは ?
まずオンボーディングという言葉を見ていきましょう。
オンボーディングとは元々は人事の用語で、新しいメンバーがいち早く組織に定着して活躍できるようにサポートするプロセスのことです。そこから転じて IT のシステムに関わる文脈でも用いられるようになりました。
広義のオンボーディングには、提供するサービスになにかしらの新しい構成を加えるプロセス全体の意味と、サービスを利用するユーザーが使い慣れるよう立ち上がりを支援するカスタマーサクセスの意味があります。この投稿で扱うオンボーディングは前者の意味になります。そして SaaS におけるオンボーディングでは、サービスに新しくテナントを追加する「テナント・オンボーディング」と、テナントに新しくユーザーを追加する「ユーザー・オンボーディング」があります。
SaaS において、これらのオンボーディングを自動化することはスケーラビリティやアジリティを得るための基本要素となります。なぜならば、SaaS ではいつでも提供者がテナントを追加できること、テナント管理者が利用者を追加できることが期待されるからです。数多くのテナントやユーザーが想定される SaaS の場合、手動でこれらのテナントやユーザーをセットアップするのは現実的な手段ではなくなることがあります。そのため、できるだけオンボーディングを自動化することがおすすめです。それではテナント・オンボーディングとユーザー・オンボーディングのプロセスを見ていきましょう。
テナント・オンボーディングの構成要素
テナント・オンボーディングは、SaaS の提供者がテナントを新しく構成するプロセスです。そのプロセスの中で新しいテナントを作成し、テナント管理者を作成し、関連するサービスの設定を行います。
このテナント・オンボーディングは大きく 4 つのプロセスに分類することができ、「テナント管理の構成」、「ユーザー管理の構成」、「請求管理の構成」、「プロビジョニング」があります。テナント・オンボーディングを行う場合には、これら 4 つのプロセスを必要に応じて適切に進める必要があります。これらのプロセスの役割を順に確認していきましょう。
テナント管理の構成
テナント管理の構成を行うプロセスでは、テナント管理サービスに対してテナント固有の情報を設定します。テナント固有の情報には、例えばテナントの有効/無効の設定や、機能の有効/無効、状態やステータス、あるいはテナントごとに契約しているプランなどがあります。このテナント管理サービスを使って SaaS システム内で集中的にテナントを管理することで、提供者は各テナントがどのような状態なのか、どのような設定がされているのかを横断的に管理できるようになります。
ユーザー管理の構成
各テナントには、テナント内のユーザーを管理する仕組みと、そのテナントを管理するテナント管理者が必要です。そのためユーザー管理の構成では、テナント内のユーザーを管理する仕組みをプロビジョニングし、テナント管理者をそのテナントに追加する必要があります。プロビジョニングの際には他に、認証後にユーザーがどのテナントに属するかを判断するためのテナントコンテキストの設定やテナント分離の戦略に沿った分離ポリシーの設定が必要です。これらのユーザーの管理を一つのサービスでまとめて取り扱うことで、テナント管理者だけでなく、テナントごとの全てのユーザーを一元的に管理できるようになります。
請求管理の構成
SaaS では、テナントの契約に沿った請求を行う仕組みが必要です。一口に請求と言っても、定額制なのか従量制なのか、どのようなプランがあるのか、あるいはどのような支払い方法があるのか、その請求方法は多岐に渡ります。請求管理の構成を行うプロセスでは、テナント・オンボーディング時に契約に応じた請求方法を請求管理サービスに登録することで契約ごとのサービス料金の請求をできるようにします。
プロビジョニング
前々回 の投稿のテナント分離の戦略で説明したように、SaaS のアーキテクチャーではテナント分離の戦略に応じて必要なリソースを構築しなければなりません。例えばサイロモデルでテナントごとにサービスを分離したい場合などがあると思います。そのような場合、テナント追加時にテナントごとの新たなサービスやそのサービスへのルーティングなどのプロビジョニングが必要です。
テナント・オンボーディングのアーキテクチャー例
次にテナント・オンボーディングのアーキテクチャー例を用いて、具体的にどのような手続きが行われるか見ていきましょう。次の図は、SaaS で自動化されたテナント・オンボーディングを実現するための一例になります。各プロセスや順番はこのアーキテクチャー例固有のものになりますので、想定するシステムがあれば適宜読み替えていただければと思います。
①テナント・オンボーディングの開始方法は、提供者による手動での開始や、テナント管理者によるセルフサービスでの開始があります。テナント・オンボーディングが開始されると、テナント登録サービスにより各プロセスが実行されます。
テナント管理の構成
②では管理の構成の手続きが行われます。サービスを利用し始めるのに必要なテナント固有の情報を、AWS Lambda 関数を通じて Amazon DynamoDB テーブルに保存します。提供者は、このテナント管理サービスの情報を参照することで、テナントの設定や状況を把握することができます。
ユーザー管理の構成
③ではテナントごとのユーザー管理の設定とテナント管理者の作成を、ユーザー管理サービスに依頼しています。ここでは Amazon Cognito ユーザープールをアイデンティティストアとして用います。ユーザー管理サービスは、依頼された内容に応じて、④Amazon Cognito 上にユーザープールを作成・設定します。加えてテナント分離戦略に沿ったリソースのアクセス管理を行うために、⑤AWS Identity and Access Management (IAM) の IAM ポリシーや IAM ロールの設定を行います。
請求管理の構成
⑥では請求管理サービスに対して、そのテナントの契約に沿った請求情報の設定を依頼しています。請求管理サービスはバックエンドの請求サービスと連携しており、テナントの契約プランや支払い情報など、⑦提供するサービスの仕様や契約に沿った手続きを行います。
プロビジョニング
⑧では新しく作成するテナントに必要なリソースのプロビジョニングを依頼しています。AWS ではこのようなケースでは AWS CodePipeline や AWS CloudFormation などプロビジョニングが自動化できるサービスを活用するのがおすすめです。
ユーザー・オンボーディングのプロセス
テナント内に新たに利用者を追加する場合、新規ユーザーを作成するプロセスがテナントの作成とは別に必要になります。例えばウェブサービスを利用し始める際のサインアップ、あるいはテナント管理者によるユーザー追加のプロセスをイメージしていただければと思います。
SaaS におけるユーザー・オンボーディングとは、ユーザーを作成し、テナントと紐づけるプロセス全体のことです。これにより、SaaS システムはアクセスしてきたユーザーがどのテナントに属するのか判断でき、適切なリソースへのアクセスをコントロールできるようになります。その手段は要件により様々だと思いますが、ここでは前述のテナント・オンボーディングのアーキテクチャー例の後にユーザー・オンボーディングのプロセスが進んでいく例を紹介します。
こちらの図は利用者自身によるサインアップにより、ユーザー・オンボーディングが進んでいく例になります。Amazon Cognito を想定しており、ユーザープールにテナントコンテキストが設定されているため、ユーザープールにユーザーを新しく作成した場合、自動的にそのユーザーはそのユーザープールのテナントに関連付けられます。一例ではありますが Amazon Cognito におけるサインアッププロセスは、次のように進められます。
① ユーザー情報を登録するとユーザーが作成されて、要件に応じて確認コードを使った連絡先情報 (メールアドレスや電話番号など) の確認プロセスが行われます。この時点ではユーザーは作成されていますがサインインはできません。
② 連絡先情報の確認が完了すると確認完了メールが利用者に届きます。一時パスワードが付与されており、利用者は記載されているユーザー名・一時パスワードを使ってサインインができるようになります。
③ ユーザー名・一時パスワードを使って最初のサインインをします。
④ 初回のサインインで、一時パスワードから任意のパスワードへの変更が求められます。任意のパスワードを設定することで、そのテナント内で有効なユーザーアカウントとして取り扱われるようになります。
まとめ
ここまで SaaS におけるテナント・オンボーディングとユーザー・オンボーディングを説明してきましたが、いかがだったでしょうか。
SaaS の場合では 2 つのオンボーディングプロセスを検討する必要があります。テナントリソースの作成、構成、プロビジョニングを自動化することは、SaaS のアーキテクチャーを実現するための基礎となりますので、SaaS の展開を考えている方は是非ご検討いただければと思います。また、これらのオンボーディングを設計、実装した際にはテストを忘れずに行っていただき、想定しているスケーラビリティ、アジリティを満たしているか確認することをおすすめします。本稿ではアーキテクチャーの視点より説明させていただきましたが、ユーザー体験の面からもスムーズにサービスを使い始めることができるというのは、とても重要なポイントになります。
さて次回の連載ですが、次はデータパーティショニングを取り上げていきます。ノイジーネイバー問題などが代表例ですが、テナント分離におけるストレージでは、コンプライアンス、性能要件、セキュリティなど様々な面から検討することが必要になります。これからも皆さまのご意見をもとに役立つ SaaS の情報をどんどん発信していきたいと思います。それでは次回もお楽しみに !
この連載記事のその他の記事はこちら
- 選択
- 第 1 回 SaaS on AWS を成功に導くためのポイントとは ?
- 第 2 回 SaaS ビジネスの成否を分けるテナント分離戦略
- 第 3 回 動的なポリシー生成を使ったテナント分離
- 第 4 回 SaaS on AWS における認証認可の実装パターンとは ?
- 第 5 回 SaaS におけるオンボーディングとは ?
- 第 6 回 SaaS におけるデータパーティショニング設計の勘所
- 第 7 回 SaaS におけるメトリクスの取得と可視化
- 第 8 回 マルチテナントアーキテクチャのコスト分析
- 第 9 回 SaaS における料金プランとメータリング、ビリング
- 最終回 AWS と始める SaaS 化への道
プロフィール
青嶋 智久
アマゾン ウェブ サービス ジャパン合同会社 パートナーソリューションアーキテクト
モバイルアプリケーションエンジニアとしてキャリアをスタートする。その後、ウェブアプリケーション、Mobile Backend as a Service (MBaaS)、DevOps システムに携わり 2021 年にアマゾン ウェブ サービス ジャパン合同会社に入社。
現在は SaaS 担当のパートナーソリューションアーキテクトとして、主に ISV のお客様を支援。
AWS を無料でお試しいただけます