ทำความเข้าใจโฮสติ้งของแอปและวิธีการทำงาน

App Hosting จัดการชุดงานที่ซับซ้อนในเบื้องหลังเพื่อลดความซับซ้อนในการติดตั้งใช้งานแอป หน้านี้อธิบายส่วนสําคัญของขั้นตอนงานดังกล่าว โดยให้ข้อมูลเกี่ยวกับจุดที่คุณอาจต้องการปรับแต่งขั้นตอน ทั้งนี้ขึ้นอยู่กับความต้องการของแอป

การผสานรวมเฟรมเวิร์ก

App Hosting รองรับการสร้างและทำให้ใช้งานได้โดยกำหนดค่าไว้ล่วงหน้าสำหรับเว็บแอปที่พัฒนาในเฟรมเวิร์กต่อไปนี้

  • Next.js 13 ขึ้นไป
  • Angular 17.2 ขึ้นไป

App Hosting จะระบุเฟรมเวิร์กที่คุณใช้โดยตรวจสอบไฟล์ package-lock.json หรือไฟล์ล็อกอื่นๆ ในที่เก็บข้อมูล หากคุณพยายามที่จะติดตั้งใช้งานแอป Node.js ที่ไม่มีไฟล์ล็อก App Hosting จะสร้างและเรียกใช้แอปไม่สำเร็จ คุณสามารถสร้าง package-lock.json ได้โดยการรัน npm install ในไดเรกทอรีรูท

อะแดปเตอร์เฟรมเวิร์ก

App Hosting อะแดปเตอร์เฟรมเวิร์กมีบทบาทสำคัญ 2 อย่าง ได้แก่

  1. โดยจะแยกวิเคราะห์ซอร์สโค้ดและไฟล์กำหนดค่าเฉพาะเฟรมเวิร์ก (เช่น next.config.js) และสร้างกลุ่มเอาต์พุตที่โครงสร้างพื้นฐานโฮสติ้งแอปที่เหลือสามารถประมวลผลได้
  2. โดยจะเรียกใช้คําสั่งบิลด์ของแอปเพื่อสร้างชิ้นงานแบบคงที่และสร้างแอปเวอร์ชันที่เพิ่มประสิทธิภาพแล้วสําหรับเวอร์ชันที่ใช้งานจริง

ตัวแปลงเฟรมเวิร์กจะสร้างแอป Node.js ด้วย npm run build ซึ่งทำงานได้ดีที่สุดกับสคริปต์บิลด์เริ่มต้นของแต่ละเฟรมเวิร์ก ได้แก่ next build สำหรับ Next.js และ ng build สำหรับ Angular App Hosting จะพยายามสร้างด้วยคำสั่งบิลด์ที่กำหนดเอง แต่ไม่รับประกันว่าจะสำเร็จ

แหล่งที่มาสำหรับอะแดปเตอร์ Next.js และ Angular มีอยู่ใน firebase-framework-tools

เฟรมเวิร์กอื่นๆ

นอกจาก Nextjs และ Angular แล้ว การโฮสต์แอปยังรองรับเฟรมเวิร์กเว็บที่สามารถสร้างเอาต์พุตจากบิลด์ที่ตรงกับข้อกำหนดของกลุ่มเอาต์พุตของเรา ผู้เขียนเฟรมเวิร์กสามารถใช้ข้อกำหนดของกลุ่มเอาต์พุตเพื่อให้มั่นใจว่า App Hosting รองรับเฟรมเวิร์กของตน

หากต้องการให้ระบบรองรับเฟรมเวิร์กเพิ่มเติม คุณสามารถสร้างอะแดปเตอร์หรือติดต่อผู้ดูแลเฟรมเวิร์กเพื่อแปลงเอาต์พุตของบิลด์เป็นรูปแบบ App Hosting อะแดปเตอร์ Nextjs และ Angular เป็นตัวอย่างที่ดีในการอ้างอิงสำหรับทุกคนที่สร้างอะแดปเตอร์

ดูเฟรมเวิร์กที่รองรับได้ใน Firebase Open Source

วิธีการทํางานของการผสานรวมที่เก็บข้อมูล App Hosting

