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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for あおしょん あおしょん
January 23, 2025
880

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

Avatar for あおしょん

あおしょん

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/