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
シングルテナント構成のSaaSのIaCにTerraform Workspacesを導入してみた
Search
kazue
August 29, 2022
Programming
1
2.1k
シングルテナント構成のSaaSのIaCにTerraform Workspacesを導入してみた
https://dev.classmethod.jp/articles/terraform-workspaces-for-single-tenant-saas-iac/
kazue
August 29, 2022
Tweet
Share
More Decks by kazue
See All by kazue
AI駆動開発に向けた新しいエンジニアマインドセット
kazue
0
470
わかる!Hashicorp Waypoint | HashiTalks: Japan2023
kazue
0
960
RDS Proxy, Amazon Kendra, Amazon CodeGuruの紹介 #cmregrowth #reinvent
kazue
0
1.8k
AuroraかRDSどちらを選ぶべきか | Developers.IO 2019 in OSAKA
kazue
0
190k
Codeシリーズで始めるはじめてのCI/CD
kazue
1
510
AKIBA.AWS#14 Terraform v0.12
kazue
0
1.9k
Other Decks in Programming
See All in Programming
CSC509 Lecture 02
javiergs
PRO
0
400
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
150
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
AIで開発生産性を上げる個人とチームの取り組み
taniigo
0
130
XP, Testing and ninja testing ZOZ5
m_seki
2
280
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
910
Your Perfect Project Setup for Angular @BASTA! 2025 in Mainz
manfredsteyer
PRO
0
120
Pythonスレッドとは結局何なのか? CPython実装から見るNoGIL時代の変化
curekoshimizu
4
1.3k
CSC509 Lecture 05
javiergs
PRO
0
290
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
natmark
2
450
CSC305 Lecture 02
javiergs
PRO
1
260
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
220
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Designing for Performance
lara
610
69k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Become a Pro
speakerdeck
PRO
29
5.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
Transcript
1 シングルテナント構成のSaaSのIaCに Terraform Workspacesを導入してみた Masaki Kazue クラスメソッド株式会社 CX事業本部 Delivery部 MADグループ
2 自己紹介 Masaki Kazue クラスメソッド株式会社 CX事業本部 Delivery部 MADグループ 2019年1月 JOIN
JOINまでの職歴 受託開発 8年 自社サービス開発運用保守 2年 blog : https://dev.classmethod.jp/author/kazue-masaki/ twitter: https://twitter.com/kazueeee_
3 このセッションのゴール • Terraform Workspacesについて理解する • シングルテナント構成のSaaSにTerraform Workspacesを使 う具体的な方法を学ぶ •
シングルテナント x Terraformにおける様々な構成案を学 ぶ
4 Terraform Workspacesとは
5 Terraform Workspacesとは • Terraform側でStateを分けて管理ができる機能 • Workspaces使っていない = default workspaceを使ってい
る
6 ⚠Terraform Cloudのworkspacesとは別物 https://www.terraform.io/cloud-docs/workspaces#terraform-cloud-vs-terraform-cli-workspaces
7 公式ユースケース • テストに使う ◦ 本番環境へのプロビジョニングの前に全く同じ構成を別で作成 してみる ◦ Gitのフィーチャーブランチ毎にworkspace作成 https://www.terraform.io/language/state/workspaces#when-to-use-multiple-workspaces
8 別のユースケース? シングルテナント構成のSaaSで使う
9 シングルテナント?
10 シングルテナント(vs マルチテナント)
11 シングルテナント・マルチテナント・ブリッジ • シングルテナントの方が利用者間での問題に対処しやすい ◦ 他の利用者のデータにアクセスできてしまう ◦ 他の利用者の負荷のせいで重くなる • 一方でリソース効率が悪い
• マルチテナントはその逆 • ブリッジ=両方を適宜使い分けもアリ
12 プロジェクト要件 • 企業向けSaaS (BtoB) • 機密情報を扱う部分(ワークロード)あり ◦ シングルテナント構成→AWSアカウントを分離 ▪
クロスアカウントアクセスはデフォルト禁止されているのでコント ロールしやすい • 周辺部分はマルチテナント構成
13 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
14 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
15 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
16 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
17 シングルテナント構成の課題
18 解決方針 • Terraform Workspacesで複数環境にプロビジョニング • Assume Roleでクロスアカウント • Step
FunctionsとCodeBuildで並列化&自動化
19 Terraform Workspacesで複数環境にプロビジョニング
20 Assume Roleでクロスアカウント https://registry.terraform.io/providers/hashicorp/aws/latest/docs
21 Assume Roleでクロスアカウント
22 Assume Roleでクロスアカウント
23 Step FunctionsとCodeBuildで並列化&自動化
24 Step FunctionsとCodeBuildで並列化&自動化 buildspec.yml (terraform apply)
25 やってみた感想 • これまでのところ問題なし • リソースの確認がCDアカウントに入ってworkspaceを切り 替えるだけで全アカウント分できるのが便利
26 シングルテナント x Terraformの他の構成案
27 すみません時間切れです https://dev.classmethod.jp/author/kazue-masaki/ ブログ↓で後々書いていきます…
28 まとめ • Terraform WorkspacesはStateを分けて管理できる機能 • シングルテナント構成のSaaSのIaCに使えるかも • Assume Roleと組み合わせるとクロスアカウントも簡単
• Step FunctionsのMap Stateを使えばplan/applyの並列実 行を自動化できる
29 ご清聴ありがとうございました