Slide 1

Slide 1 text

Kotlinでサーバーレス! 「Kotless」の紹介 2021/09/29 サーバーレス LT 磯江 宏由紀

Slide 2

Slide 2 text

自己紹介 ❖ 磯江 宏由紀(Twitter:@ihirhs) ➢ 虎の穴ラボ株式会社 ■ 通販サイトの開発 ■ ファンクラブプラットフォームサービスの開発 ➢ Java、Kotlinを利用したサーバサイド開発 ➢ 直近一ヶ月はRailsとVue.jsの開発! ❖ サーバーレスやりたい! ➢ 今のスキルも活かしたい! ➢ Kotlessがあるじゃないか! 2

Slide 3

Slide 3 text

アジェンダ ❖ Kotlessってなに? ➢ 仕組み ➢ 利用に必要なもの ➢ 構成 ❖ アプリケーションを定義する ❖ デプロイ設定を定義する ❖ Kotlessのオススメポイント ❖ Kotlessを利用する上での注意点 3

Slide 4

Slide 4 text

Kotlessってなに? ❖ Kotlin製のサーバーレスフレームワーク ➢ アプリケーションの開発に注力するためのフレームワーク ❖ アプリケーションのコードからデプロイに必要なTerraformのコードを生成 ❖ ローカルでの動作確認からデプロイまで可能 ❖ ver0.1.6現在、AWSでのみ対応 ❖ 次バージョン0.2.0でMicrosoft Azure 4

Slide 5

Slide 5 text

Kotlessの仕組み 5

Slide 6

Slide 6 text

❖ AWSアカウント ➢ +AWS Command Line Interfaceの導入 ❖ アプリケーションを公開するためのRoute53で管理しているDNSゾーン ❖ Kotlessアーティファクトを保存しておくS3バケット ❖ AWS Certificate Managerの証明書 ❖ デプロイするコード Kotlessを利用するために必要なもの 6

Slide 7

Slide 7 text

Kotlessの構成 ❖ アプリケーションを定義する ➢ Kotless DSL ■ フレームワーク独自の記法でコーディング ➢ Ktor ■ サーバーサイドKotlinのフレームワーク「Ktor」の記法でコーディング ➢ Spring Boot ■ アノテーションを利用してルーティングを設定 ❖ デプロイ設定を定義する ➢ Gradleプラグイン ■ 利用するS3バケットやDNSなどを設定 ■ ローカル実行やデプロイなどの Gradleタスクを提供 7

Slide 8

Slide 8 text

アプリケーションを定義する(Kotless DSL) ❖ アノテーションでルーティング 8 @Get("/") fun main() = "Hello world!"

Slide 9

Slide 9 text

アプリケーションを定義する(Ktor) ❖ Kotlessを継承して、prepareメソッドをOverride ❖ ルーティングとレスポンスはKtorの記法 9 class Server : Kotless() { override fun prepare(app: Application) { app.routing { get("/") { call.respondText { "Hello World!" } } } } }

Slide 10

Slide 10 text

アプリケーションを定義する(Spring Boot) ❖ Kotlessを継承して、bootKlassをOverride ❖ ルーティングはSpring Bootの記法 10 @SpringBootApplication open class Application : Kotless() { override val bootKlass: KClass<*> = this::class } @RestController object Pages { @GetMapping( "/") fun main() = "Hello World!" }

Slide 11

Slide 11 text

デプロイ設定を定義する(build.gradle.kts) 11 kotless { config { bucket = "kotless.s3.example.com" // 利用するS3バケット terraform { profile = "example" // AWS CLIのプロファイル region = "us-east-1" } } webapp { // アプリケーションを公開するドメイン route53 = Route53("kotless", "example.com") } }

Slide 12

Slide 12 text

デプロイする Gradleタスクの「deploy」を実行するだけ 12

Slide 13

Slide 13 text

Kotlessのオススメポイント ❖ アプリケーションの開発に専念できる ❖ Ktor、SpringBootなどサーバーサイドKotlinの知見を活用できる ❖ ローカルでの動作確認ができる 13

Slide 14

Slide 14 text

Kotlessを利用する上での注意点 ❖ まだメジャーバージョンがリリースされていない ➢ 実装が大きく変わるかも? ❖ 一般公開したくない場合には、ひと手間必要 ❖ デプロイしてしまうとAWS費用がかかります ➢ 自分の場合はS3、Route53で$1/月 14

Slide 15

Slide 15 text

Kotless関連のリンク https://github.com/JetBrains/kotless https://site.kotless.io/ 15