Save 37% off PRO during our Black Friday Sale! »

Cloud Functions for Firebase

1b177b37d966f573b1df5d7218a5f560?s=47 k2wanko
June 23, 2017

Cloud Functions for Firebase

1b177b37d966f573b1df5d7218a5f560?s=128

k2wanko

June 23, 2017
Tweet

Transcript

  1. Cloud Functions on Firebase Hosting @k2wanko

  2. Profile コキチーズ Twitter, GitHubはk2wanko Qiitaはkoki_cheese Firebase エンジョイ勢 お仕事はセキュリティエンジニア

  3. Cloud Functions

  4. Cloud Functions - Event駆動のPaaS - HTTP,PubSub,Cloud StorageのEventを受け取って実行される - Beta -

    Node.jsをサポート - Goサポートも開発中(?) https://github.com/GoogleCloudPlatform/cloud-functions-go
  5. Cloud Functions for Firebase

  6. Cloud Functions for Firebase - Cloud Functions受け取れるEventにFirebaseのイベントも追加したもの - Realtime Database,

    Analytics, Auth, Storage のイベントを受け取れる - Eventの追加をコードベースで追加できる どういうことができるのか? - RealtimeDBに書き込まれたイベントでメッセージの翻訳をすることができる - Storageに保存されたイベントで画像をwebpに変換する - HTTPトリガーでFirebase Custom Authのbackendにできる - ユーザが削除されたイベントで関連データを削除する - etc examples: https://github.com/firebase/functions-samples
  7. Firebase Hosting

  8. Firebase Hosting - 静的ファイルを配信できるサービス - 設定でSingle Page Application用のrewriteなどもできる - HTTP2対応

    - Link headerを付けることでServer Pushも可能 - 高速なCDNがついてる - 独自ドメインを登録するだけで無料で証明書を発行してくれる <- 最高
  9. Cloud Functions on Hosting

  10. Cloud Functions on Hosting - Hostingで返すコンテンツを Cloud FunctionsのHTTPトリガーで動的に生成できる

  11. つまりどういうことか?

  12. HostingでServer Side Renderingができる!!

  13. SSRの必要性 については次の記事を参考にしてください http://www.publickey1.jp/blog/17/server_side_renderingserver_side_rendering_ng- japan_2017.html 要約 - SEOのために - Performanceのために 課題

    - 現状Node.jsでしかSSRできない - SSRの負荷はコストが高い - Node.jsなのでサーバ台数を増やさなければならない
  14. 過去の挑戦 - GAE/Goでやろうとした。 - 無料で抑えるには当時はGAE/Goが最適と判断 - GoでNode.jsのAPIを色々頑張らないといけないので辛すぎる - http://qiita.com/koki_cheese/items/13426921f0b5861725e5

  15. Cloud Functions を使うと - 現状Node.jsでしかSSRできない - FunctionsはNode.jsが使える - SSRの負荷はコストが高い -

    Vue.jsを使えばブロッキングしないので CPUを効率的に使える - Node.jsなのでサーバ台数を増やさなければならない - Functionsはスケールする(あなたの予算の限り...)
  16. DEMO https://goo.gl/SiwKzo

  17. Tips

  18. リアルタイムデータベースの セキュリティルール辛い

  19. Firebase Bolt使いましょう - セキュリティルールを記述するための言語 - TypeScriptで書かれている - コメントが書ける - コンパイルするとJSONを吐き出す

    - https://github.com/firebase/bolt
  20. CDNのコンテンツは いつ配信されるのか?

  21. CDNについて キャッシュを返すかどうかは次の項目が一致するかどうかを見る - Hostname - Path - Query - Varyで指定されたHeaderの値

    Varyの初期値はAccept-Encoding, Authorization, Cookieがセットされているので 一般的なユーザー識別の方法を取っていれば 別のユーザーにコンテンツをCDNが配信してしまうということは起きにくい
  22. Enjoy Function!

  23. Reference - https://github.com/k2wanko/vue-hackernews-2.0/tree/firebase-hosting - https://firebase.google.com/docs/ - https://firebase.google.com/docs/functions - https://firebase.google.com/docs/hosting/functions