[レポート] re:Invent 2023 : SaaS on AWS セッションまとめ #AWSreInvent

2023.12.26

いわさです。

今年の re:Invent では、近頃私が注力している SaaS on AWS のワークショップを中心に受けてきました。
Breakout Session については帰国後に見れるだろうということで、ようやく全部見終わりました。

この記事では関係セッションの見どころやサマリを紹介したいと思います。 オンデマンド動画も埋め込んでおくので興味ある方は動画のほうも見てください。

re:Invent 2023 の SaaS on AWS セッション

SaaS on AWS のセッションは「SAS」というプレフィックスのセッション番号のものが対象です。 厳密には上記以外にもコンテナやストレージなどの観点で SaaS on AWS 観点のセッションがあるのですが、この記事では「SAS」セッションのみを対象にしたいと思います。

セッションタイプに関わらず、SAS のセッションラインナップは次のようになっています。

セッションコード セッションタイプ タイトル 動画公開
SAS301 Workshop SaaS and AIML: Inside a multi-tenant AIML solution -
SAS302 Chalk Talk A look inside Saas networking, routing, and integration patterns -
SAS303 Chalk Talk Inside the SaaS control plane -
SAS304 Breakout Session SaaS deep dive: Inside a scalable, efficient multi-tenant architecture
SAS305 Breakout Session SaaS architecture pitfalls: Lessons from the field
SAS306 Breakout Session SaaS meets AIML & generative Al: Multi-tenant patterns & strategies
SAS307 Chalk Talk SaaS tenant isolation: Patterns and strategies -
SAS308 Breakout Session SaaS anywhere: Designing distributed multi-tenant architectures
SAS401 Workshop SaaS microservices deep dive: Multi-tenancy meets microservices -
SAS402 Workshop SaaS multi-tenancy meets Amazon EKS: A hands-on deep dive -
SAS403 Workshop SaaS survivor: Building a rich multi-tenant operations experience -
SAS404 Chalk Talk Designing and implementing a SaaS cost-per-tenant strategy -
SAS405 Chalk Talk Federating identity in multi-tenant SaaS environments -
SAS406 Breakout Session SaaS DevOps deep dive: Automating multi-tenant deployments
SAS407 Builders' Session Kubernetes DevOps tooling meets SaaS: Automating tenant provisioning -
SAS408 Chalk Talk Chaos and SaaS: Pushing your multi-tenant architecture -

16 個のセッションのうち、なんと動画公開されているのは Breakout Session の 5 個のみ!
Workshop のいくつかは現地参加しいくつかレポートを作成させて頂きましたが、Chalk Talk も参加しておけば良かったなぁと悔やまれます。まぁセッションの優先度や会場の位置の兼ね合いで、一人だと厳しいとは思うのですが。

本日は公開済みの 5 つのオンデマンド動画を視聴しましたので紹介したいと思います。
特に目新しいアップデートはなかったはずだと思って一応視聴したくらいだったのですが、SAS306 では Bedrock を SaaS アプリケーションに組み込む際のマルチテナンシーについて言及されており、なるほどと思いました。
また、SAS308 の SaaS Anywhere というアーキテクチャーパターンについては初めて聞いたのでこちらも学びがありました。
一方で、てっきり Verified Permission 使っていこうぜみたいなセッションが出てくるのではと思っていたのですがこちらは無かったですね。400 レベルのチョークトークでもしかしたら触れられていたのかもしれないです。

実は、SAS305 は SaaS on AWS に興味のある方には動画を見てもらいたいです。何やら今年度リリース出来なかった新機能について言及されていました...!

SAS304 : SaaS deep dive: Inside a scalable, efficient multi-tenant architecture

オンデマンド動画

セッション概要

SaaSのワークロードは、構築者にアーキテクチャのユニークな課題をもたらします。
チームは常に、異なる地域、パフォーマンス、アクティビティ・プロファイルにわたって変化するマルチテナントの消費パターンに対応できる戦略、ポリシー、デプロイメント・モデルを模索しています。
このセッションでは、マルチテナントのスケーリング、弾力性、パフォーマンスに関する課題の詳細を掘り下げ、効率的なSaaS環境を構築するために使用される一般的なテクニックを探ります。
マルチテナント・アーキテクチャの価値と影響を最大化するために使用できる設計および実装戦略を探ります。
これには、ソリューションのスケーリング・パフォーマンス・モデルを形成するために、ポッドセル、スロットリング、パッケージング、その他の戦略をどのように使用するかを検討することも含まれます。

スピーカー

  • Tod Golding

ポイント

この動画ではマルチテナントアプリケーションの場合のスケールとレジリエンスをどう実装するかについて言及されています。

スケール

