Terraform共通モジュールをチーム横断で“変えられる”運用へ ― リリースと適用の分離
by
kekke-n
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Terraform共通モジュールを チーム横断で“変えられる”運⽤へ 中間 啓介 株式会社SmartHR 2026.7.11 / SRE NEXT 2026 Lunch Sponsor Session / #srenext_c リリースと適⽤の分離
Slide 2
Slide 2 text
⾃⼰紹介 経歴 ● 2022/5 SmartHRにバックエンドエンジニアとして入社 ● 2024/1 SREチームに異動 過去登壇 ● SRE Kaigi 2026 / 小さく始めるBCP ― 多プロダクト環境で始める 最初の一歩 中間 啓介(なかま けいすけ) 株式会社SmartHR / SRE
Slide 3
Slide 3 text
© SmartHR, Inc. 01 会 社 概 要 © SmartHR, Inc. バックオフィスから まるごとスマートに。 ⼈事‧労務‧情シス業務を効率化。 みんなが使うから組織が変わる。 06 | 57
Slide 4
Slide 4 text
1 SmartHRがTerraformの共通モジュールを使う背景 2 共通モジュールの課題 3 バージョニングによる解決 4 まとめ アジェンダ
Slide 5
Slide 5 text
本⽇お持ち帰りできること ● Terraformの共通モジュールを運⽤するときのツラミ ● Terraformの共通モジュールをチーム横断で運⽤するためのヒント
Slide 6
Slide 6 text
01 SmartHRがTerraformの モジュールを使う背景
Slide 7
Slide 7 text
SmartHRのインフラ運⽤ ● SmartHRはマルチプロダクト構成 ○ プロダクトチームは約40チーム ● プロダクトチーム ○ インフラに対してオーナーシップを持ち、⾃分達で変更が⾏える体制 ● SREチーム ○ プロダクトチームがインフラを構築‧変更しやすいように、インフラ構築 ⽀援やTerraformの共通モジュールを整備している
Slide 8
Slide 8 text
Terraformのディレクトリ構成 ● モノレポ構成 ● ルートモジュール ○ gcp/product/env ○ プロダクト✕環境別に⽤意 ● 共通モジュール ○ gcp/modules ○ 再利⽤可能なリソースを置く gcp/ ├── kintai // 勤怠管理プロダクト │ ├── development │ ├── production │ └── staging ├── kyuyo // 給与計算プロダクト │ ├── development │ ├── production │ └── staging ├── modules │ ├── cloud-storage ︙ ディレクトリ構成サンプル ルートモジュール 共通モジュール
Slide 9
Slide 9 text
● よく使う構成の部品化 ○ SmartHRには似た構成のプロダクトが多く、よく使う構成をモジュール 化することで、同じ実装の繰り返しを減らす ● 安全なインフラ構築のセルフサービス化 ○ セキュリティ要件や推奨設定をモジュールに組み込むことで、プロダク トチームが安全に素早くインフラを構築できるようにする 共通モジュールを使う背景
Slide 10
Slide 10 text
02 共通モジュールの課題
Slide 11
Slide 11 text
● 影響確認が⼤変 ○ 共通モジュールを変更する場合、参照元のルートモジュールに破壊 的変更が起きないようにする必要がある ● Driftを⽣む ○ 共通モジュールを変更できたとしても、参照元のルートモジュール でDriftが発⽣してapplyがしづらくなる 共通モジュールは変更しづらい
Slide 12
Slide 12 text
プロダクトチームへの悪影響 ● 共通モジュールを使わず、各チーム独⾃で実装するようになる ○ →実装‧レビュー⼯数が増える ○ →プロダクトチームのアジリティが下がる ● 共通モジュールの変更を諦めて、そのままにする ○ →インフラの最新の機能が使えなくなる ○ →インフラを最適な状態にできなくなる
Slide 13
Slide 13 text
03 バージョニングによる解決
Slide 14
Slide 14 text
● tfactionはモノレポ構成でTerraformを管理するための便利なGitHub Actionsが揃っている ○ https://github.com/suzuki-shunsuke/tfaction ● PRにplanの結果を⾒やすい形式でコメント ● PRのマージでapply実⾏ ● モジュールをバージョニングをするための便利なWorkflowを利⽤ ○ https://suzuki-shunsuke.github.io/tfaction/docs/v1/feature/mo dule 前提:Terraformの実⾏環境はtfaction
Slide 15
Slide 15 text
● モジュールの参照をGitタグ参照にして、共通モジュールのリリースと 適⽤を分離する バージョニング
Slide 16
Slide 16 text
● 分離:共通モジュールのGitタグ参照化 ● リリース:共通モジュールの変更 ● 適⽤:共通モジュールの参照バージョン変更 バージョニングの流れ
Slide 17
Slide 17 text
● 初期バージョンのタグを作成(tfactionのwolkflowを活⽤) ○ module_gcp_modules_cloud-storage_v0.0.0 ● モジュールの参照を作成したタグ(v0.0.0)にする 分離:共通モジュールのGitタグ参照化 参考:tfaction - Manage Terraform Modules https://suzuki-shunsuke.github.io/tfaction/docs/v1/feature/module
Slide 18
Slide 18 text
Gitタグ参照のサンプルコード(v0.0.0) # gcp/kintai/development/cloud-storage.tf module "cloud_storage" { # source = "../../modules/cloud-storage" source = "github.com/org/repo//gcp/modules/cloud-storage?ref=module_gcp_modules_cloud-storage_v0.0.0" bucket_name = "kintai-development" location = "asia1" } 参考:Terraform - Use modules in your configuration https://developer.hashicorp.com/terraform/language/modules/configuration ここにタグを 指定する
Slide 19
Slide 19 text
● 共通モジュールを変更する ● 次のバージョンのタグを作成する(tfactionのwolkflowを活⽤) ○ module_gcp_modules_cloud-storage_v0.0.1 リリース:共通モジュールの変更
Slide 20
Slide 20 text
● プロダクトチームが好きなタイミングでモジュールの参照タグをv0.0.1に 変更する 適⽤:共通モジュールの参照バージョン変更
Slide 21
Slide 21 text
RenovatePRの⾃動検知 v0.0.0 -> v0.0.1のア プデートを⾃動で検 知してPR作成
Slide 22
Slide 22 text
共通モジュール 安全に変更できるようになった☺
Slide 23
Slide 23 text
が、新たな課題が...
Slide 24
Slide 24 text
共通モジュールの変更から適⽤までのリードタイムが⻑い ● プロダクトチームのインフラに適⽤するまで半⽇〜1⽇かかる 半⽇〜1⽇
Slide 25
Slide 25 text
SREチームしか変更できない共通モジュール ● 煩雑な⼿作業が多く、SREチームに属⼈化が起きる SRE頼みになる 煩雑な⼿作業が多い
Slide 26
Slide 26 text
● タグ作成等の単純作業はGitHub Actionsでやる ● リリースするまでの⼿順をAIのSkillsとして追加し、DevinやClaude Code に任せられるようにする ● RenovateのPRはplanにDriftがなければオートマージ AI/GitHub Actions/Renovateによる⾃動化
Slide 27
Slide 27 text
リードタイム削減 ● 作業の⾃動化によって、半⽇〜1⽇かかる作業が30分に削減できた 30分
Slide 28
Slide 28 text
煩雑な⼿作業は⾃動化 チーム横断で“変えられる”共通モジュール ● プロダクトチームが共通モジュールを変更できる状態になる プロダクトチームが変更できる状態
Slide 29
Slide 29 text
04 まとめ
Slide 30
Slide 30 text
● バージョニングを使えば、リリースと適⽤を分離でき、共通モジュールを 変更しやすくなる ● 煩雑な作業を⾃動化すれば、誰でも共通モジュールを変更でき、チーム横 断で変えられる共通モジュールを運⽤できる まとめ
Slide 31
Slide 31 text
Special Thanks!!
Slide 32
Slide 32 text
https://open.talentio.com/r/1/c/smarthr/pages/98449 シニアSRE 募集中です!! We are hiring!! © SmartHR, Inc. 49 | 57 ご静聴ありがとうございました!