Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AppEngine × Spring Boot × Kotlin
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Hidetake Iwata
October 26, 2017
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AppEngine × Spring Boot × Kotlin
2017.10.26
AppEngine ja night #2
Hidetake Iwata
October 26, 2017
More Decks by Hidetake Iwata
See All by Hidetake Iwata
Rewrite Go error handling using AST transformation
int128
1
1.4k
Cluster AutoscalerをTerraformとHelmfileでデプロイしてPrometheusでモニタリングする / Deploy the Cluster Autoscaler with Terraform and Helmfile, Monitor with Prometheus
int128
3
1.9k
認証の仕組みとclient-go credential plugin / authentication and client-go credential plugin
int128
7
7.9k
CLIでOAuth/OIDCを快適に利用する
int128
0
1k
いつものJIRA設定
int128
1
240
Swaggerのテンプレートを魔改造した話 / Customize Swagger Templates
int128
1
5k
本番環境のリリースを自動化した話
int128
0
850
Swagger × Spring Cloud
int128
0
140
The Evolution of System Architecture
int128
0
240
Other Decks in Technology
See All in Technology
「最後に責任を取るのはチーム」— 人間のPRレビューを最小化してアップデートしたメンタルモデル
jnishime_dresscode
0
620
CIで使うClaude
iwatatomoya
0
250
SRE Lounge Hiroshimaへの招待
grimoh
0
640
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
3.9k
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
220
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.4k
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.5k
知らん間に、回ってる
ming_ayami
0
570
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
160
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
AICoEでAIネイティブ組織への進化
yukiogawa
0
170
Claude Code 珍プレー好プレー
shinyasaita
0
330
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
The Curse of the Amulet
leimatthew05
2
13k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Building an army of robots
kneath
306
46k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Statistics for Hackers
jakevdp
799
230k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
560
Fireside Chat
paigeccino
42
4k
Transcript
AppEngine × Spring Boot × Kotlin Hidetake Iwata (@int128) AppEngine
ja night #2
Hidetake Iwata Software Engineer at NTT DATA ※今日は個人的なお話です 2
agenda 1. AppEngine × Spring Boot × Kotlinでサービスを作った話 2. Gradleのプラグインを作った話
3. CircleCIによる継続的デプロイ 3
GradleUpdate ビルドツール(Gradle)の新しいバージョンが出たら、バージョンアップのPull Requestを 送ってくれるサービスを開発中 https://gradleupdate.appspot.com • AppEngine Standard • Spring
Boot • Thymeleaf • Kotlin • EGit
AppEngine/Java 最近のStandard Environmentは大幅に改善されている • Java 8に対応 • Servlet 3.1に対応 •
クラス制限の廃止、スレッド生成の対応 (心の声...) • もうJava 9が出たよ • 時代はGolang一択では 5
Spring Boot Pros • JVM言語のWebアプリケーションフレームワークではデファクトスタンダード (Java, Groovy, Kotlin) • エコシステムが発達している
Cons • 初期化が遅い • フットプリントが大きい 6
Kotlin Pros • 既存言語のよいところを取り入れたモダンな言語 • Javaとの相互運用性 • コンパイルが速い Cons •
欠点は無い? 7
AppEngine × Spring Boot × Kotlin Pros • モバイルアプリとバックエンドを同じ言語で実装できる(Android) •
大抵のSpring Bootアプリはちゃんと動く • うれしい無料枠 Cons • エコシステムが未発達なのでLow Level APIに頼らざるを得ない • Too long spin up time • AppEngineとSpring Bootの相性 8
⚠ Too long spin up time問題 トラフィックが増えてスケールアウトする と、 大きなレイテンシが発生する 約20~25秒のレイテンシ
• 7秒(コンテナの起動) • 5秒(JVMやJettyの起動) • 8秒(Springの初期化) 9
⚠ AppEngineとSpring Bootの相性問題 ⚠ Problem • Spring Security OAuth2でセッションにアクセストークンが保存されない https://stackoverflow.com/questions/45217234/issue-with-using-spring-oauth-o
n-java8-standard-environment Workaround • AppEngine標準のセッションハンドラを使わない • Spring SessionでMemcache/Datastoreにセッション情報を保存 https://github.com/int128/spring-session-appengine
appengine-spring-boot-plugin Gradle plugin for App Engine Standard and Spring Boot
https://github.com/int128/appengine-spring-boot-plugin Features • Watch and Sync resources(テンプレートを編集したらリロードで反映) • Spring Bootのデバッグモードを有効化(テンプレートのキャッシュオフ等) • 環境依存値の管理
CircleCIによる継続的デプロイ GitHubにpushした契機でAppEngineにデプロイしたい • CircleCI 2.0を使う • サービスアカウントの秘密鍵はBASE64で環境変数に入れておく • google/cloud-sdk:alpineイメージにopenjdk8とapp-engine-javaをインストール •
GradleのappengineDeployタスクでデプロイ 12
version: 2 jobs: build: docker: - image: google/cloud-sdk:alpine working_directory: ~/gradleupdate
steps: - run: name: Install command: | apk --update add openjdk8 gcloud components install app-engine-java 13
- deploy: name: Deploy command: | if [ "$CIRCLE_TAG" ];
then echo "$GCP_SERVICE_ACCOUNT_KEY" | base64 -d > "$HOME/gcp-service-account-key.json" gcloud auth activate-service-account \ --key-file "$HOME/gcp-service-account-key.json" ./gradlew appengineDeploy fi 14
まとめ AppEngine × Spring Boot × Kotlinを快適に使うためのTipsを紹介しました • Gradle plugin
for App Engine Standard and Spring Boot https://github.com/int128/appengine-spring-boot-plugin • CircleCIによる継続的デプロイ 15