MENU

サーバーレスアプリケーションをKotlinで開発してAWSに構築できるサーバーレスフレームワーク『Kotless』

こんにちは、虎の穴ラボの磯江です。 今回は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がダウンロードされます。

f:id:toranoana-lab:20200323153621p:plain
Kotlessの動作概要図

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アプリのスマホ自動テストを開発

techbookfest.org

P.S. 採用について

虎の穴ラボではとらのあなのサービスをより良くしていくための仲間を絶賛募集中です。興味がある方はぜひ採用情報をご覧ください。(WantedlyLAPLASでの採用も行っております)

yumenosora.co.jp

4/22の19時30分よりオンラインでのLT会を開催します。
とらのあなエンジニアがおすすめする技術書についてLTを行いますので、connpassのイベントページよりご参加ください。

yumenosora.connpass.com

虎の穴ラボについてもっと知りたい方は、採用説明会やカジュアル面談も受け付けておりますので是非ご参加ください。

news.toranoana.jp