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

プロダクト開発、インフラ、コーポレート、そしてAIとの共通言語としての Terraform /...

プロダクト開発、インフラ、コーポレート、そしてAIとの共通言語としての Terraform / Terraform as a Common Language for Product Development, Infrastructure, Corporate Engineering, and AI

2025/01/27 at LayerX・イオン・JALインフォテックに学ぶ Terraformによる自動化・効率化の最前線
https://findy.connpass.com/event/341035/

Yuya Takeyama

January 26, 2025
Tweet

More Decks by Yuya Takeyama

Other Decks in Technology

Transcript

  1. © LayerX Inc. 2 今日伝えたいメッセージ • 情シス・コーポレートエンジニアも Infrastructure as Code

    ツール使おう • Terraformを使って全社のためのプラットフォームを作ろう ◦ Platform Engineering のスキルを持ってコーポレートエンジニアになってみるの面白いかも • おまけ: AI Agent時代におけるTerraform プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  2. © LayerX Inc. 4 プロダクト開発、インフラ、コーポレートの共通言語としての Terraform 竹山雄也 (@yuya-takeyama) • 株式会社LayerX

    • コーポレートエンジニアリング室 • 新卒でWebエンジニア • 二社目の前職はSRE • 三社目の現職でコーポレートエンジニア • 浅草在住 • 趣味: メタル、麻雀、飲み歩き、散歩、ランニング
  3. © LayerX Inc. 5 • 仮説: DevOpsやSREの思想・プラクティスをより広範に適用することで、生産 性の高い組織を作れるのではないか • 自分が好む働き方

    ◦ 自分にできることは自分でやりたい ◦ 自分が関わる問題に自ら向き合って、解像度を高め、解決したい ◦ 困難な問題は、異なる役割の人と協力しあって解決したい • それを当たり前とするためのプラットフォームと文化を作りたい ◦ これらの一部を支援してくれるツールとしてTerraformを使っています WebエンジニアからSRE、そしてコーポレートエンジニアになった動機 プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  4. © LayerX Inc. 6 • IT基盤チーム、アプリケーションチーム、セキュリティチームからなる ◦ 自分はアプリケーションチーム • 3つの事業を含む全社に対して横断的に関わっています

    ◦ バクラク事業部 ◦ AI・LLM事業部 ◦ Fintech事業部 • その他、コーポレート本部など • 以降は「コーポレートエンジニアリング室」を「CorpEn室」と表記します コーポレートエンジニアリング室について プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  5. © LayerX Inc. 8 • 3つの事業部の全てがTerraformを利用 • 基本的にそれぞれの事業部ごとにリポジトリとCI/CD基盤がある • CorpEn室でも単一のリポジトリに集約している

    ◦ 一部個別アプリケーション用のものもあるが、集約していく方向性 • 私が入社した時点で既に、基本どこもTerraformを使っていた ◦ なので、これは私が作った流れとかではない LayerXにおけるTerraform活用 プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  6. © LayerX Inc. 9 • あらゆるクラウドサービスに対応している • 周辺ツールなどのエコシステム • コードの表現力が良い意味で限られており、変に複雑なことをしにくい

    ◦ 相対的に、読みにくいコードにしにくい • 全社で事実上のスタンダードになっている ◦ 「AWS SSOの権限変更依頼はPull Request出してね」といったことがと言いやすい ◦ 必要に応じて越境しやすいようにして、コラボレーションをできるようにしたい CorpEn室でTerraformを使う理由 プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  7. © LayerX Inc. 10 • IAM Identity Center (SSO) の権限

    • Route 53 におけるパブリックなHosted Zone、Record ◦ 購入や継続の管理も含めCorpEn室に集約 ◦ 原則としてCorpEn室のTerraformで管理 ◦ 必要に応じてNSレコードで移譲 ◦ プライベートDNSは全て個別のプロダクトごとに管理 • Organization横断Policy、CloudTrail、Security Hub等セキュリティ関連 • CorpEn室で開発・運用しているアプリケーション ◦ App Runner、Lambda等 CorpEn室のTerraform基盤で管理するリソース (AWS) プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  8. © LayerX Inc. 11 • グループおよびその自動プロビジョニング設定 • Privileged Identity Management

    ◦ 一時的に昇格できる権限の管理 • などなど CorpEn室のTerraform基盤で管理するリソース (Microsoft Entra ID) プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  9. © LayerX Inc. 12 Terraform の CI/CD プロダクト開発、インフラ、コーポレートの共通言語としての Terraform •

    tfaction を利用 ◦ 今日唯一の非 HCP Terraform 勢 • Pull Requestを出すとplanの内容がいい感じにコメントされる • マージするとその通りの変更が実行される ◦ artifactとして保存したplanファイルを利用することで、同一の内容が行われることを保証 • TerraformやTerraform Provider等はRenovateによっていい感じにアッ プデートされる
  10. © LayerX Inc. 15 コード生成を利用したグループメンバーの自動管理 プロダクト開発、インフラ、コーポレートの共通言語としての Terraform • SmartHR上の所属部署・役職・雇用形態等に応じてメンバーを自動更新したい ◦

    グループの管理を統制の取れたものに ◦ 各種SaaSにおける権限が、半自動的に正しい状態に更新 • 宣言的な設定ファイルと、SmartHR上のデータをもとに tf ファイルを自動生成 することで実現 ◦ https://tech.layerx.co.jp/entry/psuedo-abac-system-using-smarthr • 差分があれば自動的に Pull Request が来て、私が確認して approve して merge することで変更を適用
  11. © LayerX Inc. 16 設定 (TypeScript) プロダクト開発、インフラ、コーポレートの共通言語としての Terraform const config

    = { groups: [ { resourceId: 'admin', name: '管理者権限', memberConditions: [ { departmentCode: '1', employmentTypeId: EmploymentTypes.正社員, }, ], ], }, };
  12. © LayerX Inc. 17 出力されるTerraformのコード プロダクト開発、インフラ、コーポレートの共通言語としての Terraform resource "azuread_group" "admin"

    { name = "管理者権限" security_enabled = true members = [ "01234567-1111-1111-1111-012345678901", # [email protected] "01234567-2222-2222-2222-012345678902", # [email protected] "01234567-3333-3333-3333-012345678903", # [email protected] ] }
  13. © LayerX Inc. 18 グループは全社的に重要な共有リソース プロダクト開発、インフラ、コーポレートの共通言語としての Terraform • プロダクトの管理画面における権限の割り当て ◦

    管理画面の実装が「〜のグループに入っていれば〜の権限」となっている • 各種 SaaS における権限と特権の管理 ◦ 特権: 普段は使えないけど、必要な時に一定時間だけ昇格して利用することが可能な強力な権限 ▪ Privileged Identity Management (PIM) ▪ 特定のグループ・ユーザーだけが昇格可能 ▪ 承認を必要とすることも可能 ◦ Google Workspaceにおける特権の管理をEntraで行う ▪ https://tech.layerx.co.jp/entry/just-in-time-access-for-google-workspace-with-pim ◦ 自動プロビジョニングと組み合わせることで、あらゆるSaaSに同じことができる (超便利!!) ◦ 自動プロビジョニング可能かつ、グループに権限を割り当てることができればOK
  14. © LayerX Inc. 19 グループは全社的に重要な共有リソース プロダクト開発、インフラ、コーポレートの共通言語としての Terraform • あらゆるサービスの権限管理を統制のとれた状態に ◦

    サービスに関係なく同じグループを前提としてアクセス制御ができる ◦ 過去の状態やその根拠となる設定もGitの履歴を通じて追跡可能 • プロダクトやビジネスを陰ながら支えるセキュリティ/ガバナンス基盤に ◦ 「あるべき状態をデータとコードで定義する」ための組織情報データベースが必要 • 入社したその日、異動したその日から新しい権限が依頼なしで割り当てられる ◦ メンバーがスムーズに働き始められる状態を作る ◦ マネージャーやリーダーレベルの生産性がじわじわ削られることを避けられる
  15. © LayerX Inc. 21 • AI Agent自体にインフラ構築を丸ごとやってもらえる可能性 ◦ 例: ブラウザやAPIを通じて、インフラの構築自体をやってもらう

    ◦ おそらくできなくはないが、ミスは容易に起きるし人間による承認をどうやるか? • AIの精度は100%にはならない ◦ ミスを前提としたフローを構築する必要がある AI AgentによりTerraformは不要になるか? プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  16. © LayerX Inc. 22 • コード補完型ツールの利用におけるTerraform ◦ 例: GitHub Copilot、Cursor

    Tab ◦ よく普及しているツールなので、比較的精度の高い補完が期待できる (感覚値です) • AI Agent型のツールの利用 ◦ 例: Copilot Edits、Cursor Composer、Cline、Devin ◦ Pull Requestという形で差分を確認し、承認を行うことが可能 ◦ trivy、tflintといったツールによる自動チェックの支援も受けられる • コードというインターフェイスを通じてAIに知識を与えられ、人間はAIの仕事をレ ビューできる ◦ AI時代においてもTerraformは重要なツールであり続けるはず! (期待) 人間とAIの共通言語としてのTerraform プロダクト開発、インフラ、コーポレートの共通言語としての Terraform
  17. © LayerX Inc. 23 • コーポレートエンジニアリングにおいても Terraform は便利 • コード生成も活用することで、より複雑な要件への対応も可能に

    • Platform Engineeringの知見はCorporate Engineeringにも活かせる ◦ 募集しています! https://open.talentio.com/r/1/c/layerx/pages/94417 • 様々なロールの人々やAIが一緒に協力できるプラットフォームを作っていきたい まとめ プロダクト開発、インフラ、コーポレートの共通言語としての Terraform