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.3k
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
180
Cloudflare Meetup Nagano Vol.3
kaedemalu
0
74
Cloudflare Meetup Nagano Vol.2
kaedemalu
0
1.6k
20210910_nyle
kaedemalu
0
980
20210827 Future Tech Night
kaedemalu
0
4.4k
CNDO2021 Open Policy Agent
kaedemalu
1
1.4k
20210210 Terraform meetup ONLINE
kaedemalu
0
660
Future Talk Night 20201118
kaedemalu
0
220
20201114 GCPUG Shonan
kaedemalu
0
450
Other Decks in Technology
See All in Technology
現場が抱える様々な問題は “組織設計上” の問題によって生じていることがある / Team-oriented Organization Design 20250827
mtx2s
7
68k
「AI2027」を紐解く ― AGI・ASI・シンギュラリティ
masayamoriofficial
0
160
進捗
ydah
2
210
Yahoo!ニュースにおけるソフトウェア開発
lycorptech_jp
PRO
0
600
異業種出身エンジニアが気づいた、転向して十数年経っても変わらない自分の武器とは
macnekoayu
0
230
PRDの正しい使い方 ~AI時代にも効く思考・対話・成長ツールとして~
techtekt
PRO
0
100
コスト削減の基本の「キ」~ コスト消費3大リソースへの対策 ~
smt7174
2
300
つくって納得、つかって実感! 大規模言語モデルことはじめ
recruitengineers
PRO
31
11k
ここ一年のCCoEとしてのAWSコスト最適化を振り返る / CCoE AWS Cost Optimization devio2025
masahirokawahara
1
900
努力家なスクラムマスターが陥る「傍観者」という罠と乗り越えた先に信頼があった話 / 20250830 Takahiro Sasaki
shift_evolve
PRO
2
120
イオン店舗一覧ページのパフォーマンスチューニング事例 / Performance tuning example for AEON store list page
aeonpeople
2
380
Function Body Macros で、SwiftUI の View に Accessibility Identifier を自動付与する/Function Body Macros: Autogenerate accessibility identifiers for SwiftUI Views
miichan
2
100
Featured
See All Featured
Balancing Empowerment & Direction
lara
3
600
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
185
54k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
What's in a price? How to price your products and services
michaelherold
246
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
A better future with KSS
kneath
239
17k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
500
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6.1k
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