Slide 1

Slide 1 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 2025年1月23日 東京ガス株式会社 青木 翔平 東京ガス内製開発チームにおける Terraform活用の現在地とこれから

Slide 2

Slide 2 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 自己紹介 名前 青木 翔平 所属 東京ガス株式会社 リビング戦略部 デジタルプロダクト推進G SREチーム 経歴 SI -> 小売IT -> 2024年4月より現職 好き ベイブレードX ジョギング on asics 2

Slide 3

Slide 3 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. アジェンダ 1. 東京ガスについて 2. 東京ガス内製開発チームに入ったらTerraformは…? 3. 内製開発チームに入ってTerraform関連でやったこと 4. 内製開発チームが拡大してきてTerraform関連でやらなきゃなこと 5. まとめ 3

Slide 4

Slide 4 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 東京ガスについて 4

Slide 5

Slide 5 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 会社紹介:東京ガス 会社名 創立 従業員数 売上高(連結) 主な事業 東京ガス株式会社 明治18年(1885)年10月1日 単体:3,190名 連結:15,504名(2024年3月31日現在) 26,645億円(2024年3月末時点) エネルギー(ガス+電気)ソリューション、海外、都市ビジネス(不動産)など エネルギー需要の増大に伴い、クリーンで高効率なエネルギーとして、 1969年、日本で初めて LNG (液化天然ガス) を導入。 お客さまアカウント数は約1,300万件(*1) 都市ガス国内販売シェア約34%は国内No.1。 小売電力販売件数も387.1万件(*2) に到達、新電力No.1となっています。 5 *1 ガス・電気・サービス延べ契約数 2024年3月末時点 *2 2024年3月末時点

Slide 6

Slide 6 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. myTOKYOGAS について  家庭用のお客さま向け会員サイト。  ガスや電気の料金・使用量の確認や、パッチョポイントを貯める・使う、各種手続きをご提供しています。  2024年11月~紙の検針票の現場投函終了に伴い、さらなる利用者数や会員数の増加が見込まれます。 6

Slide 7

Slide 7 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 東京ガス内製開発チームに入ったらTerraformは…? 7

Slide 8

Slide 8 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. もう入ってた 8 とあるペンギンアイコンのSREチームのリーダーが単独で Terraformの内部ドキュメントも書いて、かつTerraformで 初めてAzureの環境を構築していた 本当の意味で一手に引き受けていたようだ

Slide 9

Slide 9 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 気になって行カウントしてみた $ find modules/ -name "*.tf*" -type f |xargs cat | wc -l 6163 $ find environments/dev01/ -name "*.tf*" -type f |xargs cat | wc -l 9138 $ find environments/dev02/ -name "*.tf*" -type f |xargs cat | wc -l 6588 $ find environments/sandbox/ -name "*.tf*" -type f |xargs cat | wc -l 4649 $ find environments/staging/ -name "*.tf*" -type f |xargs cat | wc -l 6959 $ find environments/production/ -name "*.tf*" -type f |xargs cat | wc -l 9531 • 入社直後の感想は「これを●ヶ月間一人で…?やばい」 • environmentのルートモジュールについては、少なからず構成差分があるため不要なリソースを作成 しないようにコード上の差分比較が大変だった。(入社数か月後に実際に自身で追加の環境を構築 した上での感想)

Slide 10

Slide 10 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 一人でやっていたことの弊害はあったようで… 10 当初はPRのApproveを開 発メンバーにやってもらっ ていたが途中から禁断の Self Approveをしていた Terraform、パブリック クラウド観点で他メン バーからのコメントがも らえない。ぴえん 他の仕事も多々あって、 コードの品質担保が出来な かった(究極の属人化)

Slide 11

Slide 11 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 現在のSREチームは一人じゃない 11 このパブリッククラウド だとこういう構成もあり かと! このPRは私がレビュー します! このTerraformコーディ ングに関するチケットは 私が対応します!

Slide 12

Slide 12 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 内製開発チームに入ってTerraform関連でやったこと 12

Slide 13

Slide 13 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. やったことは主に3点! 13 Terraformバージョンアップ戦略の整備 Terraformコーディング規約の作成 HCP Terraformの導入

Slide 14

Slide 14 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformバージョンアップ戦略の整備 14 • Terraform Version, Provider Version共に塩漬けとなって いたため、無理なく回せるバージョンアップ戦略を整備 しようと決意 • まずはNotion上でたたき台のドキュメントを作成して チーム内に展開、詳細なルールについてはチームメン バーからコメントをもらいながら全員が納得する形で策 定 • ドキュメントを元に自身とチームメンバーで実際にバー ジョンアップを実施、実施結果を元に更にドキュメント をブラッシュアップ

Slide 15

Slide 15 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformコーディング規約の作成 15 HashiCorp公式をStyle Guideを踏襲しつつも当チームにマッチした規約を作成 • ディレクトリ、ファイルの命名規則 • Module, サービスのディレクトリ構成 • tfファイルの分割単位 Directory/File構成 • リソースの命名規則 • Dynamic Blockの使いどころ • for_eachのの使いどころ • 除外するパラメータ Resource定義 • object, mapのの使いどころ • Dynamic Blockの使いどころ • Output Valuesの使いどころ • Local Valuesの使いどころ Variables/Values定義 • Moduleの種類 • ファイル構成 Module定義 • ファイル構成 • Data Source定義内容 Data Source定義

