Skip to main content

รู้จักกับ Cloud function

e-commerce-checkout-cloud-function สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

Step ต่อไป

เราจะมาเริ่มทำ placeorder กันจริงๆด้วยการเพิ่ม Backend เข้าสู่ Easy commerce เข้าไป

intro-02

Cloud function คืออะไร ?

doc ต้นฉบับ: https://firebase.google.com/docs/functions

Cloud functions for Firebase (จากนี้ขอเรียกสั้นๆว่า Cloud functions) คือ service serverless framework ที่ Firebase ได้เตรียมไว้ให้เราสามารถพัฒนาและมี Backend server เป็นของตัวเองได้โดยที่ไม่จำเป็นต้อง setup server ขึ้นมาเอง (ตาม concept ของ serverless)

  • โดยจะ support ทั้งการทำ HTTPS requests (สามารถทำอย่าง Restful API ได้)
  • Event Trigger ได้ (ตรวจจับการ change ของ service Firebase เช่น Firestore, Realtime database)
  • support ทั้ง Typescript และ Javascript
  • run อยู่บน Google Cloud infrastructure และสามารถจัดการ environment แยกกันได้ (เราจะพูดกันในหัวข้อของการขึ้นงานอีกที)

ข้อดีใหญ่ๆคือ

  • Firebase SDK support เรื่องนี้รวมถึงมี emulator ที่สามารถ run cloud functions serverless ขึ้นมาได้ทันที
  • Zero maintenance = ไม่ต้องกังวลเรื่องการ deploy version ใหม่, scale, credential, configuration (Firebase จัดการให้หมดทุกอย่างแล้ว)
  • มันคือ Backend Service = ดังนั้นอะไรก็ตามที่ต้องการ run ด้านหลัง (ที่ไม่ได้เป็นการต่อ Service ตรงๆแล้วทำได้เหมือนกับหัวข้อก่อนหน้านี้) Cloud functions จะตอบโจทย์นี้

setup Cloud functions

Cloud functions นั้นเราได้ทำการลงไว้ตั้งแต่ตอนลง firebase init เป็นที่เรียบร้อย เราจะเจอว่ามี folder functions อยู่อันหนึ่ง

  • ดังนั้นไม่ต้อง setup อะไรเพิ่มเติมแล้ว (ใครที่ยังไม่เจอ ให้ย้อนกลับไปดูตอน setup project เราจะมีการเลือก function เอาไว้)

intro-03

เราจะลองเพิ่ม http request กันว่าสามารถยิงได้หรือไม่ โดยการเพิ่มที่ functions/index.js

โดยเพิ่ม sayHello ตามเอกสารของ Cloud function กัน

Ref: https://firebase.google.com/docs/functions/http-events?gen=2nd

const { onRequest } = require('firebase-functions/v2/https')

exports.sayHello = onRequest(
(req, res) => {
res.status(200).json({
message: 'Hello world!'
})
}
)

ถ้าสามารถได้ผลลัพธ์แบบนี้ออกมาถือว่าถูกต้องแล้ว

intro-01

เราจะทำอะไรกันบ้าง

  1. API Placeorder ใน Cloud function (โดยเราจะใช้ประยุกต์ใช้กับ router ใน express)
  2. Setup proxy เพื่อให้ยิงไปยิง API Cloud function ด้วย host เดียวกัน
  3. เชื่อมกับ Frontend หน้า checkout
  4. แสดงข้อมูล checkout หน้า Success และเพิ่ม security rule order