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.4k
個々のアプリのリポジトリで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
660
docker_and_make
kanga333
1
340
CoreOS Container Linuxで始めるベアメタルKubernetes
kanga333
3
8.8k
10分で詰め込むHadoop
kanga333
0
140
ORCについて調べた
kanga333
0
170
burrow_monitoring
kanga333
0
750
j2hの紹介
kanga333
0
6.1k
Other Decks in Technology
See All in Technology
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
140
Is Go A Good Language to Build Compilers?
kennethanceyer
0
100
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
12
1.6k
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
580
強いチームと開発生産性
onk
PRO
38
12k
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
440
【LT】ソフトウェア産業は進化しているのか? #Agilejapan
takabow
0
120
あなたの知らない Function.prototype.toString() の世界
mizdra
PRO
4
2.1k
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
570
TypeScript100%で作るMovable Typeプラグイン
usualoma
2
100
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
150
Taming you application's environments
salaboy
0
210
Featured
See All Featured
Ruby is Unlike a Banana
tanoku
97
11k
Faster Mobile Websites
deanohume
305
30k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Agile that works and the tools we love
rasmusluckow
327
21k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Docker and Python
trallard
40
3.1k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
How GitHub (no longer) Works
holman
310
140k
GraphQLとの向き合い方2022年版
quramy
43
13k
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祭りだなぁ... マイクロサービス的に各サービス毎のチームができたら今の構成でも良い気もする 必要になったら考える
⽉並みな結論 個々のチーム状況にあったリポジトリ設計が⼤事 コンウェイまじコンウェイ チーム状況が変われば抵抗のあった構成でも案外フィットするケースもある 将来チーム状況が変化した際にどう対応できるか考えておく