Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント Saa...
Search
iwasa
January 12, 2024
4.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント SaaS のはなし
iwasa
January 12, 2024
More Decks by iwasa
See All by iwasa
OWASP Juice Shop に AWS Security Agent で ペネトレーションテストを実施した結果
tak1wa
0
310
最近の医療 x AWS
tak1wa
0
380
3大クラウドから学ぶクラウド上でのランサムウェア対策
tak1wa
0
870
Lambdaの様々な新機能とユースケース
tak1wa
0
430
AWS最新機能を駆使したマルチテナントSaaSアーキテクチャーを考えてみる
tak1wa
0
1k
Tsumiki を使って仕様駆動開発をやってみよう
tak1wa
0
990
社内開発で Amazon Q Developer を使っていたが Kiro に乗り換えた話
tak1wa
0
1.8k
Microsoft Azure プランの復習とプラン切り替えのお話
tak1wa
0
560
Amazon Q Detector Library から学ぶセキュアコーディング
tak1wa
0
470
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
My Coaching Mixtape
mlcsv
0
150
We Have a Design System, Now What?
morganepeng
55
8.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
New Earth Scene 8
popppiees
3
2.3k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
Transcript
Azure でのマルチテナント SaaS のはなし 第1回 Azure Traveler 勉強会 札幌の旅
自己紹介 私と Azure と SaaS
私と Azure と SaaS いわさ (@Tak1wa) : 江別市 • クラスメソッド株式会社
◦ 某クラウド(≠ Azure)ソリューションアーキテクト ▪ 様々なお客様を技術支援( SaaS のお客様も) ▪ Microsoft MVP for Azure (2022.08-) • 前職まで ◦ ソフトウェアエンジニア ▪ .NET, Azure ▪ Microsoft MVP for .NET (2015.10-2019.06)
今日話す SaaS SaaS を使う SaaS を提供する
今日話す SaaS SaaS を使う SaaS を提供する
はなすこと • SaaS の悩みを Azure で解決したい • Azure アーキテクチャセンターの SaaS
ガイダンス ◦ SaaS の普遍的な問題点と考え方 ◦ Azure サービス固有のガイダンス ◦ いくつか対応してみた例を紹介 • まとめ
SaaS 提供者の悩み • SaaS 固有の悩み必ず発生する ◦ コスト ◦ セキュリティ ◦
パフォーマンス
SaaS 提供者の悩み • SaaS 固有の悩み必ず発生する ◦ コスト ◦ セキュリティ ◦
パフォーマンス • クラウドで課題解決するためのガイドラインがあったりする
Azure にも...
SaaS ガイダンス in Azure アーキテクチャセンター
SaaS ガイダンス https://learn.microsoft.com/ja-jp/azure/architecture/guide/saas/overview
SaaS ガイダンス
SaaS ガイダンス
SaaS の普遍的な問題点と考え方
テナントの概念 引用元:マルチテナント ソリューションのテナント モデルより https://learn.microsoft.com/ja-jp/azure/architecture/guide/multitenant/considerations/tenancy-models <<シングルテナントモデル>> <<マルチテナントモデル>>
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence テナントが増えるほど インフラコストが...
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence テナントが増えるほど インフラコストが... 他テナントのデータに ユーザーがアクセスしてしまうかも ...
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence テナントが増えるほど インフラコストが... 他テナントのデータに ユーザーがアクセスしてしまうかも ... 全テナント環境をバージョンアップ
テナント増えたらどうする
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence テナントが増えるほど インフラコストが... 他テナントのデータに ユーザーがアクセスしてしまうかも ... 全テナント環境をバージョンアップ
テナント増えたらどうする 全テナントユーザーのリクエストを処理
テナントが生み出す複雑性 引用元:オペレーショナル エクセレンスのバリューステートメントより https://learn.microsoft.com/ja-jp/azure/cloud-adoption-framework/get-started/operational-excellence テナントが増えるほど インフラコストが... 他テナントのデータに ユーザーがアクセスしてしまうかも ... 全テナント環境をバージョンアップ
テナント増えたらどうする 全テナントユーザーのリクエストを処理 特定テナントの影響を他テナントが受ける
課題 • テナント分離性 ◦ シングルテナント/マルチテナント • ノイジーネイバー問題 • コスト分析と最適化 •
テナントライフサイクル ◦ オンボーディング/オフボーディング ◦ カスタマイズ
課題 • テナント分離性 ◦ シングルテナント/マルチテナント • ノイジーネイバー問題 • コスト分析と最適化 •
テナントライフサイクル ◦ オンボーディング/オフボーディング ◦ カスタマイズ • SaaS ガイダンスの「アプローチ」で考え方を学ぶことが出来る
Azure サービス固有のガイダンス
サービス固有のガイダンス Azure Event Hubs の例
いくつか対応してみた
テナント分離 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
テナント分離 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
テナント分離 https://dev.classmethod.jp/articles/azure-cosmos-db-postgresql-rls/
テナント分離
ノイジーネイバー問題 引用元:うるさい隣人のアンチパターン https://learn.microsoft.com/ja-jp/azure/architecture/antipatterns/noisy-neighbor/noisy-neighbor
ノイジーネイバー問題 引用元:スロットリングパターン https://learn.microsoft.com/ja-jp/azure/architecture/patterns/throttling
ノイジーネイバー問題 https://dev.classmethod.jp/articles/azure-api-management-policy/
ノイジーネイバー問題
コスト分析と最適化
コスト分析と最適化 全体のトランザクション数や システム全体のインフラコストは把握可能
コスト分析と最適化 全体のトランザクション数や システム全体のインフラコストは把握可能 テナントごとのトランザクション数や インフラコストは?
コスト分析と最適化 テナントコンテキストで改善
コスト分析と最適化 https://dev.classmethod.jp/articles/azure-ad-b2c-multi-tenancy-custom-claim/
コスト分析と最適化
コスト分析と最適化 https://dev.classmethod.jp/articles/azure-saas-tenant-context-application-insights/
コスト分析と最適化
コスト分析と最適化
Azure サービス固有のガイダンス • ガイダンスには結構詳しく方式など記載されているのでまずは見て使ってみるのが良 さそう • 他クラウドで流用する際にもサービスの特徴が似ているものも多いので同じガイダンス が使えそうな気もしている
まとめ
まとめ • Azure アーキテクチャセンターにまとまってる ◦ オンプレの人も、他のパブリッククラウドの人も見よう ◦ 勉強にしかならない
まとめ • Azure アーキテクチャセンターにまとまってる ◦ オンプレの人も、他のパブリッククラウドの人も見よう ◦ 勉強にしかならない • 今回気がついた点
◦ クラウドサービスの様々な制限事項にぶつかる可能性がかなり高い ◦ Azure SaaS ガイドラインにはサービスごとにどういう制限事項があって、何を考えなきゃいけ ないのかしっかり書いてある
• Q1: Azure Functions でビジネスロジック実行するときに、テナントコンテキストに従っ てサービスロールを昇格させたい。どうやるのが良い? ◦ テナントAのアクセストークン経由で呼び出された Azure Functions
はテナントA用のCosmos DB コンテ ナにアクセスのみ可能。みたいな • Q2: Azure AD B2C から他の IdP に移行した例ある?うまくいった話や苦労話があれ ば聞きたい さいごに: 誰か懇親会とかで教えてください
おわり