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
マルチテナントSaaS開発の考え方 with Amplify
Search
matsuura
February 19, 2025
38
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マルチテナントSaaS開発の考え方 with Amplify
社内勉強会のためのスライドです
matsuura
February 19, 2025
Featured
See All Featured
We Are The Robots
honzajavorek
0
400
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
エンジニアに許された特別な時間の終わり
watany
109
250k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
How GitHub (no longer) Works
holman
316
150k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
500
Writing Fast Ruby
sferik
630
63k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
Odyssey Design
rkendrick25
PRO
2
870
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
「マルチテナント」 SaaS開発の考え方 with Amplify Daiki Matsuura 1
最近読んだ本 SaaS開発実績: SylphinaのSaaS化 好き&得意: 好きなAWSサービス: Profile Name:松浦 大輝 2
背景 上記の勉強会に参加し、大変勉強になったので私なりにAmplifyの話もし つつSaaS開発における考え方を社内に共有したい 3
SaaSであるモチベーション 1 本当にSaaSですか? 2 おまけ:Amplify 4 マルチテナントアーキテクチャの懸念事項 3 まとめ 5
目次 4
Introduction SaaSであるモチベーション 5
利用者 利用者 提供形態としてのSaaS 従来のパッケージモデル SaaSモデル 顧客の環境に構築/インストールし利用 SaaS提供者の環境に存在するソフトウェアをネットワーク越しに利用 6
要件定義 設計開発 構築 運用保守 提供事業者 顧客 ヒアリング エンジニア 作成 構築担当者
デプロイ テナント システム 運用担当者 BizDevOps 開発サイクルの比較 従来のパッケージ販売モデル SaaSモデル 要件定義 要件定義 設計 設計 開発 開発 構築 構築 リリース リリース 各顧客ごとに構築し管理していた すべての顧客に対して同じ汎用アプリケーションを提供 テナント テナント テナント 7
要件定義 設計開発 構築 運用保守 提供事業者 顧客 ヒアリング エンジニア 作成 構築担当者
デプロイ テナント システム 運用担当者 BizDevOps 場合によっては各顧 客専用のアプリケー ションが顧客の数分 できる 開発サイクルの比較 従来のパッケージ販売モデル SaaSモデル 要件定義 要件定義 設計 設計 開発 開発 構築 構築 リリース リリース 各顧客ごとに構築し管理していた すべての顧客に対して同じ汎用アプリケーションを提供 顧客別の専用カス タマイズに担当者 がロックされる テナント テナント テナント 8
要件定義 設計開発 構築 運用保守 提供事業者 顧客 ヒアリング エンジニア 作成 構築担当者
デプロイ テナント システム 運用担当者 BizDevOps 場合によっては各顧 客専用のアプリケー ションが顧客の数分 できる SaaSモデル アジャイル開発と相性が良 く、顧客が求めているもの をヒアリングし日々改善し ていく必要がある 顧客別の専用カス タマイズに担当者 がロックされる テナント テナント テナント 開発サイクルの比較 従来のパッケージ販売モデル 要件定義 要件定義 設計 設計 開発 開発 構築 構築 リリース リリース 各顧客ごとに構築し管理していた すべての顧客に対して同じ汎用アプリケーションを提供 9
テナントA テナントB テナントC テナントA専用 アプリケーション テナントB専用 アプリケーション テナントA専用 アプリケーション A専用の運用保守
B専用の運用保守 C専用の運用保守 アーキテクチャ 従来のパッケージモデル SaaSモデル 共通した運用保守 アーキテクチャが顧客毎に違うことがある 共通したアーキテクチャ テナントA テナントB テナントC 10
テナントA テナントB テナントC テナントA専用 アプリケーション テナントB専用 アプリケーション テナントA専用 アプリケーション A専用の運用保守
B専用の運用保守 C専用の運用保守 共通した運用保守 アーキテクチャ 従来のパッケージモデル SaaSモデル アーキテクチャが顧客毎に違うことがある 共通したアーキテクチャ 顧客毎の固有ニーズ を満たせる 顧客毎の固有ニーズ を満たせる テナントA テナントB テナントC 汎用性を高める 汎用性を高める 11
テナントA テナントB v1.1.1 v1.1 テナントBのニーズに合わせ たカスタマイズ パッケージモデルのデメリット v1.0 latest 12
テナントA テナントB v1.1.1 v1.1 テナントBのニーズに合わせ たカスタマイズ パッケージモデルのデメリット v1.0 latest カスタマイズ用の工数や保守費用込
みの契約になり刹那的に見ると儲か っているように見えるがこういった ビジネス展開をしていると・・・ 13
テナントC v1.2.1 v1.2 テナントA テナントB v1.1.1 v1.1 v1.3 v1.3.1 テナントD
パッケージモデルのデメリット v1.0 latest テナントCのニーズに合わせ たカスタマイズ テナントDのニーズに合わせ たカスタマイズ 14
テナントA テナントB テナントC v1.2.1 v1.2 v1.3 v1.3.1 テナントD v1.1.1 v1.1
テナントE v1.4.1 テナントF パッケージモデルのデメリット v1.0 latest v1.4 他のテナントに提供したカス タマイズを使い回すこともあ る 15
テナントA テナントB テナントC v1.2.1 v1.2 v1.3 v1.3.1 テナントD v1.1.1 v1.1
テナントE v1.4.1 テナントF v1.0 v1.4 どの顧客に対してどんなカスタマイズを提供してい るか把握しづらくなり、またコンフリクトを解消し ないとメイン機能の最新版を提供できない パッケージモデルのデメリット latest 16
テナントA テナントB テナントC v1.2.1 v1.2 v1.3 v1.3.1 テナントD v1.1.1 v1.1
テナントE v1.4.1 テナントF v1.0 v1.4 それ即ちどこかのタイミングでバグが入ってしまい 最新版で解消されていたとしても各顧客それぞれに 迅速に提供することが非常に困難である パッケージモデルのデメリット latest 17
テナントA テナントB テナントC ・・・ SaaSモデルの場合 v1.0 18
SaaSモデルの場合 v1.0 v1.1 19 テナントA テナントB テナントC ・・・ テナントA テナントB
テナントC ・・・
SaaSモデルの場合 v1.0 latest v1.1 v1.2 v1.3 顧客別に枝分かれすることなく共通した アーキテクチャなので全顧客が最新版を使える 20 テナントA
テナントB テナントC ・・・
自動化 汎用化 SaaSの目的 21
自動化 汎用化 = ビジネスのスケール SaaSの目的 22
引用元: https://speakerdeck.com/nemops/marutitenanto-de-saas-wozuo-rututedouiukotonandesuka?slide=18 23
引用元: https://speakerdeck.com/nemops/marutitenanto-de-saas-wozuo-rututedouiukotonandesuka?slide=19 24
SaaS開発はアプリケーションの開発だけじゃない 25
管理コンソール SaaSは二つのパーツに分けられる コントロールプレーン アプリケーションプレーン 26 フロントエンド micro service micro service
micro service micro service バックエンドアプリケーション オンボーディング 請求 ID管理 テナント管理 ユーザー管理 監視 分析 デプロイ
コントロールプレーンの意義 27 自動化された スムーズなオンボーディング レベニュー テナントと ユーザー管理 メトリクス 機能追加改善 SaaSとは一言で表すとスケールビジネス
俊敏性 スケールの容易性 セルフサインアップ テナントの一括管理 初期コスト0 継続的な機能追加改修 常に最新版 アクセシビリティ メンテナンス性 サポート体験
SaaSのメリット SaaS利用者 SaaS提供者 レベニュー キャッシュフロー予測 28
マルチテナントアーキテクチャでの 懸念事項 29
企業A 企業B 企業C 利用者A 利用者C 利用者B テナントとは テナントとはSaaSを利用する顧客の契約単位のこと。 企業単位である場合もあれば、事業部などの小規模なチーム単位、個人単位といった場合もある。 30
テナントA テナントB application micro service micro service micro service micro
service application micro service micro service micro service micro service application プールモデル と サイロモデル プールモデル サイロモデル micro service micro service micro service micro service テナントA テナントB 31
テナントAのデータ テナントBのデータ テナントA テナントB セキュリティ 32
テナントAのデータ テナントBのデータ テナントA テナントB セキュリティ 33
Amplify での マルチテナントアーキテクチャ 34 おまけ
Amplify とは フルスタックアプリケーションを簡単に開発・デプロイできるAWSサービスです Amplifyを用いることでAWSインフラを簡単に構築することができ(IaC)、 開発者はアプリケーションの実装に専念することができます。 35
Amplify とは フルスタックアプリケーションを簡単に開発・デプロイできるAWSサービスです Amplifyを用いることでAWSインフラを簡単に構築することができ(IaC)、 開発者はアプリケーションの実装に専念することができます。 36 最近CLIとCloudformationベースだったGen1からCDKベースのGen2に大幅アップデートが入りました
テナントAのCognitoグループ テナントBのCognitoグループ Cognitoユーザープール テナントAのユーザー テナントBのユーザー Amplify でのマルチテナントアーキテクチャ サーバーレスでプールモデルのアーキテクチャにすることが得意です 37 テナントAのデータ
テナントBのデータ データテーブル テナント LP オンボーディング処理
テナントAのCognitoグループ テナントBのCognitoグループ Cognitoユーザープール テナントAのユーザー テナントBのユーザー Amplify でのマルチテナントアーキテクチャ サーバーレスでプールモデルのアーキテクチャにすることが得意です 38 テナントAのデータ
テナントBのデータ データテーブル テナント LP オンボーディング処理
テナントAのCognitoグループ テナントBのCognitoグループ Cognitoユーザープール テナントAのデータ テナントBのデータ テナントAのユーザー テナントBのユーザー Amplify でのマルチテナントアーキテクチャ Amplify
ではCognitoグループベースの認可を簡単に設定することができます。 39 データテーブル
テナントAのCognitoグループ テナントBのCognitoグループ Cognitoユーザープール テナントAのデータ テナントBのデータ テナントAのユーザー テナントBのユーザー Amplify でのマルチテナントアーキテクチャ Amplify
ではCognitoグループベースの認可を簡単に設定することができます。 40 データテーブル たった一行のコードがデータを守ります
Amplify のすゝめ 41 ということでAmplifyを使うと開発者は少ないコードを実装するだけであとは Amplifyがよしなにしてくれるのでアプリケーションの実装に専念することが できスピーディに開発できるのでおすすめです
まとめ 42
43 まとめ BizDevOps3部門がSaaS開発の認識をしっかりと共有しよう SaaSとは 提供モデルであり、ビジネスをスケールさせる手段である SaaS開発ではアプリケーションプレーンだけでなく コントロールプレーンも用意しよう SaaS開発でもAmplifyを使うとスピーディに始められるよ
終わり 44