Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pulumi AIで開発体験は変わるのか

Yodeee
September 18, 2023
47

Pulumi AIで開発体験は変わるのか

Yodeee

September 18, 2023
Tweet

Transcript

  1. • IaCを提供するオープンソースツール • JS, TS, Python, Go, .NET, Java等のプログラミング⾔語が使⽤可能 →

    クラスやメソッドを定義することによるコンポーネントの再利⽤や 複雑な分岐処理やループ処理が可能 • 個⼈利⽤は無料だが、チーム利⽤だと課⾦が発⽣ → ただし毎⽉無料クレジットが提供されるため、それを超えた場合のみ課⾦
  2. ⾃動テストの容易性 コンストラクトが⽣成するCfnテンプレートに対してアサーションテストを⾏う Pros CDKと⽐較したときのPulumiのプロコン CloudFormation Template Program AWS Cloud Cfn

    Deploy CDKの単体テスト(Fine-grained Assertions) Test Cfnテンプレートに対してアサートすることによって... • CDKのオブジェクトとCfnテンプレートの間にはコンテキストギャップが存在するた め、テストコードの記述が少し⼤変
  3. ⾃動テストの容易性 コンストラクトが⽣成するCfnテンプレートに対してアサーションテストを⾏う Pros CDKと⽐較したときのPulumiのプロコン Template Program AWS Cloud Cfn Deploy

    リソースオブジェクトに対して直接アサーションテストが可能 Pulumiの単体テスト(アサーション) Pulumi Engine Program AWS Cloud AWS SDK Test Test CDKの単体テスト(Fine-grained Assertions) CloudFormation
  4. ⾃動テストの容易性 コンストラクトが⽣成するCfnテンプレートに対してアサーションテストを⾏う Pros CDKと⽐較したときのPulumiのプロコン Template Program AWS Cloud Cfn Deploy

    リソースオブジェクトに対して直接アサーションテストが可能 Pulumiの単体テスト(アサーション) Pulumi Engine Program AWS Cloud AWS SDK Test Test CDKの単体テスト(Fine-grained Assertions) CloudFormation Pulumiプログラムと同じオブジェクトモデルを使⽤してアサートできることによって... • テスト対象のコンテキストギャップがないため、テストがより容易に書ける • プログラムの状態やリソースの挙動の直接デバッグが可能
  5. 抽象化されたリソース定義のレパートリーが少ない Pulum i Cons AWS classic L1 L2 L3 Crosswalk

    for AWS (awsx) 抽象 化レ ベル 高 CDK, Pulumi ライブラリの対応表 CDKと⽐較したときのPulumiのプロコン CDK
  6. CDK L1 L2 L3 Crosswalk for AWS (awsx) 高 Crosswalk

    for AWSは2022/11にversion1.0がリリース CDKのL2, L3に相当 Pulum i AWS classic CDKと⽐較したときのPulumiのプロコン CDK, Pulumi ライブラリの対応表 Cons 抽象 化レ ベル 抽象化されたリソース定義のレパートリーが少ない
  7. CDK L1 L2 L3 Crosswalk for AWS (awsx) 高 ver1.0が公開されたばかりということもあり、awsxのリソース

    カバー範囲がまだ狭い Pulum i AWS classic CDKと⽐較したときのPulumiのプロコン CDK, Pulumi ライブラリの対応表 Cons 抽象 化レ ベル 抽象化されたリソース定義のレパートリーが少ない
  8. コード量の比較: ALB + ECS on Fargate構成 (TypeScript) Pulumi CDK CDK

    L3だとLBはプロパティ指定で作成される CDKと⽐較したときのPulumiのプロコン
  9. まとめ メリット • 複数クラウド、SaaSのサポートによるインフラ管理の統⼀性 • 直接的にプログラムオブジェクトにアサートできることによるテストの 容易性 デメリット • CDKのL2,

    L3に相当するリソース定義のカバー範囲がまだ狭いため、 L1相当の定義でカバーする分コード量が多くなってしまう CDKと⽐較したときのPulumiのプロコン
  10. リソース要求プロンプトを作成し、チャットに投げてみる Deploy a Lambda function that runtime is Node.js ver16

    and an API Gateway of the REST type. Ensure that requests to the GET method of the 'sample' resource are directed to the Lambda function.
  11. Lambda関数 API Gateway API GWリソース定義 API GWメソッド定義 統合タイプ定義 API GWのLambda

    呼び出し許可権 限を付与 ⽣成されたコードの全量 ぱっと⾒問題なさそう。ヨシ︕デプロイだ
  12. Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・

    ・ ベースプロンプト (⽇本語訳)あなたはPulumiAI、Pulumi ${lang}で書 かれたクラウドインフラストラクチャを構築・デプロイ するAIエージェントです。 私の指⽰ごとに⼀つの Pulumi ${lang}プログラムを定義し、そのPulumiプロ グラムの説明を⽣成してください。 私はそのプログラ ムをデプロイし、エラーがあった場合はお知らせします。 私の指⽰に基づいて現在のプログラムを修正してくださ い。 要求されない限り、ゼロから始めるべきではあり ません。
  13. Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・

    ・ 命令プロンプト OpenAI APIに送信するプロンプトを⽣成 ベースプロンプト + 現在のソース + ユーザが⼊⼒したプロンプト
  14. Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・

    ・ PulumiAI クラス コード取得メソッド コード⽣成時には本関数が呼びだされる 命令プロンプトを作成し、下のコード⽣成メソッドに渡す コード⽣成メソッド 上で⽣成したプロンプトを受け取り、OpenAI APIに送信し、 GPTで⽂章を⽣成する