Slide 16

Slide 16 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. HCP Terraformの導入 16 HCP Terraformがいかに便利で何が出来るかは知りつつも…まずはチーム内のTerraform関連 ドキュメントを読みながらHCP Terraformを導入すれば解決出来る課題を探索 当時はHCP Terraformじゃな くてTerraform Cloudという 名前だったよ!

Slide 17

Slide 17 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. HCP Terraformの導入 17 • 2024年11月からHCP Terraform Plusの利用を開始 • 現在、HCP Terraformの設定をTerraformで記述してApply済み。既存tfstateのHCP Terraform移行にいそしみ中 HCP Terraform hcp-terraform aws-service-a-dev datadog-service-a-dev aws-service-a-prod datadog-service-a-prod Project: HCP Project: Service A HCL ‒ HCP Terraform Apply Workspace states states states

Slide 18

Slide 18 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. HCP Terraformの導入 18 HCP Terraformには色々な機能があるものの当チームとして特に嬉しかったことは… SREチーム PR作成時にPlanが自動実行さ れてPR画面でリンク辿れるの 最高! (今まではGitHub Actionsの Plan実行のURLを貼り付けて いた…) コスト気にせずHCP Terraformで何度もPlan, Apply出来るの最高! HCP Terraformコンソール画 面でのPlan, Applyの実行結果 が見やすいの最高!

Slide 19

Slide 19 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. HCP Terraformの導入 19 SREチーム QOTLの向上!! ( QOTL: Quality Of Terraform Life )

Slide 20

Slide 20 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 内製開発チームが拡大してきて Terraform関連でやらなきゃなこと 20

Slide 21

Slide 21 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. やらなきゃなことも主に3点! 21 アドホックな環境払い出し みんな環境作れるように Terraformコードレビューを楽する

Slide 22

Slide 22 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. アドホックな環境払い出し 22 • 環境管理表で各環境の利用時間を調整している現状 • 開発メンバーは環境利用の調整に稼働を割きたくない(事実、timesで呟いている) • 新規メンバーも増えてきて、この状況に疑問を投げかける声もちらほら 開発メンバーのtimesのつぶやき

Slide 23

Slide 23 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. azure-service-b-loadtest アドホックな環境払い出し 23 せっかく、HCP Terraformを導入したのでephemeral workspaceでアドホックな環境を払い出す運用を確立したい (※他システム、外部サービスと連携不要な環境に限る) へいお待ち! 利用期限は1/31 17:00です! Apply 負荷テスト実施用環境 1/31まで負荷テスト 実施用の環境欲しい なあ 開発メンバー

Slide 24

Slide 24 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. みんな環境作れるように 24 とある日の開発チーム新メンバーとの1on1にて インフラの構築は SREチームの方が 全てやっているん ですか? はい、そうですね 前職だと各開発チーム がTerraformでインフ ラを作っていたんです けどそういう機会はな さそうですか? い、今のところは なさそうです… Aさん

Slide 25

Slide 25 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. みんな環境作れるように 25 • 開発チームでHCLを書きたい!というより新たな環境が欲しい時に開発チームが自分たちで環境を準備 出来るようにしたい、というのが目指すところ • インフラ構成が固まっている、すなわち変数がユーザー名、パスワードやマシンサイズなどのアーキテ クチャが変わらない要素のみであればセルフサービス化の仕組みを作って開発チームへ提供して良いの ではないか。 • あって良かった、HCP Terraformのno-code modules no-code module input: db_usernema db_password vm_size aws-service-a-devXX Provision Apply Aさん用開発環境 Aさん

Slide 26

Slide 26 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformコードレビューを楽する 26 当チームはレビューの負荷が一人に偏りがち TerraformのPR レビューお願い します! TerraformのPR レビューお願い します! 登壇資料のレビュー お願いします! テックブログの レビューお願い します!

Slide 27

Slide 27 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformコードレビューを楽する 27 せめてTerraformのコードレビューについては負荷を下げたい… TerraformのPR レビューお願い します! TerraformのPR レビューお願い します! 登壇資料のレビュー お願いします! テックブログの レビューお願い します!

Slide 28

Slide 28 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformコードレビューを楽する 28 Policy as Codeを導入して自動化出来るレビューは自動化していきたい Enforce policy as code まだ何も始まっていないので決意表明だけ…

Slide 29

Slide 29 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. まとめ 29

Slide 30

Slide 30 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraform活用の現在地とこれから 30 • インフラはほぼ全てTerraformで管理している • SREチームがTerraformで環境構築している • バージョンアップ戦略が整った • コーディング規約が整った • HCP Terraformを導入した • HCP TerraformをTerraformで管理し始めた 現在地 • 全既存環境をHCP Terraformに移行する • コーディング規約に沿ってリファクタリング • 利用したい時に環境を払い出せるようにする • 開発チームが自身で環境を作れるようにする • Terraformコードレビューの負荷を減らす • 更にサービスを良くするための仕組みを考える これから

Slide 31

Slide 31 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. We are hiring!! 31 ・東京ガスキャリア経験者採用 https://tokyo-gas.snar.jp/index.aspx ・東京ガス内製開発チーム Tech Blog https://tech-blog.tokyo-gas.co.jp/

Slide 32

Slide 32 text

Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. ご清聴ありがとうございました! 32

Slide 33

Slide 33 text

No content