scala on gae

Post on 09-Apr-2017

429 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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.

top related