Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LT_Cloud_Functions.pdf

Masaki Iino
September 08, 2017

 LT_Cloud_Functions.pdf

社内LT用

Masaki Iino

September 08, 2017
Tweet

More Decks by Masaki Iino

Other Decks in Technology

Transcript

  1. Cloud Functions
    Masaki Iino

    View full-size slide

  2. Cloud Functions
    Cloud Functions
    β版
    βリリース時にFirebaseもサポートされた
    ぼちぼち、GAになるらしい

    View full-size slide

  3. Cloud Functions
    ● サーバレス
    ● イベント駆動
    ● ステートレス
    ● Node.js

    View full-size slide

  4. 料金体系

    View full-size slide

  5. 関数の種類
    ● HTTP Functions
    ○ HTTPSリクエストがトリガー
    ○ 同期実行
    ● Background Functions
    ○ Cloud Pub/Sub
    ○ Cloud Storage
    ○ 非同期実行

    View full-size slide

  6. HTTP Functions
    Hello World するならこう
    内部的にExpressを使用している
    exports.helloWorld = function helloWorld (req, res) {
    res.send('Hello World!');
    };

    View full-size slide

  7. HTTP Functions
    デプロイ方法
    アップロードするバケットとトリガーを指定
    バケットは先に作っておく必要あり
    $ gcloud beta functions deploy helloWorld \
    --stage-bucket functions-helloWorld \
    --trigger-http

    View full-size slide

  8. Background Functions
    Hello World するならこう
    最後にcallbackを呼ぶ
    exports.helloWorld = function helloWorld (event, callback) {
    callback();
    };

    View full-size slide

  9. Background Functions
    デプロイ方法
    アップロードするバケットとトリガーを指定
    $ gcloud beta functions deploy helloWorld \
    --stage-bucket functions-helloWorld \
    --trigger-bucket my-bucket
    $ gcloud beta functions deploy helloWorld \
    --stage-bucket functions-helloWorld \
    --trigger-topic my-topic

    View full-size slide

  10. パッケージ
    package.jsonを記述すれば、クラウド上でnpm installされる。
    "dependencies": {
    "request": "^2.81.0"
    },
    const request = require('request');
    exports.helloWorld = function helloWorld (req, res) {
    request('http://www.google.com', (error, response, body) => {
    res.send('Hello World!');
    }
    };

    View full-size slide

  11. ログ
    Stackdriver Loggingに出力される(console.logを使う)

    View full-size slide

  12. モニタリング
    呼び出し回数 / 実行時間 / メモリ使用量

    View full-size slide

  13. 開発環境
    公式のエミュレータがあります。(まだalpha

    View full-size slide