AWSはCloudFormationサービスの新機能をリリースし、ユーザーがスタック間でリソースを移動できるようにした。同社によると、この機能はモジュール性、組織性、変化するビジネス要件との整合性を向上させるとのこと。
スタックリファクタリングはCloudFormationスタックを再構築する戦略的アプローチで、リソースをあるスタックから別のスタックに移動させたり、同じスタック内で新しい論理IDでリソース名を変更したりすることが含まれる。この機能は効率性と明確さの向上、大規模でモノリシックなスタックの小規模で管理しやすいスタックへの分解、アプリケーションアーキテクチャや組織構造により適した形へのリソース再編成、リソースの論理IDのリネームによるテンプレート可読性の向上などを目指す開発者にとって特に価値がある。さらにスタックのリファクタリングはリソース管理を改善し、正確なスケーリングと割り当てによってコストの最適化を支援する。
ソフトウェア開発エンジニアーAWSインフラストラクチャ・アズ・コードのKevin DeJong氏は次のように書いている:
AWS CloudFormationにおけるスタックのリファクタリングはインフラ管理における重要な進歩を示しています。これはクラウドリソースを中断することなく再編成する、より安全で効率的な方法を提供します。この機能はスタックを再編成する際に、従来必要だった保持ポリシーでリソースを削除してインポートする手間をなくし、設定ミスのリスクを減らし、時間を節約するのに役立ちます。
AWS CLIを使ってスタックリファクタリングを実行する場合、次のようになる:
aws cloudformation create-stack --stack-name new-stack --template-body file://after.yaml aws cloudformation create-stack --stack-name old-stack --template-body file://before.yaml aws cloudformation update-stack --stack-name new-stack --use-previous-template aws cloudformation update-stack --stack-name old-stack
比較するとAzure CLIやBicepなどのAWS CloudFormationツール、そしてTerraformには、それぞれ異なる環境に合わせた独自の機能を提供するスタックリファクタリングとインフラストラクチャ管理機能を備えている:
-
Azure CLIは様々なスコープにわたるAzureデプロイメントスタックの包括的な管理を可能にし、管理されていないリソースに対するアクションを可能にする。
-
一方、Azure Resource Manager用ドメイン固有言語 Bicepは読みやすい構文とモジュールサポートにより、デプロイメントスタックの作成と管理を簡素化する。
-
対照的にHashiCorpによるTerraformはマルチクラウド環境をサポートし、moved blockやterraform state mvコマンドのような機能によるリファクタリング機能を含むインフラストラクチャ・アズ・コードアプローチを提供する。
テクノロジーとコーディング愛好家のWill Dady氏はBlueskyに投稿した:
AWSがCloudFormationに "スタックリファクタリング"機能を追加したのは素晴らしいことです!これによりリソースをスタック間で移動する際に、削除してからインポートする必要がなくなるはずです。これは私の経験では常にヒヤヒヤする経験でした。
最後に、AWSはリファクタリングスタック機能がAWS CloudFormationを提供している全てのAWSリージョンで利用可能であると述べている。