APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Terraform CloudとGitHubの連携を活用したAzure基盤設計における考慮すべき点と個人的知見

こんにちは、ACS事業部の佐藤です。

皆様はTerraform CloudやGitHub上でのIaCを既に導入されていますでしょうか?

  • 「これからクラウドに乗り換えたいが、いきなりIaCはハードルが高い」
  • 「既にAzure等のクラウドを導入しているが、IaCの導入はまだ行っていない」

といった方に向けて、著者のTerraform CloudとGitHubの連携を用いたAzureリプレース案件に携わった経験から、Azure基盤設計における考慮すべき点と著者個人が得た知見について紹介いたします。

考慮すべき点

  1. チーム開発の必要性
    • IaCはチーム開発においてその真価を発揮します。従って、アプリケーション開発と同様にチーム内での協力と共通のルールの確立が必要です。例えば、プルリクエストの承認基準などを事前に定めておかなければ、チーム内の認識のずれからミスが発生する可能性があります。
  2. IaCを前提としたアーキテクチャの検討
    • IaCでインフラストラクチャを管理する際に、開発環境と本番環境のアーキテクチャに差異がある場合、運用フェーズでの管理が難しくなる可能性があることに注意が必要です。
  3. ブランチ戦略と環境差分
    • ブランチごとに異なる環境(開発環境、本番環境など)を管理する場合、各環境の差分をTerraform Cloudのリモートステートで適切に管理する必要があります。このためにはTerraformのステート管理に関する理解が必要です。
  4. 管理対象リソース数の制限
    • Terraform CloudのFree版は最大で500の管理対象リソースまでしかサポートしません。したがって、多数の小さなリソース(例えばメトリックアラート等)が存在する場合には上位の有償プランへの変更が必要です。
      参考: Terraform | HashiCorp | 取扱製品 | ネットワールド

個人的知見

  1. 事前の連携体制の整備
    • 事前にチーム内の役割分担を明確にし、メンバーが何をいつまでに完了するかを計画しておくことが重要です。これにより、進捗を把握しやすくなります。
  2. 顧客向けの納品計画
    • 最終的な納品までのプロセスを明確に計画し、メンバーの個別計画と全体計画を比較して遅延を防ぐことが必要です。
  3. 組織の切り替え
    • 顧客向けに開発するIaCを自社環境に試験的にデプロイする場合、自社のTerraform CloudとGitHubをそれぞれ顧客のものに切り替える必要があります。この作業には顧客との調整を念頭に置いた計画が必要です。
  4. 要件変更とIaC
    • 途中でIaCに要件の変更が加わる場合、その緊急性に応じてAzure Portalなどでリソースを直接作成・変更・削除する必要があります。この過程でTerraformで管理しているリソースを同期させるための作業が発生します。

おわりに

IaCを用いたチームでの基盤設計および構築において、種々の計画と準備が重要であることを実感しました。これらの知見を次回のプロジェクトに活かし、さらなる改善点を積極的に探求し、より効率的な開発フローを実現したいと考えています。

以上が、著者がTerraform CloudとGitHubの連携を用いたAzureリプレース案件に携わった経験から得た考慮すべき点と個人的知見についての紹介でした。

これからクラウドへのリプレースを計画している方や、IaCの導入を検討されている方は是非お声がけいただければ幸いです。

ACS事業部のご紹介

私達 ACS 事業部は Azure・AKS などのクラウドネイティブ技術を活用した内製化のご支援をしております。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp

本記事の投稿者: 佐藤 光
AKS/ACA をメインにインフラ系のご支援を担当しています。