การเชื่อมต่อที่สําคัญระหว่างที่เก็บ GitHub กับแบ็กเอนด์ App Hosting จะจัดการโดย Developer Connect ซึ่งเป็นแพลตฟอร์มการเชื่อมต่อของ Google Cloud สําหรับเครื่องมือ DevOps ภายนอก ในระหว่างการสร้างแบ็กเอนด์ App Hosting เวิร์กโฟลว์ UI ของ Developer Connect จะแนะนำคุณในการติดตั้งแอป Firebase GitHub ขั้นตอนสำคัญในกระบวนการนี้มีดังนี้

  1. คุณให้สิทธิ์ Developer Connect บทบาทผู้ดูแลระบบ Secret Manager ซึ่งจะช่วยให้ระบบจัดเก็บข้อมูลเข้าสู่ระบบอย่างปลอดภัยเป็น "ข้อมูลลับ" ใน Secret Manager ของ Cloud
  2. คุณให้สิทธิ์แอป Firebase GitHub เข้าถึงที่เก็บ GitHub
  3. Developer Connect จะจัดเก็บโทเค็นการให้สิทธิ์ GitHub โดยเฉพาะในที่เก็บเครื่องมือจัดการข้อมูลลับของโปรเจ็กต์ โปรดอย่าแก้ไขหรือลบโทเค็นนี้

นอกจากนี้ App Hosting ยังผสานรวมกับ GitHub Checks API เพื่อตรวจสอบการเปิดตัวด้วย การตรวจสอบนี้ช่วยให้คุณดูสถานะของการเปิดตัวใน GitHub และแก้ไขข้อบกพร่องในกระบวนการติดตั้งใช้งานได้ในกรณีที่มีข้อผิดพลาด

การผสานรวมกับ Firebase และบริการอื่นๆ ของ Google

App Hosting จะสร้างทั้งสภาพแวดล้อมการบิลด์และรันไทม์เพื่อให้คุณเริ่มต้น Firebase Admin SDK ด้วยข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน Google ได้ วิธีนี้จะช่วยให้แบ็กเอนด์สื่อสารกับผลิตภัณฑ์อื่นๆ ของ Firebase ได้ทั้งในช่วงที่สร้างและติดตั้งใช้งาน

สถานที่ตั้ง App Hosting แห่ง

App Hosting การสร้างจะสร้างทรัพยากรแบ็กเอนด์ในตำแหน่งที่เฉพาะเจาะจง ความยืดหยุ่นนี้ในตำแหน่งของเว็บแอปมีข้อดีหลักๆ ดังนี้

  • ปรับปรุงประสิทธิภาพและลดเวลาในการตอบสนองโดยนำข้อมูลมาไว้ใกล้ผู้ใช้มากขึ้นตามภูมิศาสตร์
  • ปัญหาร้ายแรงที่เกิดขึ้นกับ App Hosting ในภูมิภาคหนึ่งจะไม่ส่งผลต่อเว็บแอปที่ติดตั้งใช้งานในภูมิภาคอื่นๆ

คุณเลือกภูมิภาคใดก็ได้ต่อไปนี้เมื่อสร้างแบ็กเอนด์ App Hosting จากคอนโซลหรือ Firebase CLI

  • us-central1 (ไอโอวา)
  • asia-east1 (ไต้หวัน)
  • europe-west4 (เนเธอร์แลนด์)

บัญชีบริการแบ็กเอนด์ App Hosting

ในระหว่างการบิลด์และรันไทม์ แบ็กเอนด์ App Hosting จะตรวจสอบสิทธิ์กับบริการอื่นๆ ของ Google ด้วยบัญชีบริการ ระบบจะสร้างบัญชีบริการเริ่มต้นเพื่อวัตถุประสงค์เหล่านี้เมื่อคุณเปิดใช้ App Hosting ในโปรเจ็กต์ Firebase เป็นครั้งแรก

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

บัญชีบริการนี้จะมีผลกับแบ็กเอนด์ทั้งหมดโดยค่าเริ่มต้น และมีชุดสิทธิ์ขั้นต่ำที่ให้คุณสร้าง เรียกใช้ และตรวจสอบแอปได้ นอกจากนี้ยังมีสิทธิ์ตรวจสอบสิทธิ์ SDK การดูแลระบบด้วยข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันเพื่อดําเนินการต่างๆ เช่น การโหลดข้อมูลจาก Cloud Firestore ดูบทบาท App Hosting ของ Firebase

