こんばんわ、hisayukiです。
最近バタついていて、月1回は書こうとしているブログすらギリギリになってました・・・
世間もバタついていて、弊社もフルリモートでお仕事しております。
というわけで、今回の本題に入っていきます。
What’s Kotless?
![](https://contents.hisa-tech.site/2020/05/01000352/image.png)
Create and deploy serverless application using Kotlin only.
https://site.kotless.io/
KotlinだけでServerlessApplicationを
環境構築からDeployまでやっちゃおうぜ!
コンセプトとしてはこんな感じです。
なんとKotlinを開発したJetBrainsから発表された公式Frameworkなんです。
なぜ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にまとめたのでこちらに
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUUzJTgwJTkwS290bGluJUUzJTgwJTkxa290bGVzcyVFMyU4MiU5MiVFMyU4MiU4NCVFMyU4MSVBMyVFMyU4MSVBNiVFMyU4MSVCRiVFMyU4MSVCRSVFMyU4MSU5NyVFMyU4MSU5RiVFRiVCQyU4OEFQSSUyMEdhdGV3YXklRTMlODElQkUlRTMlODElQTclRUYlQkMlODklRTMlODAlOTBrb3RsZXNzJUUzJTgwJTkxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1iMWU3MzgxOWIxYTBmOWFhMTQxMTlkYTM3MmE1NTBjNA&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBoaXNheXVraSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9OTY4MDk3ZGExN2FmOGMwNzRkOTNhODE3MjU4YzNjZGE&blend-x=142&blend-y=486&blend-mode=normal&s=b8aaccb1c0909a6f1350d85af8de3111)
まとめ
結論にも書きましたが、試みとしては面白いのでこれからに期待という感じですね。
市場にどの程度広がるかも重要ですが、JetBrainsが開発しているという点でも期待はできます。
途中でも書きましたがIaC環境を別途用意しなくても、同じプロジェクト内で管理できるのは利点かなって思いました。
コメント