セッションタイトル: Multi-project, multi-runtime, multi-region infrastructure as code
スピーカー: Rosemary Wang

TerraformやVaultなどで有名なHashiCorp社によるセッション。
再利用しやすいIaCのベストプラクティスを紹介いただきました。
Tips的なものが多く散りばめられて、非常に参考になるものでした。
この投稿でも、Tipsの要約を含めていきたいと思います。

はじめに

Terraformとはマルチクラウド対応のIaCツールで、デファクトスタンダードと言えると思います。
Google CloudにもDeployment Managerというマネージドサービスがありますが、Terraform の利用を公式サイトで推奨していたります。

IaC Journey

概要は以下のような流れです。
書く → 共有する → リファクタ → スケール

ここでのスケールは、スケールアウトに限らず、他のリソースを対象にするようなことも含みます。
[Tips] IaCの基本。IaCは進化することを見越して設計する

Atomic changes

この実現のために、レイヤーごとに、1状態、サービスアカウント、パイプラインを意識しましょう。
ソフトウェア設計における原子性の担保と同様なものに見えましたが、セキュリティの視点も加わっているように受け取りました。

依存関係

Terraformでは、参照させる形で依存関係のある構築が可能です。

Multi-project

最初にBootstrapを用意しましょう。

Bootstrap

Bootstrapとは、一番初めに他のインフラをデプロイするために必要なリソース群を構築するものです。
Bootstrapの要素は、以下のようなものになります。
– バケットのような状態の保存先
– IAMやGCSのようなサービスアカウント
– CI/CD環境向けのような、共用リソース用のプロジェクト群

Shared Org Resources

要素は以下のようなものになります。
– BillingやLogging
– KMSやSecrets
– 共用NWのためのプロジェクト

ここまでのことを踏まえ、サンプルとしてはこのような構成が考えられます。

より完全なサンプルはコチラ

Multi-runtime

Runtimeとはサービスを稼働させるために必要なインフラになります。
業務上の組織によって分離しましょう。
環境ごとによる違いはキャプチャのように表すことができます。

[Tips] モジュールのネストは、トラブルシュートのために2階層までにしましょう

Multi-region

マルチリージョンのリソースサンプルはこちらです。

[Tips] 繰り返しであっても、読んで精査を
これはマルチリージョンに限らない気がしましたが、重要なTipsと思います。

Multi-cloud

Cross-Cloud Interfaces をサポートする


Cross-Cloudとは、複数のクラウド環境で構築されるシステムです。一見、マルチクラウドでは?って思われるかもですが、マルチクラウドの進化系といいますか、クラウド内でのサイロ化がされず、データ境界がなくなるようなものです。
例としては以下のようなものが挙げられます。
– Kubernetes
– Service mesh
– Secrets management

まとめ

普段何気なく使っていたTerraformや、そのベストプラクティス確立への背景を体系的に学べたセッションでした!

【iret presents】Google Cloud Next’24 Recap 4月19日16時より「【iret presents】Google Cloud Next’24 Recap」を開催します。4月9~11日にラスベガスで開催される Google Cloud が主催する「Next’24」のポイントを解説する Recap イベントです。

詳細はこちら:
https://cloudpack.jp/event/googlecloud-next-2024-recap.html