こんにちは、虎の穴ラボの磯江です。 今回はKotlinのサーバーレスフレームワークである「Kotless」を紹介します。
KotlessはJetBranisが開発しているフレームワークです。 github.com
Kotlessを利用するのに必要なもの
- 管理者権限のあるAWSアカウント
- AWS Command Line Interface (AWS CLI) のインストール
- アプリケーションに適用するDNS名を作成するRoute 53のDNSゾーン
- Kotless関連のアーティファクトを保存するためのS3バケット
- 公開するURLのUS-EAST-1リージョンでのAWS Certificate Manager(以降、ACM)証明書
ACM証明書の発行以外はAP-NORTHEAST-1(東京)リージョンに用意して大丈夫です。 上記に必要なS3バケットもAP-NORTHEAST-1(東京)リージョンに作成可能です。
Kotlessについて
Kotlessは次の事項に焦点を当てたフレームワークです。
- サーバレスアプリケーションをデプロイする際のルーチンワークを減らす
- コードからサーバレスアプリケーションを直接生成する
Kotlessを構成するのは次の2つの主要なパーツです。
- サーバーレスアプリケーションを定義するための2種類のDSL
- サーバーレスアプリケーションをデプロイするためのGradleプラグイン
Kotlessで利用する2種類のDSL
- Ktor DSL
Kotlessが内蔵するKtorエンジンで、Ktorの標準的な構文が利用可能 - Kotless DSL
ルーティングやイベントなどを宣言するアノテーションを提供するKotless独自のDSL
KotlessのGradleプラグイン
Kotlessは、ビルドツールであるGradleのプラグインを提供します。 プラグインを導入することで、「アプリケーションのコードからTerraformコードを生成」、「AWSにデプロイするタスクの実行」が可能になります。
Terraform*1は、クラウド上のインフラストラクチャをコードで管理するツールです。 KotlessはTerraformコードの生成と実行を自動で行うので、アプリケーションの開発に集中できます。
Kotlessの概要
Kotlessは、DSLで定義されたKotlinのコードを解析し、Terraformコードを生成します。
AWSへのデプロイはTerraformで行われますが、個別にTerraformをインストールする必要はありません。
Gradleでのデプロイ実行時に自動でTerraformがダウンロードされます。
KotlessとKtorの関係
Ktor*2はKotlessがサポートしているWebフレームワークです。
サーバーレスアプリケーションの実処理はKtorフレームワークに則って実装します。
Ktorでの実装をKotlessが解析し、クラウドプラットフォームにデプロイします。
まとめ
Kotlessの概要について簡単ですが、まとめました。
実際にサーバーレスアプリケーションを開発し、デプロイする方法については、技術書典 応援祭にて販売している『虎の穴ラボ TECH BOOK Vol.1』の記事に掲載しています。
他にも以下の記事が掲載されているので、興味がある方は是非お手にとってみてください。
技術書典応援祭は4月5日までなのでお気をつけください。
- GoogleAppEngineでGo1.11に移行するために色々やった話
- Rust and WebAssemblyでブロック崩しを作ろう
- Go言語で靴る処理系実装入門
- AppiumとKotlinでWEBアプリのスマホ自動テストを開発
P.S. 採用について
虎の穴ラボではとらのあなのサービスをより良くしていくための仲間を絶賛募集中です。興味がある方はぜひ採用情報をご覧ください。(WantedlyやLAPLASでの採用も行っております)
4/22の19時30分よりオンラインでのLT会を開催します。
とらのあなエンジニアがおすすめする技術書についてLTを行いますので、connpassのイベントページよりご参加ください。
虎の穴ラボについてもっと知りたい方は、採用説明会やカジュアル面談も受け付けておりますので是非ご参加ください。