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

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 จะพยายามสร้างด้วยคำสั่งบิลด์ที่กำหนดเอง แต่ก็รับประกันความสําเร็จไม่ได้

วิธีการทํางานของการผสานรวมที่เก็บข้อมูล 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
  • Branch แบบสด: Branch ของที่เก็บ 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 เนื่องจากคำสั่งเหล่านี้จะไม่ปกป้องคําตอบที่แคชไว้ โปรดตั้งค่าคำสั่งควบคุมที่เหมาะสมสําหรับเนื้อหาที่คุณแสดงผล