シングルテナント構成のSaaSのIaCにTerraform Workspacesを導入してみた
by
kazue
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 シングルテナント構成のSaaSのIaCに Terraform Workspacesを導入してみた Masaki Kazue クラスメソッド株式会社 CX事業本部 Delivery部 MADグループ
Slide 2
Slide 2 text
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_
Slide 3
Slide 3 text
3 このセッションのゴール ● Terraform Workspacesについて理解する ● シングルテナント構成のSaaSにTerraform Workspacesを使 う具体的な方法を学ぶ ● シングルテナント x Terraformにおける様々な構成案を学 ぶ
Slide 4
Slide 4 text
4 Terraform Workspacesとは
Slide 5
Slide 5 text
5 Terraform Workspacesとは ● Terraform側でStateを分けて管理ができる機能 ● Workspaces使っていない = default workspaceを使ってい る
Slide 6
Slide 6 text
6 ⚠Terraform Cloudのworkspacesとは別物 https://www.terraform.io/cloud-docs/workspaces#terraform-cloud-vs-terraform-cli-workspaces
Slide 7
Slide 7 text
7 公式ユースケース ● テストに使う ○ 本番環境へのプロビジョニングの前に全く同じ構成を別で作成 してみる ○ Gitのフィーチャーブランチ毎にworkspace作成 https://www.terraform.io/language/state/workspaces#when-to-use-multiple-workspaces
Slide 8
Slide 8 text
8 別のユースケース? シングルテナント構成のSaaSで使う
Slide 9
Slide 9 text
9 シングルテナント?
Slide 10
Slide 10 text
10 シングルテナント(vs マルチテナント)
Slide 11
Slide 11 text
11 シングルテナント・マルチテナント・ブリッジ ● シングルテナントの方が利用者間での問題に対処しやすい ○ 他の利用者のデータにアクセスできてしまう ○ 他の利用者の負荷のせいで重くなる ● 一方でリソース効率が悪い ● マルチテナントはその逆 ● ブリッジ=両方を適宜使い分けもアリ
Slide 12
Slide 12 text
12 プロジェクト要件 ● 企業向けSaaS (BtoB) ● 機密情報を扱う部分(ワークロード)あり ○ シングルテナント構成→AWSアカウントを分離 ■ クロスアカウントアクセスはデフォルト禁止されているのでコント ロールしやすい ● 周辺部分はマルチテナント構成
Slide 13
Slide 13 text
13 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
Slide 14
Slide 14 text
14 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
Slide 15
Slide 15 text
15 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
Slide 16
Slide 16 text
16 シングルテナント構成の課題 プロビジョニングする インフラリソース群の数が膨大
Slide 17
Slide 17 text
17 シングルテナント構成の課題
Slide 18
Slide 18 text
18 解決方針 ● Terraform Workspacesで複数環境にプロビジョニング ● Assume Roleでクロスアカウント ● Step FunctionsとCodeBuildで並列化&自動化
Slide 19
Slide 19 text
19 Terraform Workspacesで複数環境にプロビジョニング
Slide 20
Slide 20 text
20 Assume Roleでクロスアカウント https://registry.terraform.io/providers/hashicorp/aws/latest/docs
Slide 21
Slide 21 text
21 Assume Roleでクロスアカウント
Slide 22
Slide 22 text
22 Assume Roleでクロスアカウント
Slide 23
Slide 23 text
23 Step FunctionsとCodeBuildで並列化&自動化
Slide 24
Slide 24 text
24 Step FunctionsとCodeBuildで並列化&自動化 buildspec.yml (terraform apply)
Slide 25
Slide 25 text
25 やってみた感想 ● これまでのところ問題なし ● リソースの確認がCDアカウントに入ってworkspaceを切り 替えるだけで全アカウント分できるのが便利
Slide 26
Slide 26 text
26 シングルテナント x Terraformの他の構成案
Slide 27
Slide 27 text
27 すみません時間切れです https://dev.classmethod.jp/author/kazue-masaki/ ブログ↓で後々書いていきます…
Slide 28
Slide 28 text
28 まとめ ● Terraform WorkspacesはStateを分けて管理できる機能 ● シングルテナント構成のSaaSのIaCに使えるかも ● Assume Roleと組み合わせるとクロスアカウントも簡単 ● Step FunctionsのMap Stateを使えばplan/applyの並列実 行を自動化できる
Slide 29
Slide 29 text
29 ご清聴ありがとうございました