หากแอปต้องโต้ตอบกับบริการเพิ่มเติมของ Google ขณะสร้างหรือจากแบ็กเอนด์ที่ทำงานอยู่ คุณสามารถปรับแต่งบัญชีบริการเริ่มต้นได้โดยการเพิ่มบทบาท เช่น หากแอปของคุณต้องใช้สิทธิ์สำหรับ Vertex AI คุณอาจต้องเพิ่ม roles/aiplatform.user หรือบทบาทที่เกี่ยวข้อง

คําศัพท์และคําจํากัดความสําคัญ

  • แบ็กเอนด์: ชุดทรัพยากรที่มีการจัดการซึ่ง App Hostingสร้างขึ้นเพื่อสร้างและเรียกใช้เว็บแอป
  • การเปิดตัว: แอปเวอร์ชันที่เผยแพร่ซึ่งลิงก์กับ Git Commit
  • สาขาที่ใช้งานอยู่: สาขาของที่เก็บ GitHub ที่นำไปใช้งานใน URL ที่ใช้งานอยู่ บ่อยครั้งที่เป็นสาขาที่ผสานสาขาฟีเจอร์หรือสาขาการพัฒนา

ปัญหาและข้อจำกัดที่ทราบ

ตัวอย่าง App Hosting มีข้อจำกัดที่ทราบอยู่บ้าง ดังนี้

  • ในบางกรณี App Hostingแบ็กเอนด์อาจแสดงข้อความ Intermittent connection error ที่ URL ของแอป การแก้ไขจะพร้อมใช้งานในรุ่นหลังจากนี้
  • มีการปรับส่วนหัว Cache-Control เพื่อจำกัดแคช CDN ไว้ที่ 60 วินาที ในอนาคตเมื่อ App Hosting สามารถล้างแคชได้อย่างรวดเร็วเมื่อมีการทำให้ใช้งานได้ เราจะยกเลิกการจำกัดนี้
  • การเพิ่มประสิทธิภาพรูปภาพจะดำเนินการใน Cloud Run โดยค่าเริ่มต้น และระบบจะไม่เก็บรูปภาพที่เพิ่มประสิทธิภาพไว้ เราขอแนะนำให้ปิดใช้การเพิ่มประสิทธิภาพรูปภาพหรือระบุโปรแกรมโหลดด้วยตนเองจนกว่าจะมีวิธีแก้ปัญหาที่ดีกว่า
  • ระบบจะแสดงไฟล์คงที่ที่ไม่ได้แคชจาก Cloud Run ในรุ่นที่ใหม่กว่า ระบบจะจัดเก็บและแสดงไฟล์เหล่านั้นจากต้นทาง App Hosting เพื่อประสิทธิภาพที่ดียิ่งขึ้น
  • App Hosting SKU อาจไม่แสดงในหน้าการใช้งานแบ็กเอนด์ในคอนโซลFirebase โดยจะพร้อมใช้งานในรุ่นหลังจากนี้
  • คอนโซล Firebase อาจแสดงข้อผิดพลาด "ไม่พบบิลด์และบิลด์ไม่ถูกต้อง" เป็นระยะๆ ในการสร้างแบ็กเอนด์
  • ปัจจุบันแบ็กเอนด์ทั้งหมดในโปรเจ็กต์เดียวกันใช้องค์กร/บัญชี GitHub เดียวกัน โดยสามารถเชื่อมต่อกับที่เก็บข้อมูลต่างๆ ภายใต้องค์กร/บัญชีนั้นได้ หากต้องการสร้างแบ็กเอนด์ที่เชื่อมต่อกับบัญชี GitHub บัญชีอื่น ให้ใส่ไว้ในโปรเจ็กต์แยกกัน
  • ระบบจะเรียกใช้มิดเดิลแวร์ การเปลี่ยนเส้นทาง และการเขียนใหม่ของ Next.js ใน Cloud Run หลัง CDN เนื่องจากคำสั่งเหล่านี้จะไม่ปกป้องการตอบกลับที่แคชไว้ โปรดตั้งค่าคำสั่งควบคุมที่เหมาะสมสำหรับเนื้อหาที่คุณแสดงผล