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

hashitalks_2023_ktc_shimakawa

Jukiya Shimakawa
September 21, 2023
80

 hashitalks_2023_ktc_shimakawa

Terraformを抽象化し環境構築の工数を削減する取り組みについて

https://events.hashicorp.com/hashitalksjapan
で登壇した資料になります。おまけ資料あり

Jukiya Shimakawa

September 21, 2023
Tweet

Transcript

  1. プラットフォームグループ Team Role Platform Group Cloud Infrastructure Platform Engineering SRE

    DBRE MSP CCoE クラウドエンジニアリング業務(ネットワーク/システムの設計、構築、運用、インフラ障害対応)を通じて安定的なインフラ環境を提供 クラウド(AWS/Google Cloud)エンジニア、IaCによるシステム構築やシステム変更などの運用業務を担いながら、システムパックのリリース やアプリケーションモニタリングなど改善業務も実施するグループの中核。 クラウドシステム運用に関わるツールの管理・開発・運用(問い合わせ対応)を提供 Managed Serviceを積極的に利用した運用・設計・構築で必要なツールを開発、運用、導入推進を行いツールにてプロダクトを支える SLA改善提案を推進することで安心安全なサービスの提供を実現 未来のプロダクト信頼性を担うエンジニア。信頼性向上のためにどんな事ができるのかをSREヒエラルキーを下から積み上げながらSREガ イドラインを作成中。プロダクトを絞って開発グループへのSREサポートも並行して実施しております。 データベース専門知識を用いて再帰性のあるプロセスや戦略決定を実現 データベースのスペシャリスト。データベースの信頼性向上のために見える化するツール提供から、セキュリティ対策やマスキング対策など の施策も順次準備中。 アプリケーション運用サポートにより間接的な開発スピードと品質向上に貢献する アプリケーションの障害・問い合わせ受付業務を行う「サービスデスク」と障害の1次オペレーションや定型作業を実施する「一次システム 保守」の2つの役割を担っていただける協力会社との連携を行う事務局的役割。 適切なポリシーで統制されたセキュアなクラウド環境の実現 クラウドセキュリティのスペシャリスト集団。クラウドセキュリティガイドラインの作成から、ガードレールの実装やAWS/GCPの教育サ ポートまでを手がける。
  2. - Terraform始めました時代 - とりあえずベタ書き - とにかく環境構築をする必要があった - プロジェクト数は数個 - 😭

    何も分からない/ナレッジがない 📆 初期構築完了まで約2週間 - 共通化(モジュール化)を始めたころ - サービスごとにモジュール化 - プロジェクト数が加速度的に増加 - プロジェクト数は10個↑ - 😭 モジュールの依存関係がない 📆初期構築完了まで約1週間 - packモジュールを開発し始めたころ - 変数定義のみでシステム構築が可能に - 現在もこれで運用中 - プロジェクト数は30個↑ - 😆 効率的に運用が可能に 📆初期構築完了まで1日 Phase 3 📗今日はここのお話しです!! Phase 2 Phase 1 KTCのIaCへの取り組み 2020年5月~ 2021年前半 2021年後半
  3. 🤔 IaCにおける様々な課題 🧷 書き方が人それぞれ - レビュー時間増 - 運用フェーズにおける 編集難易度が高い 🧷

    コスト/セキュリティ /ガバナンスの統制が難 しい 🧷 共通設定変更の影響 範囲が図り知れない コード管理の見直しで解決することに 👉
  4. packモジュール ECS モジュール EC2 モジュール Lambda モジュール テンプレート これだけ書けばOK 抽象化

    locals.tfのみ resourceすら書かせない 分解/集約 各モジュールを呼び 出す 作成 指定されたリソースを作成
  5. 🏃‍♂️ 今後の展開 - SaaS製品や他クラウドプロバイダーなどのサービスへの対応 - マルチプロバイダーを利用できるTerraformの強みを生かす - アプリケーション担当者でも構築可能に - packの仕組みを活用し検証のための環境構築などを簡単に作成できるようにする

    - Terraform Cloud No-Code Provisioningとも比較 - Stateの効率的かつ適切な管理、運用を目指して - StateをTerraform Cloudで管理 → Stateそのものの管理&可視化 - Terraform CloudによるDriftの検知 → 横串で環境の整合性を保つ
  6. terraform/ modules/ prod/ product A/ product B/ locals.tf これだけ編集すればOK(templates) main.tf

    regions.tf terraform.tf outputs.tf dev/ aws/ pack/ env/ s3.tf ec2.tf alb.tf … ec2/ locals.tf outputs.tf main.tf … s3/ main.tf … … …
  7. terraform/ modules/ prod/ product A/ product B/ locals.tf これだけ編集すればOK(templates) main.tf

    regions.tf terraform.tf outputs.tf dev/ aws/ pack/ env/ s3.tf ec2.tf alb.tf … ec2/ locals.tf outputs.tf main.tf … s3/ main.tf … … … 環境-プロダクトごとにstateを管理