scala on gae
TRANSCRIPT
copyright Fringe81 Co.,Ltd.
Scala on GAE
市ヶ谷Geek★Night#12 ScalaMatsuriの余
韻トーク〜祭りの余熱〜
2017.03.16
copyright Fringe81 Co.,Ltd.
copyright Fringe81 Co.,Ltd.
About me@mtoyoshi
現在新規サービス立ち上げ中GAEを利用
コミュニティアプリ「シンクル」「今年のベストApp10選」選出
App Engine BigQuery Cloud
DataflowCloud
Pub/Sub Firebase
・・・
copyright Fringe81 Co.,Ltd.
scala matsuri懇親会での話
copyright Fringe81 Co.,Ltd.
「お仕事でScala使われているんですか?」
copyright Fringe81 Co.,Ltd.
私「はい。それを今のプロジェクトではGAE上で稼働させて...」
copyright Fringe81 Co.,Ltd.
「えっ」私「えっ」
copyright Fringe81 Co.,Ltd.
「えっ、あの・・・?」私「あの?」
copyright Fringe81 Co.,Ltd.
「Google App Engine」
copyright Fringe81 Co.,Ltd.
GAE x Golangの事例を聞くことが増えた
copyright Fringe81 Co.,Ltd.
ScalaをGAEで動かすためには
GAE standard environment・Java7・jetty
copyright Fringe81 Co.,Ltd.
ScalaをGAEで動かすためには
GAE flexible environment・Java8・Docker基盤 ※ standard envはBorgというGオリジナルコンテナ
copyright Fringe81 Co.,Ltd.
つい先日、GAEのmeetupにて
copyright Fringe81 Co.,Ltd.
「えっ、flexible...?」私「...」
copyright Fringe81 Co.,Ltd.
長らくベータでしたが無事、GA化
copyright Fringe81 Co.,Ltd.
akka-httpで作ったアプリケーションをデプロイする
※Playアプリケーションも稼働するはず
copyright Fringe81 Co.,Ltd.
1. プロジェクトを作っておく
copyright Fringe81 Co.,Ltd.
2.デプロイコマンドを含むcloud sdkをインストールしておく先程作ったプロジェクトへの設定をしておく(gcloud init)
copyright Fringe81 Co.,Ltd.
object Main extends App { implicit val system = ActorSystem("my-system") implicit val materializer = ActorMaterializer() implicit val executionContext = system.dispatcher
val route = path("hello") { get { complete( "hello!") } }
val bindingFuture = Http().bindAndHandle(route, "0.0.0.0", 8080)
sys.addShutdownHook { val awaitable = for { binding <- bindingFuture _ <- binding.unbind() _ <- system.terminate() } yield ()
Await.ready(awaitable, 10 seconds)}
3. コーディング
copyright Fringe81 Co.,Ltd.
4.各種設定ファイルを用意する
runtime: customenv: flex
FROM gcr.io/google_appengine/openjdk8VOLUME /tmpADD my.jar app.jarCMD [ "java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
app.yaml
Dockerfile
copyright Fringe81 Co.,Ltd.
5.デプロイ
% gcloud app deploy
copyright Fringe81 Co.,Ltd.
copyright Fringe81 Co.,Ltd.
注意点
https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users
copyright Fringe81 Co.,Ltd.
Read系は GAE standard(go)
Write系はGAE flexible(scala)
というCQRS
copyright Fringe81 Co.,Ltd.
NEWS: Java8がGAE standardでα release!
copyright Fringe81 Co.,Ltd.