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
20220214_Future Tech Night
Search
Taisei Ito
February 17, 2022
Technology
0
2.5k
20220214_Future Tech Night
Taisei Ito
February 17, 2022
Tweet
Share
More Decks by Taisei Ito
See All by Taisei Ito
Grafana Meetup Japan Vol. 6
kaedemalu
1
700
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
96
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
1.9k
20210910_nyle
kaedemalu
0
1k
20210827 Future Tech Night
kaedemalu
0
4.5k
CNDO2021 Open Policy Agent
kaedemalu
1
1.4k
20210210 Terraform meetup ONLINE
kaedemalu
0
690
Future Talk Night 20201118
kaedemalu
0
230
20201114 GCPUG Shonan
kaedemalu
0
480
Other Decks in Technology
See All in Technology
Tebiki Engineering Team Deck
tebiki
0
24k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
470
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
今日から始めるAmazon Bedrock AgentCore
har1101
4
410
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
670
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
250
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
170
Red Hat OpenStack Services on OpenShift
tamemiya
0
120
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
110
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
290
Embracing the Ebb and Flow
colly
88
5k
The SEO Collaboration Effect
kristinabergwall1
0
350
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Music & Morning Musume
bryan
47
7.1k
Optimizing for Happiness
mojombo
379
71k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Into the Great Unknown - MozCon
thekraken
40
2.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
[SF Ruby Conf 2025] Rails X
palkan
1
760
Transcript
Stateの分割戦略 ~Modulesと Workspacesを利用して~ 2022/2/14 Thu. Taisei Ito Copyright © 2022
by Future Corporation #future_tech_night
Copyright © 2022 by Future Corporation 自己紹介 resource "introduction" "me"
{ name = "Taisei Ito" account = "@kaedemalu" group = "Technology Innovation Group" position = ["Senior Consultant", "TechBlog Editor"] like = ["GCP", "Terraform", "AWS"] hobby = ["Sauna", "Drive", "Camera"] }
State管理 • ちゃんとしていますか? • 意志を持って分けていますか? • 機能を理解して管理していますか? Copyright © 2022
by Future Corporation #future_tech_night
State管理 • すでに作り変えたい! →棚井さんのセッションへ Copyright © 2022 by Future Corporation
#future_tech_night
Agenda • Modules使ったStateの分け方 • Workspaces使ったStateの分け方 • ModulesとWorkspacesの合わせ技 Copyright © 2022
by Future Corporation ※経験に基づいた「多分良さそう」なことを話します #future_tech_night
はじめに • Stateの分かれ目 ◦ =責任の分かれ目 ◦ =管理の分かれ目 Copyright © 2022
by Future Corporation #future_tech_night
よくある話だけど。。 • ModulesとWorkspacesは全く別の機能 • 流派とか言われるレベルで似ているものでもない Copyright © 2022 by Future
Corporation #future_tech_night
ModulesでのStateの取り扱い Copyright © 2022 by Future Corporation 1
Modulesとは A module is a container for multiple resources that
are used together. • 共に使う複数リソース群の「まとまり」 ◦ ≠クラウドのサービスごと ◦ =アーキテクチャを踏まえた構成 • State自体は単一になる Copyright © 2022 by Future Corporation 参考:https://www.terraform.io/language/modules
リソース分割① Copyright © 2022 by Future Corporation
リソース分割① Copyright © 2022 by Future Corporation vpc module lb
module eks module ecs module rds module
リソース分割① Copyright © 2022 by Future Corporation . ├── modules
// Modulesを格納するディレクトリ │ ├── ecs │ ├── eks │ ├── lb │ ├── rds │ └── vpc ├── dev // 開発環境用 ├── stg // 検証環境向け └── prd // 本番環境向け #future_tech_night
リソース分割② Copyright © 2022 by Future Corporation
リソース分割② Copyright © 2022 by Future Corporation vpc module rds
module service A module service B module
リソース分割② Copyright © 2022 by Future Corporation . ├── modules
// Modulesを格納するディレクトリ │ ├── service_a │ ├── service_b │ ├── rds │ └── vpc ├── dev // 開発環境用 ├── stg // 検証環境向け └── prd // 本番環境向け #future_tech_night
Stateがどう分割されるか Copyright © 2022 by Future Corporation . ├── modules
// Modulesを格納するディレクトリ │ ├── service_a │ ├── service_b │ ├── rds │ └── vpc ├── dev // 開発環境用 ├── stg // 検証環境向け └── prd // 本番環境向け State Dev State Stg State Prd #future_tech_night
Moduleにおける権限分離 Copyright © 2022 by Future Corporation • ディレクトリ構成で分離ができる ◦
=各々にStateが生成されるから • サービス群の単位で設定ができる ◦ Workspacesよりリソースに対して柔軟に対応できる
例)STG ① Copyright © 2022 by Future Corporation vpc module
rds module service A module service B module
例)STG ② Copyright © 2022 by Future Corporation vpc module
rds module service B module
リソース分割② Copyright © 2022 by Future Corporation . ├── modules
// Modulesを格納するディレクトリ │ ├── service_a │ ├── service_b │ ├── rds │ └── vpc ├── stg1 // 検証環境① ├── stg2 // 検証環境② └── prd // 本番環境向け State Stg1 State Stg2 State Prd • service_a • service_b • rds • vpc • service_a • service_b • rds • vpc • service_a • service_b • rds • vpc #future_tech_night
Moduleにおける権限分離 Copyright © 2022 by Future Corporation • ディレクトリ構成で分離ができる ◦
=各々にStateが生成されるから • サービス群の単位で設定ができる ◦ Workspacesよりリソースに対して柔軟に対応できる • 開発者単位でインフラもコントロール可能 #future_tech_night
WorkspacesでのStateの取り扱い Copyright © 2022 by Future Corporation 2
Workspacesとは Copyright © 2022 by Future Corporation • Stateに名前をつけて、リソースの管理を分割する機能 ◦
=Terraformにおける管理が分かれる ◦ =リソースの依存関係を断ち切れる • =「ヒト」の権限を分ける境界とすることもできる #future_tech_night
Workspacesによる権限分離 Copyright © 2022 by Future Corporation State Stg State
Prd Admin Developer #future_tech_night
Workspacesによる権限分離 Copyright © 2022 by Future Corporation State Stg State
Prd Admin Developer #future_tech_night
Workspacesによる権限分離 Copyright © 2022 by Future Corporation State Stg State
Prd Admin Developer • Admin OK • Developer OK • Admin OK • Developer NG S3 Object Policy #future_tech_night
Workspacesとは Copyright © 2022 by Future Corporation • Stateに名前をつけて、リソースの管理を分割する機能 ◦
=Terraformにおける管理が分かれる ◦ =リソースの依存関係を断ち切れる • =「ヒト」の権限を分ける境界とすることもできる #future_tech_night
まとめ Copyright © 2022 by Future Corporation • Modules ◦
単一のサービスとその環境を分けるために利用 ◦ サービスのサブ環境→本番でフルセット • Workspaces ◦ 複数のサービスと環境面が少ない場合 • まとめて利用するときは適材適所 #future_tech_night
両方使う Copyright © 2022 by Future Corporation 3
アプローチが違うものの組み合わせ Copyright © 2022 by Future Corporation • Modules ◦
サービスを分割して管理することには有効 • Workspaces ◦ 環境の単純なレプリケーションには有効 #future_tech_night
リソースの特性 Copyright © 2022 by Future Corporation • ネットワーキング系 ◦
リソースの環境差異が生まれにくい →Workspaces向きのリソース • コンピュート系・運用系 ◦ 環境差異が生まれやすい(数、スペック、etc…) →Modules向きなリソース #future_tech_night
再掲) Copyright © 2022 by Future Corporation vpc module rds
module service A module service B module
再掲) Copyright © 2022 by Future Corporation vpc module rds
module service A module service B module Workspaces化する
再掲) Copyright © 2022 by Future Corporation vpc module rds
module service A module service B module Workspaces化する
Stateがどう分かれるか Copyright © 2022 by Future Corporation . ├── modules
// Modulesを格納するディレクトリ │ ├── service_a │ ├── service_b │ └── rds ├── stg1 // 検証環境① ├── stg2 // 検証環境② ├── prd // 本番環境向け └── vpc #future_tech_night
Stateがどう分かれるか Copyright © 2022 by Future Corporation . ├── modules
│ ├── service_a │ ├── service_b │ └── rds ├── stg1 ├── stg2 ├── prd └── vpc State Stg1 State Stg2 State Prd State Stg (Workspaces) State Prd (Workspaces)
Referする Copyright © 2022 by Future Corporation . ├── modules
│ ├── service_a │ ├── service_b │ └── rds ├── stg1 ├── stg2 ├── prd └── vpc State Stg1 State Stg2 State Prd State Stg (Workspaces) State Prd (Workspaces) • Data Resourceでやりとり →VPCに変更が入らない!
事前にやること Copyright © 2022 by Future Corporation • VPC側 ◦
Outputsを詳細に書く(これが多分一番面倒) • 各環境側 ◦ Data Resourceで引っ張れるようにする #future_tech_night
まとめ Copyright © 2022 by Future Corporation • ModulesとWorkspacesは異なるもの •
Modules ◦ リソースのまとまりで分ける ▪ マイクロサービス的思考(疎結合) • Workspacesは ◦ 環境(責任も込み)を分けるのには最適 • Stateの分かれ目=責任の分かれ目 #future_tech_night
Fin Copyright © 2022 by Future Corporation
Appendix Copyright © 2022 by Future Corporation
Modulesでの変数の追い方 Modules Environment VPC WEB DB : main variable resources
variables resources variables resources variables instance_type = “t2.micro” module “web” { … instance_type = local.instance_type … } Copyright © 2022 by Future Corporation
参考資料 • 書籍 ◦ Terraform Up & Running 2nd Edition
◦ Infrastructure as Code 2nd Edition Copyright © 2022 by Future Corporation
過去資料 • 技術ブログ ◦ Terraformerとしてコードを書いて思うこと • Qiita ◦ 僕がTerraformをできるようになるまで ◦
Terraformで使った黒魔術2021 • 過去登壇資料 ◦ 今晩から始めるTerraform ◦ 20210210 Terraform Meetup ONLINE Copyright © 2021 by Future Corporation