Tìm hiểu về tính năng Lưu trữ ứng dụng và cách tính năng này hoạt động

App Hosting xử lý một loạt tác vụ phức tạp ở chế độ nền để đơn giản hoá việc triển khai ứng dụng. Trang này mô tả các phần chính của luồng tác vụ đó, cung cấp thông tin về những điểm bạn có thể muốn tuỳ chỉnh luồng tuỳ thuộc vào nhu cầu của ứng dụng.

Tích hợp khung

App Hosting cung cấp tính năng hỗ trợ tạo bản dựng và triển khai được định cấu hình sẵn cho các ứng dụng Web được phát triển trong các khung sau:

  • Next.js 13 trở lên
  • Angular 17.2 trở lên

App Hosting xác định khung bạn đang sử dụng bằng cách kiểm tra tệp package-lock.json hoặc tệp khoá khác trong kho lưu trữ. Nếu bạn cố gắng triển khai một ứng dụng Node.js bị thiếu tệp khoá, thì App Hosting sẽ không tạo và chạy được ứng dụng. Bạn có thể tạo package-lock.json bằng cách chạy npm install trong thư mục gốc.

Bộ chuyển đổi khung

Bộ chuyển đổi khung App Hosting có hai vai trò chính:

  1. Các công cụ này phân tích cú pháp mã nguồn và mọi tệp cấu hình dành riêng cho khung (chẳng hạn như next.config.js) và tạo một gói đầu ra mà phần còn lại của cơ sở hạ tầng Lưu trữ ứng dụng có thể xử lý.
  2. Các công cụ này chạy lệnh bản dựng của ứng dụng để tạo các thành phần tĩnh và tạo phiên bản ứng dụng được tối ưu hoá để phát hành công khai.

Bộ chuyển đổi khung tạo ứng dụng Node.js bằng npm run build, hoạt động tốt nhất với các tập lệnh bản dựng mặc định cho từng khung: next build cho Next.js và ng build cho Angular. App Hosting sẽ thử các bản dựng bằng lệnh bản dựng tuỳ chỉnh, nhưng không thể đảm bảo chắc chắn rằng sẽ thành công.

Bạn có thể tìm thấy nguồn cho các bộ chuyển đổi Next.js và Angular trong firebase-framework-tools.

Các khung khác

Ngoài Nextjs và Angular, dịch vụ Lưu trữ ứng dụng cũng hỗ trợ mọi khung web có thể cung cấp đầu ra bản dựng khớp với thông số kỹ thuật của gói đầu ra. Tác giả khung có thể tận dụng thông số kỹ thuật gói đầu ra để đảm bảo khung của họ được tính năng Lưu trữ ứng dụng hỗ trợ.

Nếu muốn hỗ trợ thêm các khung, bạn có thể tạo một trình chuyển đổi hoặc liên hệ với trình bảo trì của khung để chuyển đổi đầu ra bản dựng thành định dạng lưu trữ ứng dụng. Bộ chuyển đổi NextjsAngular là những ví dụ tham khảo hữu ích cho bất kỳ ai tạo bộ chuyển đổi.

Bạn có thể tìm thấy các khung được hỗ trợ trên Firebase Open Source.

Cách hoạt động của tính năng tích hợp kho lưu trữ App Hosting

Mối liên kết quan trọng giữa kho lưu trữ GitHub và phần phụ trợ App Hosting được xử lý bằng Developer Connect, nền tảng kết nối của Google Cloud dành cho các công cụ DevOps bên ngoài. Trong quá trình tạo phần phụ trợ App Hosting, quy trình làm việc trên giao diện người dùng của Developer Connect sẽ hướng dẫn bạn cài đặt ứng dụng GitHub Firebase. Các bước chính trong quy trình này là:

  1. Bạn cấp cho Developer Connect vai trò Quản trị viên của Trình quản lý bí mật. Điều này cho phép hệ thống lưu trữ thông tin xác thực một cách an toàn dưới dạng "bí mật" trong Trình quản lý bí mật trên đám mây.
  2. Bạn cho phép ứng dụng GitHub của Firebase truy cập vào kho lưu trữ GitHub của bạn.
  3. Developer Connect lưu trữ một mã thông báo uỷ quyền GitHub chuyên dụng trong kho lưu trữ trình quản lý bí mật của dự án; đừng sửa đổi hoặc xoá mã thông báo này.

Ngoài ra, App Hosting tích hợp với API kiểm tra GitHub để cung cấp tính năng kiểm tra các bản phát hành. Bước kiểm tra này cho phép bạn xem trạng thái triển khai trong GitHub và gỡ lỗi quá trình triển khai trong trường hợp có lỗi.

Tích hợp với Firebase và các dịch vụ khác của Google

App Hosting thiết lập cả môi trường bản dựng và môi trường thời gian chạy để bạn có thể khởi chạy SDK Quản trị Firebase bằng Thông tin xác thực mặc định của ứng dụng Google. Bằng cách đó, phần phụ trợ của bạn có thể giao tiếp với các sản phẩm Firebase khác trong cả quá trình xây dựng và triển khai.

