前から、CDKを用いた環境整備を行いました。今までterraformで構築してきたので、それとの差分をメモ代わりに書こうと思います。DR使い分けとしては下記のようになるかなと思っていますCDKベストプラクティスを簡単に構築したい場合。使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースをモデル化およびプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです。CluodFormation(AWS専用のIaCサービス)用のパターンファイルを生成してくれるものとなります。いつも使い慣れた言語を使うことができるため、サーバーサイドのエンジニアが手軽にインフラの構築を実現できるものとなります。今回はTypeScriptを用いたのですが、型推論がしっかり効いていたため、どのリソースにどのようなパラメータが設定可能なのかを、コードをみるだけである程度推測することが可能で、流れるようにコードを書くことができました。}}このように、<リソース名>.from<設定するアトリビュート>()とすると、現在のリソースから情報を取得し、その取得した結果を別のリソース作成時に使い回すといったことができます。実行時は下記のようにTypeScriptをJS化した上で通常のJavaScriptを実行するだけなので、環境変数の注入など、動的に指定することが可能です。いうユースケースが考えられます。CDKを使っているということは必然的にAWSを用いているということになるわけですが、例えばあるリポジトリでCodeBuildで環境を整備しようとしたときにbuildspec.ymlを配置すると思うのですが、そちらに下記のように指定することによって、dockerイメージを作成したあとにそのイメージを使って環境を作るといったことが可能になります。template.ymlこちらのartifactsを使ってCloudFormationを立ち上げるといった具合です。この際、例えばCodeBuildに対して特定の条件を分岐させるような環境変数を提供し、それをコード化することによって必要な環境をよしなに作ることができます。この昨日を使うといいかもしれません。便利な関数を呼び出す形で組み立てていきます。型である程度中を推論できるものの、ハードコーディングされているオプションなどがあり、細かいチューニングには向かないかなと思いました。servicehttps://www.terraform.io/Terraformのサイトから引用したのですが、文字通り、AWS以外のクラウドインフラにおいて使えるIaCのツールとなります。下記のように、独自のDSLを用いて記述していきます。HashiCorpプラグインなどを使うことによって、設定できるパラメータが何があるかと言うのをある程度推論してくれます。80}実行は基本的にサイト上にあるバイナリファイルをダウンロードしてきて、それを実行していく形になります。実行後はstateというストレージに環境全体の情報が格納され、次回以降の実行時はこのstateと実際のインフラ環境、コードの状況を比較し、差分のみを実行するといったことを行ってくれます。いいところ一つ一つしっかり記述していくため、細かいチューニングができるのが特徴です。バイナリの方でフォーマットのコマンドも用意されているため、基本だれが書いても同じようなコードになります。importという機能があり、Webコンソールなどですでに構築されている環境の状態をstateに持ってくる機能があるため、試しにWebコンソールで環境を作ったあと、importでコード化するということができます。基本的に運用し続ける環境で効果を発揮すると思われます。差分適応による効率的な環境設定ができる点import機能による、コード化の簡易性インフラ構築に特化した、宣言型の実装というところで、メンテナンスに適しているためです。workspaceを用いることによって、本番環境と同等の環境を手軽に別の環境で作成することができるため、本番適応前の最終確認などが手軽に行えるといった点も評価できるポイントです相性の悪い環境すべてのパラメータを宣言的に書くという仕様上、あまり動的に変わるようなインフラ環境には向かないと思われます。動的に変更したい場合はCDKを検討しましょうまとめCDKとTerraformを比較してきました。それぞれ一長一短あると思いますが、よしなに使い分けていけるといいかなと思っております。CLIとhubを使い比べての感想PHPerKaigi2020に参加して得た知見CDKとterraformの使い分けlernaコマンドの標準出力が微妙な時はstreamオプションをつける月別アーカイブ注目記事はてなブログをはじめよう!kotamatsさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。