Node.js Standard on Google App Engine はじめて触った

何もない状態から AppEngine にデプロイするまでの流れ

npm init
npm install --save express
vim app.js  # 簡単な express のサンプル書く
echo 'runtime: nodejs8' > app.yaml
gcloud app deploy

これだけで Hello, World できた!すごいはやい!シンプル!

書くまでもなさそうだけど、app.js の中身はこちら

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.status(200).send('Hello, world!').end();
});

const PORT = process.env.PORT || 8080;
app.listen(PORT);

Node.js Standard のすごいところ

app.yaml の内容が1行だけでよい

runtime: nodejs8

Go のときは app.yaml に謎の呪文を書かないといけなかった のでスッキリ(⌒▽⌒)

また、AppEngine 固有のライブラリみたいなのを入れる必要はなさそうで、ほぼ素の Node.js っぽい。これはとてもスッキリ(⌒▽⌒)

おそらく最近話題になった gVisor のおかげ。Googleさんすごい。

github.com

http リクエストを投げる際に特別処理がいらない

他の言語では http リクエストを投げるためには、appengine 専用の特殊な transport を指定する必要があった。

Issuing HTTP(S) Requests  |  App Engine standard environment for Go  |  Google Cloud

Node.js では特にこれに気を使う必要なくて、普段の Node.js 使い方でリクエスト飛ばせる!すごい!

gcloud app deploy で普通にデプロイできる

GAE/Go では、vendor/ を使うと gcloud app deploy コマンドでデプロイできない不具合 があったが、Node.js では特にそういう不具合はない。Go はすごい好きなんだけど、これだけはきつかったので、うれしい