スケールについてはビジネス面と技術面の両方でバランスを取る必要があります。
中身の話としては SaaS on AWS によく出てくる、テナント分離とテナントプロビジョニング、フィーチャーフラグなどの話になっています。
一部実装面で Karpenter が登場しましたが、レベル 300 なので細かい実装側のディープダイブまではされていません。

レジリエンス

レジリエンスについても SaaS on AWS のベストプラクティスである以下のあたりを再復習するような内容となっています。

  • テナントアクティビティの管理とスロットリングポリシーの適用
  • テナント分離やサービスの分離
  • 認証、ログ、メトリクスなどの基盤サービスの抽象化

SaaS on AWS の新しい情報をキャッチアップするというより、基本を再復習するのに良いコンテンツだと思いました。

SAS305 : SaaS architecture pitfalls: Lessons from the field

オンデマンド動画

セッション概要

マルチテナントSaaSアーキテクチャを構築するための絶対的な道筋は1つではありません。
SaaSビジネスの特定のニーズに対応する戦略の組み合わせに到達することは困難です。
このセッションでは、SaaSビジネスの成長、規模拡大、効率化に影響を与えている一般的なパターンとペインポイントを振り返ります。
このセッションの焦点は、チームが直面する最大の課題と罠を掘り下げ、チームがこれらの落とし穴を回避または克服するのに役立つ具体的な戦略とアプローチを特定することです。
アーキテクチャ、設計、コーディング、運用など、これらの課題の全領域を探求します。

スピーカー

  • Michael Beardsley
  • William Tarr

ポイント

このセッションも、一言でいうと SaaS on AWS の基本を復習出来るセッションと言ったところです。
次はセッションの終わり際に出てくるスライドなのですが、テナント分離モデル、ノイジーネイバー、コスト、オンボーディング、テナントごとのカスタマイズと、SaaS の代表的な課題に対してどういうアプローチが取れるのかが解説されています。

テナント分離モデルの移行が出来ない

ファーストユーザー向けにサイロモデルで提供開始した後になかなかアーキテクチャーの移行が出来ないケースがあります。
このスライドではデータベースやストレージのデータパターンを整理してサイロ化が必要かとうか整理するアプローチが提案されています。

例えばデータパターンを整理した結果、OpenSearch Serverless を共有化出来たり、一部の顧客は Aurora のサイロ化までは要求せずにコストダウンを希望している場合もあります。
アプリケーションレイヤーも、例えば EKS だと Namespace でテナントを分けるだけで良い場合もあります。

ノイジーネイバー問題

全てのテナントが同じ使用方法とは限らず、特定の顧客が他のテナントに悪影響を与えるノイジーネイバーという問題が発生する場合があります。

ノイジネイバー対策について、まずテナントごとの負荷状況の分析を行い、そこから様々なアプローチで使用制限を設定することが提案されています。

  • API Gateway の使用量プラン
  • Lambda のプロビジョニング済み同時実行
  • RDS の共有DBのサイズ

トランザクション、テナント、機能あたりの単価を優先せずに、総コストを見てしまう

テナントが増えれば増えるほど、AWS 利用料金は通常は大きくなります。

ただし、総コストではなくたとえばトランザクションあたりの料金など単価を大事にしたほうが良いと言及されています。
そのためにはコストの把握が必要で、サイロモデルであればコスト配分タグでどうにか確認が出来ますが、プールモデルの場合は手作業でやるしかありません。
そのためのアプローチとしてテナントコンテキストの挿入と、分析が説明されています。

なおこのセクションで次のような言及がありました。近いうちに新機能くるか?

I'd love to say that AWS has a new service and we've launched it and it's gonna tell you all your shared costs. we didn't launch that this year.

テナントオンボーディングに時間がかかりすぎている

新しいテナントのオンボーディングに時間がかかりすぎると、ビジネス機会を損失します。
ソフトウェアのリリースサイクルだけでなく、テナントオンボーディングにもサイクルがあり意識する必要があります。

このスライドではオンボーディングをコア機能として実装する方法について言及されています。
このスライドは別のワークショップでも登場していました。

テナントオンボーディングの自動化を行う際のポイントについても言及されていました。

テナント固有のカスタマイズ

テナント固有のカスタマイズが必要になってしまうケースがあります。
テナント個別のモジュールを用意するとバージョン管理が困難になりますが、フィーチャーフラグを活用するアプローチについて説明されています。

SAS306 : SaaS meets AIML & generative Al: Multi-tenant patterns & strategies

オンデマンド動画

セッション概要

