Slide 1

Slide 1 text

@Jirawatee Google Developer Expert in Firebase Say Hello to Cloud Functions for Firebase 2nd Gen

Slide 2

Slide 2 text

“Write and Run backend code in response to events triggered by Firebase features and HTTPS requests” Cloud Functions for Firebase

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Realtime Database Trigger

Slide 5

Slide 5 text

Events exports.make Uppercase = functions.da tabase()... exports.mode rate = functions.da tabase()... exports.send Email = functions.da tabase()... Authentication Firestore Realtime Database Storage Extensions App Distribution Crashlytics Performance Monitoring Test Lab Remote Config Analytics Firebase Triggers

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

HTTP Request

Slide 8

Slide 8 text

Cloud Scheduler const { onSchedule } = require("firebase-functions/v2/scheduler"); exports.cronjob = onSchedule("every day 10:00", async (event) => { // Send notification }); Schedule Functions

Slide 9

Slide 9 text

2nd Generation GA

Slide 10

Slide 10 text

Cloud Build Cloud Run Eventarc Cloud Functions 2nd Generation

Slide 11

Slide 11 text

1st Gen: One request per instance 2nd Gen: Many requests per instance Concurrency

Slide 12

Slide 12 text

150ms 150ms 150ms 150ms 150ms 150ms 200ms 200ms 200ms 300ms 60ms 60ms 60ms 60ms

Slide 13

Slide 13 text

Granular control and optimize performance 32GB New Instance Size

Slide 14

Slide 14 text

● Up to 60 mins for HTTP triggered functions ● Up to 9 mins for event triggered functions Request Timeout

Slide 15

Slide 15 text

Language Support Public Preview

Slide 16

Slide 16 text

Firebase Alert Events Crashlytics Performance Monitoring App Distribution New Events

Slide 17

Slide 17 text

Firebase Crashlytics const { onNewFatalIssuePublished } = require("firebase-functions/v2/alerts/crashlytics"); exports.sendSmsAlert = onNewFatalIssuePublished((event) => { // Send SMS }); New Events

Slide 18

Slide 18 text

Events Custom Event

Slide 19

Slide 19 text

Custom Event Events

Slide 20

Slide 20 text

20 + Firebase Authentication Cloud Identity New Events

Slide 21

Slide 21 text

import {beforeUserCreated} from "firebase-functions/v2/identity"; export const blockauth = beforeUserCreated((event) => { }); const user = event.data; // Ensure only google.com emails can log into the changelog app if (!user?.email?.includes('@google.com')) { throw new HttpsError( "permission-denied", "Only @google.com are allowed to register."); } Blocking Functions

Slide 22

Slide 22 text

Task Queue Functions Cloud Tasks

Slide 23

Slide 23 text

Upgrade your code to 2nd Gen Coding Style

Slide 24

Slide 24 text

Both APIs are in the same SDK const functions = require("firebase-functions/v1"); const { onRequest } = require("firebase-functions/v2/https"); exports.f1 = functions.https.onRequest((req, res) => { res.send("Hello from Firebase!"); }); exports.f2 = onRequest((req, res) => { res.send("Hello from Firebase!"); });

Slide 25

Slide 25 text

Runtime options const functions = require("firebase-functions/v1"); const { onRequest } = require("firebase-functions/v2/https"); const cors = require("cors")({ origin: true }); exports.f1 = functions.runWith({ memory: "1GB" }).https.onRequest((req, res) => { cors(req, res, () => { res.send("Hello from Firebase!"); }); }); exports.f2 = onRequest({ memory: "1GB", cors: true }, (req, res) => { res.send("Hello from Firebase!"); });

Slide 26

Slide 26 text

Runtime options const { onRequest } = require("firebase-functions/v2/https"); const { setGlobalOptions } = require("firebase-functions/v2"); setGlobalOptions({ region: "asia-southeast1", memory: "1GB", concurrency: 40 }); export const api = onRequest(apiHandler); export const content = onRequest(contentHandler);

Slide 27

Slide 27 text

Loading environment variables specified in a .env file to your application runtime Securely store API keys, passwords, certificates, and other sensitive data. Environment Variables Cloud Secret Manager Strongly-typed environment configuration with parameters that are validated at deploy time Parameterized Config Environment Configuration New

Slide 28

Slide 28 text

Parameterized Configuration const { onRequest } = require("firebase-functions/v2/https"); const { defineString, defineInt, defineSecret } = require("firebase-functions/params"); const welcomeMessage = defineString("WELCOME_MESSAGE"); const concurrencyConfig = defineInt("CONCURRENCY", { default: 80 }); const apiKey = defineSecret("API_KEY"); exports.f2 = onRequest({secrets: [apiKey], concurrency: concurrencyConfig}, (req, res) => { const sampleApiKey = apiKey.value(); res.send(`${welcomeMessage.value()}! I am a function.`); });

Slide 29

Slide 29 text

Emulator Suite Auth Firestore RTDB Storage Hosting Extensions

Slide 30

Slide 30 text

Demo

Slide 31

Slide 31 text

Enhancements in Cloud Functions 2nd Gen ⚡Concurrency (Up to 1000 concurrent requests per instance) ☁ Larger in memory, and compute intensive (Up to 32GiB RAM with 8 vCPUs) 󰞵 Python support 🚨 New events (Firebase Alerts, Auth Blocking, and Firebase Extensions) 🌐 Secure your callable and HTTP functions with a new CORS ✔ Task Queue functions ⏳ Long-running in HTTP Functions (Up to 1 hour timeout) 🖥 Modern JavaScript (config functions globally, options objects, and modular imports) Recap

Slide 32

Slide 32 text

Thank You @Jirawatee Google Developer Expert in Firebase https://firebase.google.com/docs/functions https://youtu.be/77sMhsLB2qg https://youtu.be/EIA58FKrA8Y Resources