【Kotlin】KotlessというServerlessFrameworkを使ってみた

技術ネタ
この記事は約4分で読めます。

こんばんわ、hisayukiです。

最近バタついていて、月1回は書こうとしているブログすらギリギリになってました・・・
世間もバタついていて、弊社もフルリモートでお仕事しております。

というわけで、今回の本題に入っていきます。

スポンサーリンク

What’s Kotless?

Create and deploy serverless application using Kotlin only.

https://site.kotless.io/

KotlinだけでServerlessApplicationを
環境構築からDeployまでやっちゃおうぜ!

コンセプトとしてはこんな感じです。
なんとKotlinを開発したJetBrainsから発表された公式Frameworkなんです。

JetBrains/kotless
Kotlin Serverless Framework. Contribute to JetBrains/kotless development by creating an account on GitHub.

なぜKotlessをやってみたか?

もともと見つけたのはこちらの記事

なにこれ面白そう!!ってなったので早速やってみることに

しかし興味を持ったものの、調べても全然情報がない・・・
こちらの記事も詳しい事は書いてなく、続きは書籍でって感じでした

なんとQiitaの記事も0・・・

とはいえ、公式ページはあるしGetStartedもあるので英語を翻訳しながらやってみました。
もっと幅広くの人に知ってもらいたいと思ったので。
自分がQiitaの記事を書いたら一番乗りだと思ったのでw

AWSリソースの自動生成

Gradleへの記述でTerraformが動く

Gradleへの記述でAWSリソースが自動生成される

これがメイン機能の1つですね
手元にTerraformを入れていなくても、Gradleのタスク起動と同時にダウンロードしてくれる。

つまり利用者はTerraformを意識しなくてもIaCができてることになる

Kotlessのみで作れるAWSリソースは以下のとおり

  • IAM
  • Route53
  • Lambda
  • API Gateway

書くのはGradleなのでAWS CDKみたいにKotlinで書いてるって感じはあんまりしないですw
Kotlin ScriptでGradleを書くなら、たしかにKotlinだけで書いているというのは間違いではないw

作成リソースは柔軟にできる

見ての通り、永続化層は自動生成できません。
ただ、足りないリソースをTerrafromの記述で書いてGradleの読み込ませて実行させる機能はあります。

まぁでもここまで来るとKotlinだけってのは無理で、tfファイルを書く必要あります。

つまり柔軟にしようと思ったらTerraformの知識が必要です。

このあたりは今はそうなだけかもなので、今後Gradleへの記述で作れるようになることを期待。

結論

今後に期待かなぁ・・・

  • 実践導入するには敷居がちょっと高い
  • 国内外関係なく情報量が少ない
  • 柔軟に使うにはTerraformの知識が必要
  • jarファイルJVM系が持つコールドスタート対応は必要
  • 今はAWSしか選択できない

試みとしては面白いし、実際Kotlinだけで書ききることも可能。

個人的にはKotlinはScriptも吐き出せるので、JSでLambdaを作ってくれたら尚よかったなぁと。
あとはせっかくTerraformの実行をラップしてるので、他のリソースもGradleから作れるようになったら嬉しい。

あとは今の段階ではAWSしか選択できないという点ですね。
ただ、Terraformが幅広く対応はしてるのでここは追々増えてくのかなと

今回やってみた手順としてはQiitaにまとめたのでこちらに

【Kotlin】kotlessをやってみました(API Gatewayまで)【kotless】 - Qiita
今回公式のGetting startedをやってみたので、それを日本語で書いていこうと思います。 kotlessとは? Kotlinのみを使ってServerlessApplicationを作成し、デプロイすることがでるServe...

まとめ

結論にも書きましたが、試みとしては面白いのでこれからに期待という感じですね。
市場にどの程度広がるかも重要ですが、JetBrainsが開発しているという点でも期待はできます。

途中でも書きましたがIaC環境を別途用意しなくても、同じプロジェクト内で管理できるのは利点かなって思いました。

コメント