Slide 1

Slide 1 text

© Link and Motivation Group なぜTerraformでインフラを 管理するのか? 株式会社リンクアンドモチベーション Developer Productivity Unit SREチーム 久原直輝

Slide 2

Slide 2 text

2 © Link and Motivation Group 久原 直輝 株式会社リンクアンドモチベーション プロダクトデザイン室 Developer Productivity Unit SREチーム ● 2021年新卒入社 ● SREチームで開発組織の生産性向上の取り組みを実施 ● SREチームジョイン当初はAWS CDKでインフラ構築 ● 最近はAWS CDK → Terraform 移行をやっていました 自己紹介

Slide 3

Slide 3 text

© Link and Motivation Group 3 前提

Slide 4

Slide 4 text

4 © Link and Motivation Group 前提 この発表では様々なインフラ管理手法・ツールとの比較を行いますが... ❌ ある手法・ツールが優れている / 劣っている ✅ 開発組織の状態に適した手法・ツールが存在する

Slide 5

Slide 5 text

© Link and Motivation Group 5 私がインフラの管理をしていて辛かったこと

Slide 6

Slide 6 text

6 © Link and Motivation Group 私が開発チームにジョインした当初 AWS CDKを使ってインフラ管理を行っていました TypeScriptで書けるからとっつきやすい!! プログラム書く感覚で自由度高く記述できる! L2だと依存するリソースも補完して作ってくれ るから便利!!

Slide 7

Slide 7 text

7 © Link and Motivation Group 私が開発チームにジョインした当初 AWS CDKを使ってインフラ管理を行っていました TypeScriptで書けるからとっつきやすい!! プログラム書く感覚で自由度高く記述できる! L2だと依存するリソースも補完して作ってくれ るから便利!! しかし、運用する中でいくつか 辛い要素が出てきた

Slide 8

Slide 8 text

8 © Link and Motivation Group 私がインフラの管理をしていて辛かったこと ①コードから何のリソースを構築しているか分かりづらい ちゃんと読めば分かるけどnew以外に変 数やaddが混じっててパッと何を作って いるか見づらいな...

Slide 9

Slide 9 text

9 © Link and Motivation Group 私がインフラの管理をしていて辛かったこと ②事前にリソースの実態との変更差分が分からない CDKで作ったリソースに対してAWS コンソールから直接設定を変更 ECS CDK CloudFormatio n

Slide 10

Slide 10 text

10 © Link and Motivation Group 私がインフラの管理をしていて辛かったこと ②事前にリソースの実態との変更差分が分からない ECS CDK CloudFormatio n cdk diffをしてもソースコードとCloudFormationの stackの比較しかしないので、実態の変更を検知できない cdk diff

Slide 11

Slide 11 text

11 © Link and Motivation Group 私がインフラの管理をしていて辛かったこと ②事前にリソースの実態との変更差分が分からない ECS CDK CloudFormatio n 気づかぬ内にコンソールから設定した内容を CDKで上書きしてしまう!! cdk deploy

Slide 12

Slide 12 text

12 © Link and Motivation Group 私がインフラの管理をしていて辛かったこと ①コードから何のリソースを構築しているか分かりづらい ②事前にリソースの実態との変更差分が分からない

Slide 13

Slide 13 text

© Link and Motivation Group 13 なぜTerraformでインフラを管理するのか?

Slide 14

Slide 14 text

14 © Link and Motivation Group なぜTerraformでインフラを管理するのか? Terraformの価値 ①コードの認知負荷が低い ②実態とコードの差分が分かる

Slide 15

Slide 15 text

15 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ①コードの認知負荷が低い → 構築するリソースを宣言型でファイル分割して記述しやす い!

Slide 16

Slide 16 text

16 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ①コードの認知負荷が低い → 記述の型が決まっているのでコードが複雑になりづらい! 1. リソースを作る 3. 変数を定義する 2. 既存リソースのデータを取得する

Slide 17

Slide 17 text

17 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ①コードの認知負荷が低い → 記述の型が決まっているのでコードが複雑になりづらい! 1. リソースを作る 3. 変数を定義する 2. 既存リソースのデータを取得する パッと見で概要が分かる!

Slide 18

Slide 18 text

18 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ②実態とコードの差分が分かる → tfstateという概念によって、リソースの変更を検知してソースコードと の差分を出力してくれる! tfstat e ソースコード ECS Terraformで作ったリソースに対して AWSコンソールから直接設定を変更

Slide 19

Slide 19 text

19 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ②実態とコードの差分が分かる → tfstateという概念によって、リソースの変更を検知してソースコードと の差分を出力してくれる! tfstat e ソースコード ECS Terraform planをすると、その時点の実態のリソース の設定をtfstateに反映した上で差分を出力する! terraform plan

Slide 20

Slide 20 text

20 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ②実態とコードの差分が分かる → tfstateという概念によって、リソースの変更を検知してソースコードと の差分を出力してくれる! tfstat e ソースコード ECS Terraform planをすると、その時点の実態のリソース の設定をtfstateに反映した上で差分を出力する! terraform plan

Slide 21

Slide 21 text

21 © Link and Motivation Group なぜTerraformでインフラを管理するのか? ②実態とコードの差分が分かる → tfstateという概念によって、リソースの変更を検知してソースコードと の差分を出力してくれる! tfstat e ソースコード ECS Terraform planをすると、その時点の実態のリソース の設定をtfstateに反映した上で差分を出力する! terraform plan 安心してインフラを変更できる!

Slide 22

Slide 22 text

22 © Link and Motivation Group 余談 情報収集が容易 → 公式ドキュメントが分かりやすい, 技術記事も沢山ある

Slide 23

Slide 23 text

23 © Link and Motivation Group 余談 フォーマットを揃えるのは terraform fmt 一発で完了! terraform fmt

Slide 24

Slide 24 text

24 © Link and Motivation Group 余談 フォーマットを揃えるのは terraform fmt 一発で完了! terraform fmt Terraformはいいぞ

Slide 25

Slide 25 text

25 © Link and Motivation Group お知らせ ● エンジニアリングマネージャー ● プロダクトマネージャー ● テックリード ● サーバーサイドエンジニア ● フロントエンドエンジニア ● SRE ● QAエンジニア ● データエンジニア ● CRM ● UXデザイナー テックブログを更新中! まずはカジュアルにお話しましょう! 積極採用中です!