Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pulumi AIで開発体験は変わるのか
Search
Yodeee
September 18, 2023
0
76
Pulumi AIで開発体験は変わるのか
Yodeee
September 18, 2023
Tweet
Share
More Decks by Yodeee
See All by Yodeee
Moxie
yodeee
0
11
Agents for Amazon Bedrockで何ができるようになるのか
yodeee
2
1k
Amazon Verified Permissionsをプロダクトにどう組み込むかを考える
yodeee
0
120
アウトプットし始めたら QOL (Quality of Learning) が爆上がりした話
yodeee
0
120
GPT × Alexa × AWS で 英会話学習スキルを作った話
yodeee
0
220
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Music & Morning Musume
bryan
46
6.2k
Bash Introduction
62gerente
608
210k
Docker and Python
trallard
40
3.1k
Writing Fast Ruby
sferik
627
61k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Designing Experiences People Love
moore
138
23k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Gamification - CAS2011
davidbonilla
80
5k
Transcript
Pulumi AIで開発体験は変わるのか
Pulumi全然人気ない...🙄
Pulumiは他ツールとどのような差別化をしている のかを知り、技術選定のための材料を持ち帰って いただく 今日の目的
依⽥ 涼太 Ryota YODA • ⾦融系を主なお客様としてアプリの設計・開発を フロントからバックエンドまで幅広く経験 • ここ最近はアジャイル開発のテックリードとして 技術選定・設計・標準化の⽀援に従事
業務 • 業務で浅く広く経験 • Terraform : 1年半 • SAM: 半年 • CloudFormation︓半年 • CDK: 4ヶ⽉(現在使⽤中) IaCの経験
Infrastructure as Code(IaC)とは • サーバやネットワーク構成等のITインフラをコードで管理する⼿法 • バージョン管理と再利⽤可能なコードを利⽤し、信頼性、効率性、再 現性を向上させる • AWSサービスとしてCloudFormationやCDK、SAM、サードパーティ
ツールとしてServerless FrameworkやTerraform、Pulumiがある CloudFormation CDK SAM
• IaCを提供するオープンソースツール • JS, TS, Python, Go, .NET, Java等のプログラミング⾔語が使⽤可能 →
クラスやメソッドを定義することによるコンポーネントの再利⽤や 複雑な分岐処理やループ処理が可能 • 個⼈利⽤は無料だが、チーム利⽤だと課⾦が発⽣ → ただし毎⽉無料クレジットが提供されるため、それを超えた場合のみ課⾦
それ、CDKでよくない︖👮
CDKと⽐較したときのPulumiのプロコン
複数クラウド・SaaSのサポートによるインフラ管理の統⼀性 ネイティブプロバイダー SaaS Pros CDKと⽐較したときのPulumiのプロコン Auth0、CloudFlare、 Confluent Cloud、Datadog、DigitalOcean、Docker、 GitHub、Kong、MinIO、MongoDB Atlas、PagerDuty、Snowflake、Spot
by NetApp、SumoLogic...など
ネイティブプロバイダー SaaS AWS + SaaSの構成であっても、Pulumiであればまとめての管理が可能に CDKと⽐較したときのPulumiのプロコン Auth0、CloudFlare、 Confluent Cloud、Datadog、DigitalOcean、Docker、 GitHub、Kong、MinIO、MongoDB
Atlas、PagerDuty、Snowflake、Spot by NetApp、SumoLogic...など 複数クラウド・SaaSのサポートによるインフラ管理の統⼀性 Pros
⾃動テストの容易性 コンストラクトが⽣成するCfnテンプレートに対してアサーションテストを⾏う Pros CDKと⽐較したときのPulumiのプロコン Template Program AWS Cloud Cfn Deploy
CDKの単体テスト(Fine-grained Assertions) Test CloudFormation
⾃動テストの容易性 コンストラクトが⽣成するCfnテンプレートに対してアサーションテストを⾏う Pros CDKと⽐較したときのPulumiのプロコン CloudFormation Template Program AWS Cloud Cfn
Deploy CDKの単体テスト(Fine-grained Assertions) Test Cfnテンプレートに対してアサートすることによって... • CDKのオブジェクトとCfnテンプレートの間にはコンテキストギャップが存在するた め、テストコードの記述が少し⼤変
⾃動テストの容易性 コンストラクトが⽣成する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
⾃動テストの容易性 コンストラクトが⽣成する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プログラムと同じオブジェクトモデルを使⽤してアサートできることによって... • テスト対象のコンテキストギャップがないため、テストがより容易に書ける • プログラムの状態やリソースの挙動の直接デバッグが可能
抽象化されたリソース定義のレパートリーが少ない Pulum i Cons AWS classic L1 L2 L3 Crosswalk
for AWS (awsx) 抽象 化レ ベル 高 CDK, Pulumi ライブラリの対応表 CDKと⽐較したときのPulumiのプロコン CDK
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 抽象 化レ ベル 抽象化されたリソース定義のレパートリーが少ない
CDK L1 L2 L3 Crosswalk for AWS (awsx) 高 ver1.0が公開されたばかりということもあり、awsxのリソース
カバー範囲がまだ狭い Pulum i AWS classic CDKと⽐較したときのPulumiのプロコン CDK, Pulumi ライブラリの対応表 Cons 抽象 化レ ベル 抽象化されたリソース定義のレパートリーが少ない
Pulumi CDK CDKと⽐較したときのPulumiのプロコン コード量の比較: ALB + ECS on Fargate構成 (TypeScript)
コード量の比較: ALB + ECS on Fargate構成 (TypeScript) Pulumi CDK CDK
L3だとLBはプロパティ指定で作成される CDKと⽐較したときのPulumiのプロコン
まとめ メリット • 複数クラウド、SaaSのサポートによるインフラ管理の統⼀性 • 直接的にプログラムオブジェクトにアサートできることによるテストの 容易性 デメリット • CDKのL2,
L3に相当するリソース定義のカバー範囲がまだ狭いため、 L1相当の定義でカバーする分コード量が多くなってしまう CDKと⽐較したときのPulumiのプロコン
Pulumi AIの紹介
Pulumi Insight • ⽣成AIとLLMを活⽤したサービス郡 • クラウドインフラの包括的な視覚化と管理を提供 • SEARCH︓マルチクラウド横断でのリソース検索、AI補助検索 • ANALYTICS︓外部BIツールでの分析のためのデータエクスポート
• INTELLIGENCE︓コード⾃動⽣成機能(Pulumi AI) ちなみにこのマスコットはカモノハシらしい
Pulumi AI • GPT-4(3.5)を使⽤して、構築したいサービスの コードを⾃動⽣成 • ⽣成されたコードに対して、サービス追加や発⽣し たエラー⽂を送信すると、コードを修正してくれる • チャットのURL共有が可能
• CLIに対応
スタンダードなサーバレスを作ってみる AWS Cloud AWS Lambda Lambda function Amazon API Gateway
GET /sample
Pulumi AIのコンソールにアクセス
リソース要求プロンプトを作成し、チャットに投げてみる ⽣成するプログラミング⾔語が選択可能
リソース要求プロンプトを作成し、チャットに投げてみる 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.
リソース要求プロンプトを作成し、チャットに投げてみる
リソース要求プロンプトを作成し、チャットに投げてみる ここからリンクのシェアが可能
⽣成されたコードの全量
Lambda関数 API Gateway API GWリソース定義 API GWメソッド定義 統合タイプ定義 API GWのLambda
呼び出し許可権 限を付与 ⽣成されたコードの全量 ぱっと⾒問題なさそう。ヨシ︕デプロイだ
Pulumiのプロジェクトファイルに貼り付けデプロイしてみる `pulumi up` でデプロイ実⾏
実行するとエラーが発生
エラーが発⽣した場合、エラー情報をチャットに貼り付ければコード を修正してくれる IAMロールの定義⽅法が誤っていたようだった...
修正後、デプロイは成功
デプロイは成功したものの.... コンソールで⾒てみるとAPI GWのス テージが作成されていなかった コードを⾒返すと、API GWのステージの 定義がないことに気づき追加
Pulumi公式のサンプルを⾒てみると、圧倒的に少ないコード量で書かれていた... これが使⽤されている
PulumiAI CLI デモ
Pulumi AIで開発体験は変わるのか︖
PulumiAIは開発者体験を変えるのか︖ • 現状、⽣成されたコードは⼤体エラーになる、コードの再現性がない点などから 開発者体験を変えるまでには⾄っていない印象 • ⽣成コードをプロダクションそのままに採⽤は難しいが、たたき台を作るために使⽤する、や Pulumiの学習に使⽤するという点では有⽤ • ⽣成AI, LLMに対しての取り組みについては他IaCと⽐較して、とても早いため
今後のさらなるアップデートに期待︕
おまけ Pulumi AIのソースを眺めてみる
Pulumi AIのソースを眺めてみる https://github.com/pulumi/pulumi-ai コードはTypeScriptで書かれており、コード量も350⾏と少ない
Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・
・
Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・
・ ベースプロンプト (⽇本語訳)あなたはPulumiAI、Pulumi ${lang}で書 かれたクラウドインフラストラクチャを構築・デプロイ するAIエージェントです。 私の指⽰ごとに⼀つの Pulumi ${lang}プログラムを定義し、そのPulumiプロ グラムの説明を⽣成してください。 私はそのプログラ ムをデプロイし、エラーがあった場合はお知らせします。 私の指⽰に基づいて現在のプログラムを修正してくださ い。 要求されない限り、ゼロから始めるべきではあり ません。
Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・
・ 命令プロンプト OpenAI APIに送信するプロンプトを⽣成 ベースプロンプト + 現在のソース + ユーザが⼊⼒したプロンプト
Pulumi AIのソースを眺めてみる ・ ・ ・ ・ ・ ・ ・ ・
・ PulumiAI クラス コード取得メソッド コード⽣成時には本関数が呼びだされる 命令プロンプトを作成し、下のコード⽣成メソッドに渡す コード⽣成メソッド 上で⽣成したプロンプトを受け取り、OpenAI APIに送信し、 GPTで⽂章を⽣成する
Thank you!