Findyの爆速インフラ構築を支えるTerraform活用術 〜汎用モジュール編〜

はじめに

こんにちは、ファインディのPlatform開発チームでSREを担当している原(こうじゅん)です。

2025年は、ファインディにとって新規サービスリリースが相次ぐ年でした。

Platform開発チーム(以降、SREチーム)では、この1年間で6つのサービスのインフラ環境を構築してきました。

スピード感を持った環境構築を実現するために、私たちがどのような工夫を行ったのか、今回はTerraformの汎用モジュールを活用した取り組みについてお話しします。

2025年、6つのサービスをリリース

2025年、SREチームでは次のサービスのインフラ環境を構築しました。

  • Findy Conference
  • Findy AI+
  • Findy Team+ AIチャットボット
  • Findy ID
  • Findy Insights
  • アーキテクチャ壁打ちAI by Findy Tools

これらのサービスは、それぞれStaging環境やProduction環境といった複数の環境が必要であり、SREチームとしては短期間で多数の環境構築を実施する必要がありました。

スピード感のある環境構築で直面した課題

新規サービスのリリースラッシュの中で、私たちは次のような課題に直面しました。

サービス開発はスピード感を持って行われており、インフラ環境の構築にも「2週間でStaging環境とProduction環境を用意してほしい」といった依頼も珍しくありません。サービスリリースのタイミングが重なると、複数の環境構築依頼が同時に舞い込むこともあります。

SREチームは環境構築だけに専念できるわけではなく、既存サービスの運用改善、障害対応、セキュリティ対応なども並行して進める必要があります。

2025年当時、SREチームのメンバーは4名でした。この人数で、これだけのサービスリリースに対応するのは容易ではありませんでした。

Terraformでの汎用モジュールの導入

これらの課題を解決するために、ファインディのプロダクトで頻繁に利用するAWSリソース(ECS、ALB、RDS、VPCなど)を、再利用可能なTerraformモジュールとして整備しました。

これらを「汎用モジュール」と呼んでいます。

汎用モジュールの目的は、次の2点です。

  1. スピード: 環境構築にかかる時間を大幅に短縮する
  2. 品質: 標準化されたモジュールを使うことで、設定ミスを減らし、品質を担保する

generic_terraform_module

汎用モジュールは、HCP Terraform(旧Terraform Cloud)のプライベートレジストリに登録しています。これにより、チーム内で簡単にモジュールを共有・再利用できるようになりました。

Network、Container、Databaseなど、様々なパッケージを整備

汎用モジュールは、リソースの機能ごとにパッケージを分けて整備しています。

例えば次のようなカテゴリーに分けています。

  • Network: VPC、サブネット、ルートテーブル、NATゲートウェイなど
  • Container: ECS、Fargate、ALB、タスク定義など
  • Database: RDS、Aurora、パラメータグループなど
  • その他、必要に応じてモジュールを追加

モジュールごとにパラメーターを指定すれば環境が立ち上がる仕組み

汎用モジュールを使えば、必要なパラメーター(プロジェクト名、環境名、リソースサイズなど)を指定するだけで、標準化された環境が立ち上がります。

例えば、次のようなイメージです。

module "database" {
  source  = "app.terraform.io/Findy/findy-XXXX-platform/aws//modules/database"
  version = "X.XX"

  environment = "staging"

  engine_type             = "postgresql"
  db_parameter_group_name = "sre-staging"
  instance_class          = "db.t4g.medium"
  number_of_instances     = 2
  preferred_backup_window = "20:05-20:35"
  service_name            = "sre-sandbox"
}

このように、モジュールを組み合わせることで、複雑なインフラ環境を短時間で構築できます。

汎用モジュールで解決した課題

汎用モジュールの導入により、品質が担保されてスピード感のある構築が可能になりました。

汎用モジュールを使うことで、モジュール内の構成ならProduction環境とStaging環境を含めても最短3日で完了できるようになりました。

またパラメーターを指定するだけで環境が立ち上がるので、新しいメンバーでもすぐに戦力になれる仕組みを作ることができました。

Terraformのplanは成功するけどApplyはコケる問題

汎用モジュールの導入で大きな成果が得られた一方、汎用モジュールから呼び出した構成でTerraformのplanは成功するけどApplyはコケるという問題も発生しました。

この問題は、構築スピードの低下につながるため、Terraform Testを導入して対処しました。

詳細については、次の記事で詳しく紹介していますので、ぜひご覧ください。

tech.findy.co.jp

まとめ

2025年、SREチームは多数のインフラ環境を構築しました。その裏側で、Terraformの汎用モジュールを活用することで、スピード感と品質を両立した環境構築を実現しました。

汎用モジュールの導入により、SREチームの環境構築はスピードアップしましたが、まだまだ改善の余地があります。

現在は、SREチームが主体となってインフラ環境を構築していますが、今後は開発チームが主体となって容易にインフラ構築できるPlatformを作りたいと考えています。

これにより、開発チームがより自律的にサービスをリリースできるようになり、SREチームはより注力すべきタスクに集中できるようになります。いわゆるPlatform Engineeringの取り組みを進めていきます。


ファインディでは一緒に会社を盛り上げてくれるメンバーを募集中です。 興味を持っていただいた方はこちらのページからご応募お願いします。

herp.careers