scala on gae

26
copyright Fringe81 Co.,Ltd. Scala on GAE 市ヶ谷GeekNight#12 ScalaMatsuri の余 韻トーク〜祭りの余熱〜 2017.03.16

Upload: masaki-toyoshima

Post on 09-Apr-2017

429 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Scala on gae

copyright Fringe81 Co.,Ltd.

Scala on GAE

市ヶ谷Geek★Night#12 ScalaMatsuriの余

韻トーク〜祭りの余熱〜

2017.03.16

Page 2: Scala on gae

copyright Fringe81 Co.,Ltd.

Page 3: Scala on gae

copyright Fringe81 Co.,Ltd.

About me@mtoyoshi

現在新規サービス立ち上げ中GAEを利用

コミュニティアプリ「シンクル」「今年のベストApp10選」選出

App Engine BigQuery Cloud

DataflowCloud

Pub/Sub Firebase

・・・

Page 4: Scala on gae

copyright Fringe81 Co.,Ltd.

scala matsuri懇親会での話

Page 5: Scala on gae

copyright Fringe81 Co.,Ltd.

「お仕事でScala使われているんですか?」

Page 6: Scala on gae

copyright Fringe81 Co.,Ltd.

私「はい。それを今のプロジェクトではGAE上で稼働させて...」

Page 7: Scala on gae

copyright Fringe81 Co.,Ltd.

「えっ」私「えっ」

Page 8: Scala on gae

copyright Fringe81 Co.,Ltd.

「えっ、あの・・・?」私「あの?」

Page 9: Scala on gae

copyright Fringe81 Co.,Ltd.

「Google App Engine」

Page 10: Scala on gae

copyright Fringe81 Co.,Ltd.

GAE x Golangの事例を聞くことが増えた

Page 11: Scala on gae

copyright Fringe81 Co.,Ltd.

ScalaをGAEで動かすためには

GAE standard environment・Java7・jetty

Page 12: Scala on gae

copyright Fringe81 Co.,Ltd.

ScalaをGAEで動かすためには

GAE flexible environment・Java8・Docker基盤 ※ standard envはBorgというGオリジナルコンテナ

Page 13: Scala on gae

copyright Fringe81 Co.,Ltd.

つい先日、GAEのmeetupにて

Page 14: Scala on gae

copyright Fringe81 Co.,Ltd.

「えっ、flexible...?」私「...」

Page 15: Scala on gae

copyright Fringe81 Co.,Ltd.

長らくベータでしたが無事、GA化

Page 16: Scala on gae

copyright Fringe81 Co.,Ltd.

akka-httpで作ったアプリケーションをデプロイする

※Playアプリケーションも稼働するはず

Page 17: Scala on gae

copyright Fringe81 Co.,Ltd.

1. プロジェクトを作っておく

Page 18: Scala on gae

copyright Fringe81 Co.,Ltd.

2.デプロイコマンドを含むcloud sdkをインストールしておく先程作ったプロジェクトへの設定をしておく(gcloud init)

Page 19: Scala on gae

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. コーディング

Page 20: Scala on gae

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

Page 21: Scala on gae

copyright Fringe81 Co.,Ltd.

5.デプロイ

% gcloud app deploy

Page 22: Scala on gae

copyright Fringe81 Co.,Ltd.

Page 23: Scala on gae

copyright Fringe81 Co.,Ltd.

注意点

https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users

Page 24: Scala on gae

copyright Fringe81 Co.,Ltd.

Read系は GAE standard(go)

Write系はGAE flexible(scala)

というCQRS

Page 25: Scala on gae

copyright Fringe81 Co.,Ltd.

NEWS: Java8がGAE standardでα release!

Page 26: Scala on gae

copyright Fringe81 Co.,Ltd.