App Hosting địa điểm

Quá trình triển khai App Hosting sẽ tạo tài nguyên phụ trợ tại một vị trí cụ thể. Tính linh hoạt này trong vị trí của ứng dụng web mang lại các lợi thế chính:

  • Cải thiện hiệu suất và giảm độ trễ bằng cách đưa dữ liệu về vị trí gần người dùng hơn.
  • Lỗi nghiêm trọng đối với App Hosting ở một khu vực sẽ không ảnh hưởng đến các ứng dụng web được triển khai ở các khu vực khác.

Bạn có thể chọn bất kỳ khu vực nào trong số này khi tạo phần phụ trợ App Hosting từ bảng điều khiển hoặc CLI Firebase:

  • us-central1 (Iowa)
  • asia-east1 (Đài Loan)
  • europe-west4 (Hà Lan)

Tài khoản dịch vụ phụ trợ App Hosting

Trong quá trình xây dựng và trong thời gian chạy, phần phụ trợ App Hosting sẽ xác thực với các dịch vụ khác của Google bằng một tài khoản dịch vụ. Tài khoản dịch vụ mặc định cho các mục đích này được tạo trong lần đầu tiên bạn bật App Hosting trong dự án Firebase:

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

Theo mặc định, tài khoản dịch vụ này áp dụng cho tất cả phần phụ trợ và có một nhóm quyền tối thiểu để cho phép bạn tạo, chạy và giám sát ứng dụng. Tài khoản này cũng có quyền xác thực SDK quản trị bằng Thông tin xác thực mặc định của ứng dụng để thực hiện các thao tác như tải dữ liệu từ Cloud Firestore. Xem các vai trò App Hosting của Firebase.

Nếu ứng dụng của bạn cần tương tác với các dịch vụ bổ sung của Google tại thời điểm tạo bản dựng hoặc từ một phần phụ trợ đang chạy, bạn có thể tuỳ chỉnh tài khoản dịch vụ mặc định bằng cách thêm vai trò. Ví dụ: nếu ứng dụng của bạn yêu cầu quyền cho Vertex AI, bạn có thể cần thêm roles/aiplatform.user hoặc một số vai trò liên quan.

Các thuật ngữ và định nghĩa chính

  • Phần phụ trợ: Tập hợp các tài nguyên được quản lý mà App Hosting tạo để tạo và chạy ứng dụng web.
  • Bản phát hành: Một phiên bản cụ thể của ứng dụng đang hoạt động, được liên kết với một thay đổi trong git.
  • Nhánh trực tiếp: Nhánh của kho lưu trữ GitHub được triển khai đến URL trực tiếp. Thường thì đây là nhánh mà các nhánh tính năng hoặc nhánh phát triển được hợp nhất.

Các vấn đề và hạn chế đã biết

Bản xem trước App Hosting có một số hạn chế đã biết:

  • Trong một số trường hợp, phần phụ trợ App Hosting có thể trả về thông báo Intermittent connection error tại URL của ứng dụng. Chúng tôi sẽ khắc phục sự cố này trong bản phát hành sau này.
  • Các tiêu đề Cache-Control được sửa đổi để giới hạn bộ nhớ đệm CDN ở mức 60 giây; trong tương lai, khi App Hosting có khả năng xoá nhanh bộ nhớ đệm khi triển khai, giới hạn này sẽ được gỡ bỏ.
  • Theo mặc định, tính năng tối ưu hoá hình ảnh được thực hiện trong Cloud Run và các hình ảnh được tối ưu hoá sẽ không được duy trì. Bạn nên tắt tính năng tối ưu hoá hình ảnh hoặc chỉ định trình tải theo cách thủ công cho đến khi có giải pháp tốt hơn.
  • Các tệp tĩnh chưa lưu vào bộ nhớ đệm được phân phát từ Cloud Run; trong bản phát hành sau này, các tệp này sẽ được lưu trữ và phân phát từ nguồn gốc App Hosting để có hiệu suất tốt hơn.
  • SKU App Hosting có thể không xuất hiện trong trang sử dụng phần phụ trợ trong bảng điều khiển Firebase. Các tính năng này sẽ có trong bản phát hành sau này.
  • Bảng điều khiển Firebase có thể hiển thị không liên tục lỗi "không tìm thấy bản dựng và bản dựng không hợp lệ" khi tạo phần phụ trợ.
  • Hiện tại, tất cả phần phụ trợ trong cùng một dự án đều dùng chung một tổ chức/tài khoản GitHub. Các nhóm này có thể được kết nối với nhiều kho lưu trữ trong tổ chức/tài khoản đó. Để tạo các phần phụ trợ được kết nối với nhiều tài khoản GitHub, hãy đặt các phần phụ trợ đó vào các dự án riêng biệt.
  • Phần mềm trung gian, ghi đè và chuyển hướng Next.js được thực thi trong Cloud Run, phía sau CDN. Vì các lệnh này sẽ không bảo vệ các phản hồi được lưu vào bộ nhớ đệm, hãy nhớ đặt các lệnh kiểm soát thích hợp cho nội dung bạn đang hiển thị.