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
個々のアプリのリポジトリでTerraformを管理している話
Search
kanga333
October 02, 2019
Technology
4
3.6k
個々のアプリのリポジトリでTerraformを管理している話
2019/10/02(水) 19:00〜
Terraform meetup tokyo#2 LT
https://terraform-jp.connpass.com/event/142041/
kanga333
October 02, 2019
Tweet
Share
More Decks by kanga333
See All by kanga333
Athenaを使ったバッチ処理のTIPS
kanga333
0
820
docker_and_make
kanga333
1
390
CoreOS Container Linuxで始めるベアメタルKubernetes
kanga333
3
8.9k
10分で詰め込むHadoop
kanga333
0
150
ORCについて調べた
kanga333
0
210
burrow_monitoring
kanga333
0
820
j2hの紹介
kanga333
0
6.2k
Other Decks in Technology
See All in Technology
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
210
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
450
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
160
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
440
BPaaSにおける人と協働する前提のAIエージェント-AWS登壇資料
kentarofujii
0
130
Android Audio: Beyond Winning On It
atsushieno
0
100
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
サンドボックス技術でAI利活用を促進する
koh_naga
0
200
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.2k
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.2k
Navigating Team Friction
lara
189
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
How STYLIGHT went responsive
nonsquared
100
5.8k
Music & Morning Musume
bryan
46
6.8k
The Pragmatic Product Professional
lauravandoore
36
6.9k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.5k
Rails Girls Zürich Keynote
gr2m
95
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Transcript
個々のアプリのリポジトリでTerraformを管理している話 kagawa shoichi (@kanga333) 2019/10/2 Terraform meetup tokyo#2 LT
⾃⼰紹介.tfvars twitter = "@kanga333" company = "Speee,Inc." job = "Infra
Engineer" team = "UZOU(AdTech)" 好きなTerraformの機能はfor_each 今の会社/チームに参加して半年くらい
はじめに UZOUでは各アプリケーションリポジトリ毎に terraform ディレクトリを切って Terraform設定を分散して管理しています 例えばアドサーバ/クローラー/管理画⾯/バッチなど機能別で別れています ⼀⽅で⾃分の今までの経験で多かった構成はインフラ/SREチームがオーナーの統⼀的な Terraformリポジトリという構成でした 後者に慣れ親しんでいたので前者の構成に最初は抵抗があったんですが実際やってみると 良さがわかったので簡単にご紹介します
普通?のTerraform管理⽅法 普通の基準は主観です hoge-terraform みたいな共通リポジトリに設定を集約 SRE/インフラチームに類する⼈たちがオーナ moduleを作ってある程度Dryにする アプリケーション軸か使⽤するサービス軸でmain.tfは分ける
UZOUでのTerrform管理⽅法 各アプリケーション毎にTerraform設定を分散して管理 例えばアドサーバのコードのリポジトリと⼀緒に以下のtfリソースを管理 ELB/AutoScaling/DatadogMonitor/etc... アプリケーションを実⾏するために必要なインフラリソースほぼ全て main.tfは各アプリ毎で1つ ワークスペースのような形で各環境間でtfvarsだけ変えている リポジトリをまたいだ共通モジュールは今の所ない あんまりDryにはしていない 歴史的にフルスタックエンジニアxN⼈のチームで運⽤されていたので⾃然とこうなった
良かったこと アプリケーションが使⽤するインフラリソースがわかりやすい Terraform変更の影響範囲が明確 Terraformのアップグレードを必要に応じてできるし簡単 Plan早い アプリの変更とインフラの変更を⼀緒にレビューできる
良くないこと コピペベースなので同じような修正が何度も必要 何度も terraform 0.12upgrade が必要 書き⽅にムラがでやすい CI/CDが⼤変 現状JenkinsジョブをポチってPlan/Applyする感じなのでいい感じにしたい... インフラ構成全体の把握に時間がかかる
⼯夫してる点 AWSのタグを使って管理しているリポジトリを明確にする これどこで管理してるんだっけ?を防⽌ 全体像を把握する際はAWS側の画⾯やサービスを駆使する - TrustedAdvisor/AWSConfig/GuardDuty/CostExplorer
今の構成でも上⼿くいっている理由 チーム状況とフィットしている みんなTerraform設定を書く インフラチーム的なものは無い そもそもチームの⼈数は5⼈ システム規模はそれなりに⼤きいけどもめちゃくちゃデカイ訳ではない ⼤体インスタンス60 ~ 70台くらい
とはいえ今後このままで⾏くのか? インフラ的なメンバー増えたら統⼀リポジトリに寄せるのはあり得る その場合はstate mv祭りだなぁ... マイクロサービス的に各サービス毎のチームができたら今の構成でも良い気もする 必要になったら考える
⽉並みな結論 個々のチーム状況にあったリポジトリ設計が⼤事 コンウェイまじコンウェイ チーム状況が変われば抵抗のあった構成でも案外フィットするケースもある 将来チーム状況が変化した際にどう対応できるか考えておく