Saas環境でAIMLとジェネレーティブAlをサポートするには、チームがマルチテナントに関するさまざまな課題に取り組む必要がある。
プロバイダーは、テナントをモデルにどのようにマッピングするか、推論をテナント向けにどのように拡張するか、ソリューションを他のAIMLサービスとどのように統合するか、テナント固有のニーズを満たすためにLLMをどのように調整するかを検討する必要があります。
本セッションでは、AIMLをSaaSの一部として提供する際に生じる設計、パフォーマンス、分離、およびエクスペリエンスに関する共通の課題など、マルチテナントとAIMLとの相互関係について掘り下げます。
SaaS環境でAIMLとジェネレーティブAlを適用する際に考慮すべきパターンと戦略を特定することを学びます。

スピーカー

  • Tod Golding
  • James Jory

ポイント

このセッションは SaaS に生成 AI を組み込んだ場合の考慮点について言及されています。
このセッションおもしろくて、ちゃんと SaaS on AWS の話をしていました。

具体的には RAG リソースやテナントごとのエンドポイントに対してどのようにテナント分離性を高めるかという話や、オンボーディング時のプロビジョニング方法などについて言及されています。

セッションを視聴した限りだと、テナント分離周りは S3 や DynamoDB などと同様にテナントコンテキストに従って動的な Assume Role を行いクロステナントアクセスを発生させないようにする手法が有効だと理解しました。

SAS308 : SaaS anywhere: Designing distributed multi-tenant architectures

オンデマンド動画

セッション概要

すべてのSaaSプロバイダーが、自社のインフラ内でソリューションのすべての可動部分を稼働させるという余裕を持っているわけではありません。
様々な要因により、SaaSチームはより多様なアーキテクチャ・モデルをサポートしています。
アーキテクチャには、顧客がホストするデータ、アプリケーションの一部のエッジ・デプロイメント、オンプレミスのコンポーネントなどが含まれる場合があります。
このセッションでは、SaaSソリューションの回復力、運用効率、俊敏性の目標を損なうことなく、このような分散モデルの複雑性をサポートするために使用できるアーキテクチャ戦略を探ります。
また、SaaSソリューションの回復力、運用効率、俊敏性の目標を損なうことなく、この複雑な分散モデルをサポートするためのアーキテクチャ戦略について説明します。

スピーカー

  • Peter Yang
  • Dhammika Sriyananda

ポイント

このセッションは通常の SaaS アーキテクチャーではなく、SaaS Anywhere というアーキテクチャーパターンに対してのお話となっています。

SaaS Anywhere という概念をそもそも知らなかったのですが、SaaS プロバイダーが提供する環境以外にもアプリケーションプレーンやデータソースなどの環境が存在するパターンのことをそう呼んでいるらしいです(おそらくAWSが)

セッション内でも説明されていますが、セッション視聴前に軽く以下の記事などに目を通しておくと理解しやすいかもしれません。

SaaS Anywhere の中にもさらにいくつかのパターンがあって、それらのユースケースが考慮事項などを踏まえてどういう設計をすべきか、などについて解説されています。

SAS406 : SaaS DevOps deep dive: Automating multi-tenant deployments

オンデマンド動画

セッション概要

SaaS環境では、DevOps戦略は異なります。
マルチテナント・アーキテクチャでは、テナントの階層やペルソナが異なるため、テナントのプロファイルに基づいて条件付きでリソースのプロビジョニング、設定、デプロイを行う自動化が必要になります。
このセッションでは、2つの具体例を見ながら、SaaS環境のオンボーディング、デプロイ、テナント更新をサポートするために組み合わされるさまざまなツール、テクノロジ、サービスについて学びます。
1つ目の例ではコンテナベースの環境のためにArgo Workflows、Terraform、Helm、Flux v2を使用し、2つ目の例ではサーバーレスベースの環境のためにAWS CodePipeline、AWS Step Functions、AWS CloudFormationを使用します。

スピーカー

  • Alex Pulver
  • Anubhav Sharma

ポイント

このセッションはレベル 400 となっており、ディープダイブというか、より具体的な実現方法について解説されています。
このセッションではオンボーディングなどテナントのプロビジョニング周りの実装方法が解説されています。

コンテナアーキテクチャーの場合の自動化のツールとして、Terraform、HELM、Argo workflow、flux などが用いられています。

サーバーレスアーキテクチャーの場合は SAM や Code シリーズが用いられています。

さいごに

本日は AWS re:Invent 2023 の SaaS on AWS のセッションをまとめて紹介してみました。

大枠としては従来の SaaS on AWS の基礎的な部分を一通り学べる内容になっていました。
また、ワークショップでは SaaS on AWS のドキュメントでは言及されていない具体的な実装例などについて解説されているのでとても参考になると思います。さすがレベル 400。

新しいところだと生成 AI などの外部サービスと連携する際にもマルチテナンシーを意識するだとかそういったところあたりでしょうか。
SAS305 で匂わしのあった新機能が気になりますね...