どうも、こんにちは!
江嵜です!
今回は最近流行りのサーバーレスをサックリと体験していきますよ!
サーバーレスとは…?
「サーバーレスって何ですか?」というところについて、
詳しい話はよそへ譲るとして、さっくりお話すると
「サーバー管理を考えなくてもコードを実行できる環境を必要に応じて用意してくれるよー」
という話ですね。
サーバーのメンテナンスやトラフィックの増減を考えずとも、良しなにやってくれる、
そんな素敵なお話がサーバーレスなのです。
なんで Netlify を使うの?
サーバーレスといえば AWS Lambda ですよね!
サーバーレスの先駆け的存在です。
AWS Lambda 、直接使ってもいいのですが、使うまでにアカウント等々の設定が必要だったり、Web から呼び出すためには Amazon API Gateway という別のサービスを組み合わせて使う必要があったりと、構築にかかる時間が 爆速!
とまでは行きません。
Netlify は上手くそのあたりをうまく隠してくれていて、本当に爆速でコードを動かせてしまいます。
しかも Free プランなら無料で使えます!(2018/06/20 現在)
これは試してみるしかないですよね。
(ちなみに、 Netlify もウラでは AWS Lambda を動かしているみたいですよ)
必要なコードはこれだけ!
とりあえずサーバーレスを体験するために必要なコードはこれだけ!
ツリー構造
root ├ lambda │ └ test.js ├ netlify.toml └ package.json
test.js
exports.handler = function(event, context, callback) { callback(null, { statusCode: 200, body: "Hello, World!" }); };
netlify.toml
[build] command = "netlify-lambda build lambda" functions = "lambda/"
package.json
{ "name": "test", "version": "1.0.0", "description": "This is Netlify test!", "devDependencies": { "netlify-lambda": "^0.4.0" } }
たった 3 ファイルだけです!
お試しで Hello, World!
とだけ返す JavaScript test.js
を作成しました。
今回は、このファイルを実行させてみましょう。
github に適当なレポジトリを作成し、これを保存しておきます。
後は Netlify の設定!
コードを保存したら後は Netlify の設定だけですね!
URL は https://www.netlify.com/ です。
会員登録して、ログインしてみましょう。
New site from Git
ボタンから…
コードが保存されている git サービス、今回は GitHub を選んで…
先程作成したレポジトリを選択。
設定画面が出ますが、特にいじらずそのまま Deploy Site
ボタンを押すと…
もうデプロイが完了しました!
赤枠で囲ってある部分が作成したサイトの URL になります。
普通に HTML を開くのであればこの URL にそのまま飛ぶ流れですが、
今回は test.js
を実行させるのでしたね。
Netlify でサーバーレスの機能を動作させるには、
https://{作成されたドメイン}/.netlify/functions/{jsファイル名(拡張子抜き)}
へアクセスします。
すると…
Hello, World!
と表示されました!
しっかり実行できてますね!
(ちなみに記事公開時にはこのサイトは破棄しておくので、同じところにアクセスしても 404 Not Found になりますよ)
少しポチポチしただけで、コードが実行できる状態になってしまいましたね!
軽いコードの解説と注意点
これでおめでとう!で終わっても良かったのですが、簡単に内容の解説をしておきますね。
実施するコードの中身は AWS Lambda のお作法に従うこと!
test.js はこんな感じのコードでしたが、
exports.handler = function(event, context, callback) { callback(null, { statusCode: 200, body: "Hello, World!" }); };
「 exports.handler
ってなんやねん!」とお思いの方もいらっしゃるかもしれないですね。
この Netlify の機能はウラで AWS Lambda を使用してコードを実行しているため、
実行するコードは AWS Lambda のお作法に従う必要があります。
この辺(AWS Lambda のドキュメントの一部) とかを見て、 AWS Lambda で実行できるコードの形で書きましょう。
netlify.toml には準備用のコマンドを必ず入れておく!
netlify.toml はこんな感じでしたね。
[build] command = "netlify-lambda build lambda" functions = "lambda/"
functions
は、実行したい関数が格納されているディレクトリの相対パスですね。
今回は lambda
ディレクトリへ test.js
を格納しているので、こんな感じ。
一方、 command
はコードを実行するための前準備のコマンドを入れておくところです。
netlify-lambda build {ディレクトリ名}
を実行することで、
必要なライブラリの結合などをよしなにやってくれます。
逆に言うと、ライブラリなどを使用する関数を作ったとき、このコマンドを実行していないと
ライブラリが見つからないエラーが発生してしまうので、必ず実行しておきましょう。
実行可能回数・時間制限に注意!
Netlify のこの機能には、フリープランで
- 月の実行回数 125,000 回まで
- 月の実行時間 100 時間まで
という制限があります。
フツーに使っていたらあまり気にする必要はないと思いますが(1 日平均 4000 回以上実行できます!)
なんかの拍子にバズったりすると終わるかもしれない…という事を覚えておくといいでしょう。
私も「この前作ったのがバズって枠使い切った…」とか言ってみたいものですね!
終わりに
今回ご紹介した Netlify でのサーバーレス。いかがでしたでしょうか。
heroku といいこれといい、とっても簡単にサービスが作れるようになりましたよね。
ぜひ、こういったサービスを活用して楽しいサービスを作ってみてくださいね!