ช่วงหยุด 3 วันที่ผ่านมา ที่บริษัทนัดกันมาเรียนรู้และลงมือทำสิ่งใหม่ ๆ
โดยพยายามที่จะพัฒนาระบบงานขึ้นมาแบบที่อยากได้
มีส่วนการทำงานดังนี้

  • Frontend เป็น web application พัฒนาด้วย Angular 8
  • Backend เป็น RESTFul API พัฒนาด้วยภาษา Go

ปกติการ deploy ระบบงานก็ใช้งาน Docker หรือ Kubernetes
แต่จากที่ทำมา ถ้าเอาไป deploy บน Cloud
พบว่าเสียค่าใช้จ่ายเยอะเหมือนกัน
มีระบบบางตัวต้องเสียเดือนเดือนละหลายพันบาทจนไปถึงหมื่นบาท !!

ดังนั้นในการพัฒนาระบบครั้งนี้
ต้องการที่จะลดค่าใช้จ่ายลงไปให้มากที่สุดหรือ 0 บาทไปเลย
โดยที่ไม่เปลี่ยนหรือกระทบการพัฒนามากนัก
มาเริ่มกันเลย

หนึ่งในแนวทางที่คิดไว้คือ

การใช้งาน Firebase Hosting และ Google Cloud Run เป็นดังนี้

  • Frontend ทำการ deploy บน Firebase Hosting
  • Backend ทำการ deploy บน Google Cloud Run

ป.ล.
เรื่องของ
Google Cloud Run เคยเขียนอธิบายไว้แล้ว

ก่อนที่จะใช้ความสามารถนี้ต้องเปลี่ยน price plan ของ Firebase ไปที่ไม่ free นะ
เพราะว่าการเชื่อมต่อกับ Google Cloud Run
มิเช่นนั้นจะ deploy ระบบงานไปยัง Firebase Hosting ได้
จากที่ไปดู price plan แล้วพบว่า การใช้งานของระบบใช้ไม่ถึงแน่ ๆ 
ดังนั้นไม่เสียเงินแน่นอน

ปัญหาที่ต้องแก้ไขก่อนคือ

การติดต่อสื่อสารระหว่าง Fronend กับ Backend
ซึ่งปกติใช้ reverse proxy มาช่วย โดยใช้งาน NGINX นั่นเอง
แต่เมื่อเปลี่ยนมาใช้ Firebase Hosting แล้ว
ก็พบว่า สามารถกำหนด rewrite ของ URL ในฝั่ง Firebase Hosting
เพื่อทำการ redirect ไปยัง service ของ Google Cloud Run ได้

แต่มีข้อจำกัดว่า service ที่ deploy บน Google Cloud Run

ต้องเป็น type=manage เท่านั้น
ยังไม่สนับสนุน GKE นะ

ทำการ config ในไฟล์ firebase.json ดังนี้

คำอธิบาย

  • ถ้าในฝั่ง frontend เรียกใช้งาน /api1 แล้ว จะทำการ redirect request ไปยัง service ใน Google Cloud Run 
  • URL ในฝั่งของ Google Cloud Run  จะเป็น /api1 เช่นกัน

เพียงเท่านี้ ก็ได้วิธีการที่ช่วยให้ deploy ระบบงานตามที่ต้องการได้
แถมค่าใช้จ่ายเริ่มที่ 0 บาทเท่านั้น
มาลองใช้งานกันดูครับ ไม่ยากเลย