Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Cloud Functions for Firebase
k2wanko
June 23, 2017
Technology
1
240
Cloud Functions for Firebase
https://nikkei.connpass.com/event/58121/
k2wanko
June 23, 2017
Tweet
Share
More Decks by k2wanko
See All by k2wanko
Sales AI Cloud "ailead" TSConfig Strictly Adopted / セールスAIクラウド「ailead」の TSConfig厳格化対応した話 /
k2wanko
1
490
Google Analytics for Firebaseを 使うときに把握しておきたいこと / Keep in mind when using Google Analytics for Firebase
k2wanko
2
390
パスワードのない未来のための Firebaseで実装するFIDO2 / FIDO2 actualized by Firebase for the password-less future
k2wanko
4
1.4k
Firebase Auth& Performance Monitoring
k2wanko
0
240
What's New Firebase 2019 Q1 #FJUG #io19jp
k2wanko
5
2.1k
Firebase for Grow
k2wanko
5
600
gosecを試してみた話 / try gosec
k2wanko
1
1.5k
最近のFirebase / Recent Firebase
k2wanko
4
1.3k
Firebase Japan User Group Introduction 2018 #FJUG
k2wanko
0
490
Other Decks in Technology
See All in Technology
機械学習システムアーキテクチャ入門 #1
asei
3
1.2k
JUnit5.7, 5.8の新機能紹介 #jjug_ccc #jjug_ccc_b / junit 5.7, 5.8 new features
kyonmm
PRO
2
420
UIKitのアップデート #WWDC22
akatsuki174
4
330
Build 2022で発表されたWindowsアプリ開発のあれこれ振り返ろう
hatsunea
1
380
HoloLens2とMetaQuest2どちらも動くWebXRアプリをBabylon.jsで作る
iwaken71
0
200
20220622_FinJAWS_あのときにAWSがあったらこうできた
taketakekaho
0
110
プログラマがオブジェクト指向しても幸せになれない理由
shirayanagiryuji
0
140
220628 「Google AppSheet」タスク管理アプリをライブ作成 吉積情報伊藤さん
comucal
PRO
0
220
サイボウズの アジャイル・クオリティ / Agile Quality at Cybozu
cybozuinsideout
PRO
4
2.3k
JAWS-UG re:Habilitaion 報告 / JAWS-UG OITA rehabilitation
hiranofumio
0
130
データをモデリングしていたら、組織をモデリングし始めた話 / engineers-in-carta-vol3-data-engineer
pei0804
4
3.3k
Introduction to MLOps
asei
1
260
Featured
See All Featured
Code Review Best Practice
trishagee
43
9.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Atom: Resistance is Futile
akmur
255
20k
Building Your Own Lightsaber
phodgson
94
4.6k
Documentation Writing (for coders)
carmenhchung
48
2.6k
Web development in the modern age
philhawksworth
197
9.3k
Product Roadmaps are Hard
iamctodd
34
6.5k
Ruby is Unlike a Banana
tanoku
91
9.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
238
11k
Clear Off the Table
cherdarchuk
79
280k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Transcript
Cloud Functions on Firebase Hosting @k2wanko
Profile コキチーズ Twitter, GitHubはk2wanko Qiitaはkoki_cheese Firebase エンジョイ勢 お仕事はセキュリティエンジニア
Cloud Functions
Cloud Functions - Event駆動のPaaS - HTTP,PubSub,Cloud StorageのEventを受け取って実行される - Beta -
Node.jsをサポート - Goサポートも開発中(?) https://github.com/GoogleCloudPlatform/cloud-functions-go
Cloud Functions for Firebase
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
Firebase Hosting
Firebase Hosting - 静的ファイルを配信できるサービス - 設定でSingle Page Application用のrewriteなどもできる - HTTP2対応
- Link headerを付けることでServer Pushも可能 - 高速なCDNがついてる - 独自ドメインを登録するだけで無料で証明書を発行してくれる <- 最高
Cloud Functions on Hosting
Cloud Functions on Hosting - Hostingで返すコンテンツを Cloud FunctionsのHTTPトリガーで動的に生成できる
つまりどういうことか?
HostingでServer Side Renderingができる!!
SSRの必要性 については次の記事を参考にしてください http://www.publickey1.jp/blog/17/server_side_renderingserver_side_rendering_ng- japan_2017.html 要約 - SEOのために - Performanceのために 課題
- 現状Node.jsでしかSSRできない - SSRの負荷はコストが高い - Node.jsなのでサーバ台数を増やさなければならない
過去の挑戦 - GAE/Goでやろうとした。 - 無料で抑えるには当時はGAE/Goが最適と判断 - GoでNode.jsのAPIを色々頑張らないといけないので辛すぎる - http://qiita.com/koki_cheese/items/13426921f0b5861725e5
Cloud Functions を使うと - 現状Node.jsでしかSSRできない - FunctionsはNode.jsが使える - SSRの負荷はコストが高い -
Vue.jsを使えばブロッキングしないので CPUを効率的に使える - Node.jsなのでサーバ台数を増やさなければならない - Functionsはスケールする(あなたの予算の限り...)
DEMO https://goo.gl/SiwKzo
Tips
リアルタイムデータベースの セキュリティルール辛い
Firebase Bolt使いましょう - セキュリティルールを記述するための言語 - TypeScriptで書かれている - コメントが書ける - コンパイルするとJSONを吐き出す
- https://github.com/firebase/bolt
CDNのコンテンツは いつ配信されるのか?
CDNについて キャッシュを返すかどうかは次の項目が一致するかどうかを見る - Hostname - Path - Query - Varyで指定されたHeaderの値
Varyの初期値はAccept-Encoding, Authorization, Cookieがセットされているので 一般的なユーザー識別の方法を取っていれば 別のユーザーにコンテンツをCDNが配信してしまうということは起きにくい
Enjoy Function!
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