GENDAデータ基盤チームにおけるHCP Terraformの活用
株式会社GENDA / さっく
メンバー / データエンジニア / 従業員規模: 5,001名以上 / エンジニア組織: 51名〜100名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
10名以下 | 2023年 | B to C |
ツールの利用規模 | 10名以下 |
---|---|
ツールの利用開始時期 | 2023年 |
事業形態 | B to C |
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
弊社では、データ基盤のインフラにAWSを、DWHにSnowflakeを利用しており、当時はスピード重視でリソースが作成されていました。
AWSについては、リソースがすべてコンソールから直接作成されていたため、設定内容を確認するにはコンソールにログインしなければならず、変更も同様に直接操作が必要でした。これにより、設定の一貫性や変更履歴の管理が困難でした。
Snowflakeでも同様に、コンソール上でSQLを実行する形でリソースが構築されており、テーブルなどの構造はSQLファイルで管理されていたものの、権限設定についてはファイル管理がされていませんでした。現状の権限を確認するには、本番環境で直接SQLを実行する必要があり、特に監査やレビューの際に課題が残っていました。
どのような状態を目指していたか
インフラの構成や設定がソースコードで一元管理されている状態を目指していました。これにより、インフラの状況が可視化され、「誰」が「何のために」変更を行ったのかが明確に追跡できるようになります。また、インフラ変更の履歴を残すことで、類似環境を再現したい場合に低コストかつ効率的に構築できる体制を整えることを目指していました。
比較検討したサービス
- AWS CloudFormation
- Pulumi
比較した軸
複数サービスの一元管理
AWSやSnowflakeをはじめとする複数のサービスを一つのツールで管理できること。これにより、インフラ構成が分散せず、管理の一貫性を確保できる点を重視しました。
既存リソースの取り込み
すでに構築済みのリソースを簡単に取り込んで管理できること。移行や既存インフラの再構築を最小限に抑えるため、リソースのインポート機能が充実していることを評価ポイントとしました。
柔軟な制御構文
制御構文や条件設定が充実しており、開発者の要望を実現しやすいこと。カスタマイズ性が高く、複雑な要件にも対応できる柔軟性が求められました。
活発なコミュニティとナレッジベース
ツールのコミュニティが活発で、ドキュメントや事例が豊富に揃っていること。これにより、問題発生時のトラブルシューティングや最適な実装方法の学習がしやすく、スムーズな運用が期待できる点を重視しました。
選定理由
他のツールと比較した結果、当時、重要視していたポイントをすべて満たしていたのがTerraformでした。TerraformはAWSやSnowflakeなど複数のサービスを一元管理できるうえ、既存リソースの取り込みや柔軟な制御構文も備えており、当社の要件に最も適合していました。また、採択者がすでにTerraformを技術スタックとして持っていたことから、メンバーへのフォローアップや社内でのノウハウ共有がスムーズに進められると判断しました。
導入の成果
改善したかった課題はどれくらい解決されたか
リソースの可視化
すべてのリソースを取り込むのは物量的に難しかったものの、主要なリソースをTerraformで管理することで、ソースコードからデプロイ内容が確認できるようになりました。これにより、インフラの構成を把握しやすくなり、変更の可視性が向上しました。
インフラ変更のレビュープロセス
TerraformコードをGitHubで管理することにより、インフラへの変更に対するコードレビューが可能になりました。これによって、インフラリソースのリリースに対して正しいフローを確立し、変更の品質と一貫性が確保されました。
ステージング環境の効率的な構築
Terraform導入後、ステージング環境を構築する必要が生じましたが、環境ごとの設定ファイルを作成し、必要なモジュールを呼び出すだけで本番環境と同一の構成を再現できました。これにより、テスト用の環境構築がスピーディーかつ容易になりました。
どのような成果が得られたか
自動化されたCDの実現
IaC化により、GitHub Actionsを用いたCI/CDパイプラインを確立。Pull Requestやマージがトリガーとなることで自動的にデプロイが実行されるようになり、リリースプロセスが効率化されました。
導入時の苦労・悩み
学習コストの高さ
チーム内にTerraform未経験者が多く、Terraformの習得に対する学習コストが高かったこと。新しいツールの理解に時間がかかるため、全体のスキルレベルに応じたサポートが必要でした。
既存リソースの取り込みの難しさ
既存リソースの量が膨大で、すべてをTerraformで管理するのは現実的に困難でした。既存インフラの一部のみを段階的に取り込むなどの対応が必要で、移行に時間を要しました。
導入に向けた社内への説明
上長・チームへの説明
コストについて
Terraform Cloudを利用しないため、原則として追加費用は発生しないことを強調しました。
将来的なデータ基盤の成長に対応
会社が成長する中で、データ基盤も同様に拡大することが予想されます。このため、手動でリソースを追加・管理する体制では将来的に大きな問題が発生する可能性がある点を説明しました。
未経験者へのサポート体制
Terraformの未経験者が多かったため、導入推進者である私が手厚くフォローアップすること、また最初のテンプレートは私が作成するので、それを参考にしながら作業を進め、徐々にキャッチアップしてもらう方針を提示しました。
活用方法
よく使う機能
- リソース管理
- モジュール機能の利用による再利用可能なコードの定義
- リモートバックエンドを利用する事による、複数人での共同作業やリソース変更の一貫性の担保
- VariablesとOutputsを利用とmoduleを組み合わせた動的な構成変更
ツールの良い点
各種クラウドサービスや異なるSaaSも、Providerを追加するだけで一括管理が可能です。これにより、複数サービスを統合的に管理し、インフラ構成の一貫性を保つことができます。 また、現在の環境から、必要に応じてTerraform Cloudにスムーズに移行できる柔軟性も、今後のインフラ拡張や管理の自動化を見据えた選択肢として有用だと思っております。
ツールの課題点
一部のProviderでは、メジャーバージョンアップ時に破壊的変更が発生する可能性があり、バージョンアップには慎重な検討と多大な工数が必要です。
Provider自体に潜む不具合が原因で、リソースの適用や変更が正常に動作しない場合があり、予期せぬトラブルに巻き込まれる可能性があります。
既存のリソースをTerraformにインポートする際、特に大規模なインフラの場合は手作業が多く、時間と工数がかかる点が課題です。
Terraformの構文やプロバイダ設定など、習得に一定の学習コストがかかり、特に初心者には敷居が高い部分があります。
ツールを検討されている方へ
まず小さな環境から始めて、少しずつ範囲を広げるのがおすすめです。 学習コストはどうしても大きいツールなので、知見を持つ方がいない場合の導入には注意が必要です。 また、Providerのバージョンアップは前述の通り、後方互換性がない場合があるため導入時にはできる限り新しいバージョンでの導入をおすすめします。
株式会社GENDA / さっく
メンバー / データエンジニア / 従業員規模: 5,001名以上 / エンジニア組織: 51名〜100名
よく見られているレビュー
株式会社GENDA / さっく
メンバー / データエンジニア / 従業員規模: 5,001名以上 / エンジニア組織: 51名〜100名