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

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

การสนับสนุนเฟรมเวิร์ก

โฮสติ้งแอปมีบิลด์ที่ไม่ต้องกำหนดค่าและรองรับเว็บแอป พัฒนาขึ้นในกรอบการทำงานเหล่านี้:

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

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

อะแดปเตอร์เฟรมเวิร์กการโฮสต์แอปมีบทบาทสำคัญ 2 บทบาทดังนี้

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

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

วิธีการทำงานของการผสานรวมที่เก็บแอปโฮสติ้ง

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

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

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

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

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

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

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

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

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

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

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

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

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

ตัวอย่างโฮสติ้งของแอปมีข้อจำกัดที่ทราบบางประการ ดังนี้

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