MEGAZONE

MEGAZONEブログ

AWS infrastructure as code: A year in review
DevOps and Developer Productivity re:Invent 2023

AWS infrastructure as code: A year in review

Pulisher : Managed & Support Center イ・スンヒ
Description : AWS CloudFormationとAWS Cloud Development Kit (AWS CDK)を使用したAWSインフラストラクチャのコーディングの新機能と改善点について紹介したセッション

AWSでのIaC領域に直面している過去と現在、そして未来について包括的に確認できることを期待して、このセッションを申し込みました。また、新しくリリースされる機能を見て、IaCに移行する、移行しているお客様に提案できる機能があることを期待しています。

このセッションでは、AWS CloudFormationとAWS Cloud Development Kit (AWS CDK)を使用したAWSインフラストラクチャのコード化の新機能と改善点について紹介します。

このセッションでは、3つの主要なトピックについて説明します。

1つ目は、インフラストラクチャーコード化の基盤への投資と、AWSが昨年リリースしたインフラストラクチャーコード化の多くの機能について説明します。

次に、IaCへの移行を加速し、IaCを採用した後、チームがインフラストラクチャーコード化を最大限に活用できるようにするために、どのような機能があるのか、どのように組織でインフラストラクチャーコード化への移行を進めることができるのかについて説明します。

最後に、今後1年間を見据え、インフラストラクチャーコーディングの未来と2024年に予想される変化の方向性について共有する予定です。

AWSのインフラコード(IaC)ポートフォリオについて簡単にまとめます。

私たちはポートフォリオをレイヤーとして考えており、最も基本的な基礎レイヤーにはAWS CloudFormationリソースレジストリレイヤーがあります。このレイヤーは、AWSの幅広いサービスと深い機能をIaCツールでプロビジョニングできるリソースにします。

その上にAWS CloudFormationのコア製品があり、リソース全体のプロビジョニング操作を調整し、ドリフト検出、チェーンセット、スタックセットなどの管理エクスペリエンスを提供します。

このレイヤーとのやり取りには、YAMLまたはJSONベースのテンプレートを使用し、CloudFormationの別機能として最近リリースされたHooks機能も含まれています。

リソースプロバイダレイヤー(Resource Provider Layer)は、宣言された状態を具体的なAPI呼び出しに変換する役割を果たします。 例えば、CloudFormationテンプレートの一部としてAmazon S3バケットを作成し、サーバー側暗号化を設定するコマンドは、このレイヤーを通じて実際のAPI呼び出しに変換されます。このレイヤーは、リソースの作成だけでなく、更新もサポートしており、S3バケットのプロパティの変更などのタスクを処理することができます。CloudFormationや他のIaCツールは、テンプレートの変更を把握し、必要な更新API呼び出しを行います。

12年前、CloudFormationが最初にリリースされたとき、リソースプロバイダレイヤーと呼ばれるレジストリソリューションは存在せず、もともとリソースプロバイダレイヤーはCloudFormationのコードベース内に構築・実装されていました。AWSは、特に2022年に3000を超える重要な新機能をリリースするなど、お客様のために継続的かつ迅速に革新を続けています。

AWSのCloudFormationがAWSの機能やサービスをサポートしなければ、インフラストラクチャの一部として使用できないと述べました。 したがって、IaCが大規模なクラウドアプリケーションインフラストラクチャを管理する主要な方法として定着しているため、このリソースカバレッジは非常に重要です。 また、このリソースモデルは、作成、更新、削除のプロビジョニング操作を標準化するだけでなく、読み取りとリスト操作も標準化しました。 これは、このレジストリモデルに実装されたリソースが、ドリフト検出やリソースのインポートなどの管理エクスペリエンス機能を自動的にサポートすることを意味します。

AWSは現在プレビュー段階にある「AWS統合アプリケーションテストキット」という新機能を提供しています。この機能は、クラウドでのテスト主導型開発をより簡単にするために必要なリソースのセットアップを支援することに重点を置いています。これには、クラウドベースのリソースの検索、テストハーネスの作成、一部の非同期機能のインタラクションのデフォルトのタイムアウトロジックを設定する方法の把握などが含まれます。現在、この機能はEventBridgeをサポートし、Pythonでプレビュー中です。

CloudFormationの新機能を先行発表できることを大変嬉しく思います。この新機能は、既存のリソースのCloudFormationテンプレートを作成します。 この機能により、実際にAWS環境で既存のリソースをスキャンすることができるようになります。CloudFormationによって管理されているものと管理されていないものを確認することができます。 検索とフィルタリング機能が提供され、AWSはいくつかのリソース関係を提案します。 そして、管理されていないリソースを選択すると、CloudFormationテンプレートを作成することができます。

CDKを使用する場合にも追加機能があります。CDK CLIを使用する新しい’migrate’コマンドを使用してCDK L1コードを生成することができる新しい機能が追加されました。 この機能により、CDKへの移行がより簡単になると思います。 既存のリソースをCloudFormationに移動し、それに対してCDK L1コードをスムーズに生成することができます。例えば、TypeScriptで’reinvent2023’というスタックを作成したい場合、CDK migrate CLIコマンドを実行し、VSコードに切り替えて生成されたL1 CDKコードを見ることができます。 この機能は、チームがインフラストラクチャのコード化への移行をより迅速に行うのに役立つと期待しています。

AWSは最近、リモートGitプロバイダーからCloudFormationスタックを同期できる新機能を発表しました。 これで、ユーザーはGitHub、GitHub Enterprise、Bitbucket、またはGitLabにコミットをプッシュすることで、CloudFormationスタックの作業を自動的にトリガーすることができます。この機能は、AWS CodeStar接続を利用してGitリポジトリとCloudFormationを接続し、デプロイメントプロセスを簡素化します。 また、このCodeStar接続技術は双方向で動作し、CloudFormationからGitHubにデータを送信することもできます。

最後に、インフラストラクチャー・コーディング(IaC)の分野で変わらないことは、一貫性のある基盤となるリソース層への投資が継続されることです。 これはすべてのIaCツールの基盤であり、カバレッジ、品質、一貫性を確保するために重要です。 また、IaCはクラウドインフラストラクチャーの使用を拡大するための重要な方法であり、このようなスケーラビリティを備えたサービスは、IaCにおいて引き続き重要です。 特に、安全性の面では、抽象化と生成型AIがオーサリング速度を加速するにつれて、ロールバックやHooksのような機能がより重要になると予想されます。これらの機能は、今後も主要な重点分野となるでしょう。

今回のセッションを通じて、AWSが提供するIaCの主な機能、そして新しくリリースされる機能、さらに、これから守るべき機能について知ることができる時間でした。私の場合、セッションが終わる頃、今後何が変わらないのかという講演者さんの言葉が記憶に残っています。リインベント期間中、数多くの新しいサービス、機能について無数に接していますが、これにとどまらず、今後時間が経っても変わらないものに投資してビジネスを構築しているというAWSのポジションが私にも多くのことを考えさせられる時間でした。

ブログ一覧

この記事の読者はこんな記事も読んでいます