Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント Saa...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
iwasa
January 12, 2024
4.4k
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
AI-DLC の紹介
tak1wa
0
510
医療情報システムの安全管理に関するガイドライン第7.0版の変更点を確認してみた
tak1wa
0
430
OWASP Juice Shop に AWS Security Agent で ペネトレーションテストを実施した結果
tak1wa
0
490
最近の医療 x AWS
tak1wa
0
630
3大クラウドから学ぶクラウド上でのランサムウェア対策
tak1wa
0
1.1k
Lambdaの様々な新機能とユースケース
tak1wa
0
500
AWS最新機能を駆使したマルチテナントSaaSアーキテクチャーを考えてみる
tak1wa
0
1.2k
Tsumiki を使って仕様駆動開発をやってみよう
tak1wa
0
1.1k
社内開発で Amazon Q Developer を使っていたが Kiro に乗り換えた話
tak1wa
0
1.8k
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Music & Morning Musume
bryan
48
7.4k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
WENDY [Excerpt]
tessaabrams
14
39k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
The Cost Of JavaScript in 2023
addyosmani
55
10k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
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 に移行した例ある?うまくいった話や苦労話があれ ば聞きたい さいごに: 誰か懇親会とかで教えてください
おわり