IaSQLは、SQLを使ってAWSインフラをモデル化するサービスを提供する企業であり、同社は最近、IaSQLがオープンソースのsoftware as a serviceとして利用できるようになることを発表した。
クラウドAPIをSQLテーブルにマッピングすることで、IaSQLはAWSアカウントとホストされているPostgreSQLデータベースとの間の双方向接続を管理し、AWSのデプロイを記述する。共同創設者兼CEOのLuisFer De Pombo氏は、次のように説明している。
Infrastructure as Codeソリューションには、マイクロサービスアーキテクチャのインフラ部分の依存関係をエンコードするよい方法がありません。そのため、インフラに変更を加えたり元に戻したりすることは非常に困難です。インフラをSQLとして表すことでYAMLベースのインフラツールの一番の問題が解決されます。つまり、インフラの要素を第一級(基本的な操作が行われる独立した対象)とするのです。
このサービスでは、既存のデプロイを管理するように設定できる。AWSアカウントをIaSQLインスタンスに接続し、データベースに実行中のクラウドリソースを入力し、モジュールシステムを使ってサービスを定義・制限することができる。モジュールシステムでは、すべてのIaSQLモジュールがAWSサービス(たとえばaws_ec2、aws_elb)にマッピングされる。
出典: https://dev.to/depombo/update-iasql-set-source-open-4pip
SQLを使ってクラウドインフラをクエリ・管理しようとするサービスは、IaSQLだけではない。他の選択肢として、CloudQuery、オープンソースのクラウド資産インベントリ、Steampipe、Turbotのオープンソースプロジェクト、trino-cloud、クラウドリソースを管理するためのTrinoコネクタ、StackQLがある。De Pombo氏は、SQLアプローチの利点の例を挙げている。
EC2インスタンスタイプを「t2.mucro”」として設定し、デプロイシステムがそのようなインスタンスの作成を試みて失敗することを許容できません。insertステートメントが失敗すると、一行も挿入されなかったことが通知され、その理由をすぐに確認できます。
この記事では、EC2インスタンスを管理するための様々なSQLステートメントの例が示されている。たとえば、最新のAmazon Linux AMIで実行される新しいインスタンスを作成する例である。
INSERT INTO aws_ec2 (ami_id, ec2_instance_type_id) SELECT ami.id, ait.id FROM ec2_instance_type as ait, ( SELECT id FROM amis WHERE image_name LIKE 'amzn-ami-hvm-%'ORDER BY creation_date DESC LIMIT 1 ) as ami WHERE ait.instance_name = 't2.micro';
SQLを使うことで想定される利点の1つは、言語の受け入れである。SQLはほとんどのエンジニアリングチームですでに使用されているため、クラウドエンジニアはインフラを操作するために新しい言語を学ぶ必要がない。Hacker Newsのスレッドで、ユーザnucatusは次のようにコメントしている。
インフラの状態をSQLとして表現して、型の安全性やその他の制約を適用することには意味がありますが、現在のツールに対する実際の利点が何であるかはまだわかっていません。型の安全性やクラウドプロバイダーが定義した制約など、一覧化されている主な利点はすべて、実際に現場でテストされたツールとフレームワークによってすでに十分にカバーされています。
ユーザのrubiquityはそれに同意していない。
SQLを使って書き込みをしたくないという批判を多く見ますが、それは誤りだと思います。インフラの現在の状態は絶対的な状態であり、SQLは状態を操作するための素晴らしい言語です(...)インフラはステートフルでリレーショナルなので、SQLとリレーションを使って管理しない手はないでしょう。
開発者によると、リポジトリとしてPostgreSQLインスタンスを利用する利点の1つは、実行中のIaSQLデータベースをAWS上の以前のスナップショットに完全に置き換え、デプロイ全体を以前の状態にロールバックできることである。
現在のリリースでは、AWSのサービスの一部(EC2、Elastic Container Register(ECR)、ECS + Fargate、ELB、RDS、VPC、IAM)のみがサポートされている。IaSQLは、将来的にGCP、Azure、他のクラウドプロバイダーをサポートする予定である。リポジトリはGitHubにあり、Discordチャネルを利用できる。