Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント SaaS のはなし

iwasa
January 12, 2024
2.5k

第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント SaaS のはなし

iwasa

January 12, 2024
Tweet

More Decks by iwasa

Transcript

  1. 私と Azure と SaaS いわさ (@Tak1wa) : 江別市 • クラスメソッド株式会社

    ◦ 某クラウド(≠ Azure)ソリューションアーキテクト ▪ 様々なお客様を技術支援( SaaS のお客様も) ▪ Microsoft MVP for Azure (2022.08-) • 前職まで ◦ ソフトウェアエンジニア ▪ .NET, Azure ▪ Microsoft MVP for .NET (2015.10-2019.06)
  2. はなすこと • SaaS の悩みを Azure で解決したい • Azure アーキテクチャセンターの SaaS

    ガイダンス ◦ SaaS の普遍的な問題点と考え方 ◦ Azure サービス固有のガイダンス ◦ いくつか対応してみた例を紹介 • まとめ
  3. SaaS 提供者の悩み • SaaS 固有の悩み必ず発生する ◦ コスト ◦ セキュリティ ◦

    パフォーマンス • クラウドで課題解決するためのガイドラインがあったりする
  4. 課題 • テナント分離性 ◦ シングルテナント/マルチテナント • ノイジーネイバー問題 • コスト分析と最適化 •

    テナントライフサイクル ◦ オンボーディング/オフボーディング ◦ カスタマイズ
  5. 課題 • テナント分離性 ◦ シングルテナント/マルチテナント • ノイジーネイバー問題 • コスト分析と最適化 •

    テナントライフサイクル ◦ オンボーディング/オフボーディング ◦ カスタマイズ • SaaS ガイダンスの「アプローチ」で考え方を学ぶことが出来る
  6. テナント分離 Azure App Service / Functions パフォーマンス分離のために App Service プランを分けるか?

    管理やインフラコスト効果を高くするために単一の共有アプリにするか?間を取って共有プラン? Azure Container Apps テナントごとに Container Apps Enviroment を分けるか?共有か? Azure Kubernetes Service クラスターを共有するか分離するか? 名前空間、RBAC、ネットワークポリシーを使ったテナント分離アプローチはベストプラクティス化している Azure Cache for Redis もし分離するのであればキャッシュインスタンス?データベース? Azure Cosmos DB 分離単位はデータベース?コンテナ?パーティションキー? 共有スループット /専用スループットを組み合わせたハイブリッドパターンもある(クォータ厳しめ) Azure Database for PostgreSQL RLS (Row Level Security) を使ったテナント分離アプローチはベストプラクティス化している Azure SQL Database エラスティックプールを使うか?実は SQL Server でも RLS は使える Azure SQL のドキュメントにもマルチテナント SaaS 専用ページあり https://learn.microsoft.com/ja-jp/azure/azure-sql/database/saas-tenancy-app-design-patterns Azure Storage テナント分離単位はストレージアカウント? BLOBコンテナ?共有する? 階層型名前空間を使ってテナントデータのアクセス許可を行うことも出来る Azure Front Door テナント固有のカスタムドメイン?デプロイスタンプへのルーティング方法は? Azure NAT Gateway テナントごとに異なるアウトバウンド IPアドレスが必要か? Azure Private Link Private Link サービスとロードバランサーはテナント共有か?専用か? Compute Storage / Data Network
  7. テナント分離 Azure App Service / Functions パフォーマンス分離のために App Service プランを分けるか?

    管理やインフラコスト効果を高くするために単一の共有アプリにするか?間を取って共有プラン? Azure Container Apps テナントごとに Container Apps Enviroment を分けるか?共有か? Azure Kubernetes Service クラスターを共有するか分離するか? 名前空間、RBAC、ネットワークポリシーを使ったテナント分離アプローチはベストプラクティス化している Azure Cache for Redis もし分離するのであればキャッシュインスタンス?データベース? Azure Cosmos DB 分離単位はデータベース?コンテナ?パーティションキー? 共有スループット /専用スループットを組み合わせたハイブリッドパターンもある(クォータ厳しめ) Azure Database for PostgreSQL RLS (Row Level Security) を使ったテナント分離アプローチはベストプラクティス化している Azure SQL Database エラスティックプールを使うか?実は SQL Server でも RLS は使える Azure SQL のドキュメントにもマルチテナント SaaS 専用ページあり https://learn.microsoft.com/ja-jp/azure/azure-sql/database/saas-tenancy-app-design-patterns Azure Storage テナント分離単位はストレージアカウント? BLOBコンテナ?共有する? 階層型名前空間を使ってテナントデータのアクセス許可を行うことも出来る Azure Front Door テナント固有のカスタムドメイン?デプロイスタンプへのルーティング方法は? Azure NAT Gateway テナントごとに異なるアウトバウンド IPアドレスが必要か? Azure Private Link Private Link サービスとロードバランサーはテナント共有か?専用か? Compute Storage / Data Network
  8. まとめ • Azure アーキテクチャセンターにまとまってる ◦ オンプレの人も、他のパブリッククラウドの人も見よう ◦ 勉強にしかならない • 今回気がついた点

    ◦ クラウドサービスの様々な制限事項にぶつかる可能性がかなり高い ◦ Azure SaaS ガイドラインにはサービスごとにどういう制限事項があって、何を考えなきゃいけ ないのかしっかり書いてある
  9. • Q1: Azure Functions でビジネスロジック実行するときに、テナントコンテキストに従っ てサービスロールを昇格させたい。どうやるのが良い? ◦ テナントAのアクセストークン経由で呼び出された Azure Functions

    はテナントA用のCosmos DB コンテ ナにアクセスのみ可能。みたいな • Q2: Azure AD B2C から他の IdP に移行した例ある?うまくいった話や苦労話があれ ば聞きたい さいごに: 誰か懇親会とかで教えてください