Upgrade to Pro — share decks privately, control downloads, hide ads and more …

東京ガス内製開発チームにおけるTerraform活用の現在地とこれから

あおしょん
January 23, 2025
220

 東京ガス内製開発チームにおけるTerraform活用の現在地とこれから

あおしょん

January 23, 2025
Tweet

Transcript

  1. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 2025年1月23日 東京ガス株式会社

    青木 翔平 東京ガス内製開発チームにおける Terraform活用の現在地とこれから
  2. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 自己紹介 名前

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

    東京ガスについて 2. 東京ガス内製開発チームに入ったらTerraformは…? 3. 内製開発チームに入ってTerraform関連でやったこと 4. 内製開発チームが拡大してきてTerraform関連でやらなきゃなこと 5. まとめ 3
  4. 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月末時点
  5. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. myTOKYOGAS について

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

    とあるペンギンアイコンのSREチームのリーダーが単独で Terraformの内部ドキュメントも書いて、かつTerraformで 初めてAzureの環境を構築していた 本当の意味で一手に引き受けていたようだ
  7. 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のルートモジュールについては、少なからず構成差分があるため不要なリソースを作成 しないようにコード上の差分比較が大変だった。(入社数か月後に実際に自身で追加の環境を構築 した上での感想)
  8. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. 一人でやっていたことの弊害はあったようで… 10

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

    このパブリッククラウド だとこういう構成もあり かと! このPRは私がレビュー します! このTerraformコーディ ングに関するチケットは 私が対応します!
  10. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. やったことは主に3点! 13

    Terraformバージョンアップ戦略の整備 Terraformコーディング規約の作成 HCP Terraformの導入
  11. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformバージョンアップ戦略の整備 14

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

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

    19 SREチーム QOTLの向上!! ( QOTL: Quality Of Terraform Life )
  17. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. やらなきゃなことも主に3点! 21

    アドホックな環境払い出し みんな環境作れるように Terraformコードレビューを楽する
  18. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. アドホックな環境払い出し 22

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

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

    とある日の開発チーム新メンバーとの1on1にて インフラの構築は SREチームの方が 全てやっているん ですか? はい、そうですね 前職だと各開発チーム がTerraformでインフ ラを作っていたんです けどそういう機会はな さそうですか? い、今のところは なさそうです… Aさん
  21. 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さん
  22. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraformコードレビューを楽する 26

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

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

    Policy as Codeを導入して自動化出来るレビューは自動化していきたい Enforce policy as code まだ何も始まっていないので決意表明だけ…
  25. Copyright© TOKYO GAS Co., Ltd. All Rights Reserved. Terraform活用の現在地とこれから 30

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