App Hosting obsługuje złożoną serię zadań w tle, aby uprościć wdrażanie aplikacji. Ta strona opisuje kluczowe części tego procesu, podając informacje o miejscach, w których warto go dostosować do potrzeb aplikacji.
Obsługa platformy
App Hosting zapewnia niewymagającą konfiguracji obsługę kompilacji i wdrażania aplikacji internetowych utworzonych na tych platformach:
- Next.js 13 i nowsze
- Angular 17.2 lub nowszy
App Hosting określa, której platformy używasz, przez sprawdzenie pliku package-lock.json
lub innego pliku blokady w repozytorium. Jeśli spróbujesz wdrożyć aplikację Node.js, w której brakuje pliku blokady, App Hosting nie skompiluje i nie uruchomi aplikacji. Możesz utworzyć aplikację package-lock.json
, uruchamiając npm
install
w katalogu głównym.
App Hostingadaptery frameworka pełnią 2 kluczowe role:
- Analizują kod źródłowy i pliki konfiguracyjne związane z danym frameworkiem (np.
next.config.js
), aby poznać skonfigurowane działanie aplikacji. - Uruchomiono polecenie kompilacji aplikacji, aby wygenerować zasoby statyczne i utworzyć zoptymalizowaną wersję aplikacji pod kątem środowiska produkcyjnego.
Adaptery platformy kompilują aplikację Node.js za pomocą npm run build
, najlepiej współpracując z domyślnymi skryptami kompilacji dla każdej platformy: next build
w przypadku Next.js i ng build
w przypadku Angular. App Hosting spróbuje skompilować za pomocą niestandardowych poleceń kompilacji, ale nie gwarantuje powodzenia.
Jak działa integracja z repozitorium App Hosting
Ważne połączenie między repozytorium GitHub a backendem App Hosting jest obsługiwane przez Developer Connect – platformę łączności Google Cloud dla zewnętrznych narzędzi DevOps. Podczas tworzenia backendu App Hosting przepływ pracy w interfejsie Developer Connect przeprowadzi Cię przez proces instalacji aplikacji Firebase na GitHubie. Kluczowe kroki tego procesu:
- przyznasz usłudze Developer Connect rolę Administratora Secret Managera. Dzięki temu system może bezpiecznie przechowywać dane logowania jako „obiekty tajne” w usłudze Cloud Secret Manager.
- Autoryzujesz aplikację Firebase na GitHubie do dostępu do repozytorium GitHub.
- Developer Connect przechowuje specjalny token autoryzacji GitHub w repozytorium menedżera obiektów tajnych Twojego projektu. Nie modyfikuj ani nie usuwaj tego tokena.
Dodatkowo App Hosting integruje się z interfejsem GitHub checks API, aby zapewnić sprawdzanie wdrożeń. Dzięki temu możesz sprawdzić stan wdrożenia na GitHubie i debugować proces wdrażania w przypadku wystąpienia błędów.
Integracja z Firebase i innymi usługami Google
App Hosting konfiguruje środowisko kompilacji i środowisko uruchomieniowe, aby umożliwić inicjowanie pakietu SDK Firebase Admin za pomocą domyślnych danych logowania do aplikacji Google. Dzięki temu backend może się komunikować z innymi usługami Firebase zarówno podczas kompilacji, jak i wdrażania.
App Hosting lokalizacji
App Hosting wdrażanie tworzy zasoby backendu w określonej lokalizacji. Ta elastyczność w lokalizacji aplikacji internetowej ma kilka kluczowych zalet:
- Zwiększona wydajność i zmniejszony czas oczekiwania dzięki umieszczeniu danych bliżej użytkowników.
- Katastrofalny błąd w usłudze App Hosting w jednym regionie nie wpłynie na aplikacje internetowe wdrożone w innych regionach.
Podczas tworzenia backendu App Hosting za pomocą konsoli lub interfejsu wiersza poleceń Firebase możesz wybrać dowolny z tych regionów:
us-central1
(Iowa)asia-east1
(Tajwan)europe-west4
(Holandia)
App Hosting konto usługi w części backendowej,
Podczas kompilacji i w czasie działania backend App Hosting uwierzytelnia się w innych usługach Google za pomocą konta usługi. Domyślne konto usługi do tych celów jest tworzone przy pierwszym włączeniu funkcji App Hosting w projekcie Firebase:
firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com
To konto usługi domyślnie dotyczy wszystkich backendów i ma minimalny zestaw uprawnień, aby umożliwić kompilowanie, uruchamianie i monitorowanie aplikacji. Ma też uprawnienia do uwierzytelniania pakietu Admin SDK za pomocą domyślnych danych logowania aplikacji, aby wykonywać operacje takie jak wczytywanie danych z Cloud Firestore. Zobacz role Firebase App Hosting.
Jeśli aplikacja musi wchodzić w interakcje z dodatkowymi usługami Google w czasie kompilacji lub z bieżącego backendu, możesz dostosować domyślne konto usługi, dodając role. Jeśli na przykład Twoja aplikacja wymaga uprawnień do Vertex AI, konieczne może być dodanie roli roles/aiplatform.user
lub innej powiązanej roli.
Najważniejsze terminy i ich definicje
- Backend: zbiór zarządzanych zasobów, które App Hosting tworzy do kompilowania i uruchamiania Twojej aplikacji internetowej.
- Wdrażanie: konkretna wersja aplikacji, która jest połączona z commitem w Git.
- Gałąź produkcyjna: gałąź w Twoim repozytorium GitHub, która jest wdrażana do adresu URL wersji produkcyjnej. Często jest to gałąź, do której scalane są gałęzie funkcji lub gałęzie rozwoju.
Znane problemy i ograniczenia
Wersja App Hosting ma pewne znane ograniczenia:
- W niektórych przypadkach backend App Hosting może zwracać komunikaty
Intermittent connection error
pod adresem URL Twojej aplikacji. W kolejnej wersji udostępnimy poprawkę. - Nagłówki Cache-Control zostały zmodyfikowane, aby ograniczyć pamięć podręczną CDN do 60 sekund. W przyszłości, gdy App Hosting będzie mieć możliwość szybkiego wyczyszczenia pamięci podręcznej po wdrożeniu, ten limit zostanie zniesiony.
- Domyślnie optymalizacja obrazów jest wykonywana w trybie Cloud Run, a zoptymalizowane obrazy nie są przechowywane. Zalecamy wyłączenie optymalizacji obrazów lub ręczne określenie ładowarki, dopóki nie będzie dostępne lepsze rozwiązanie.
- Niebuforowane pliki statyczne są przesyłane z Cloud Run. W późniejszych wersjach będą przechowywane i udostępniane z pierwotnego źródła App Hosting, aby zapewnić większą wydajność.
- Kody SKU App Hosting mogą nie być wyświetlane na stronie wykorzystania backendu w konsoli Firebase. Będą one dostępne w nadchodzącej wersji.
- Konsola Firebase może sporadycznie wyświetlać błąd „Nie znaleziono wersji i jest ona nieprawidłowa” podczas tworzenia backendu.
- Obecnie wszystkie backendy w tym samym projekcie korzystają z tej samej organizacji/konta GitHub. Można je połączyć z różnymi repozytoriami w tej organizacji lub tym koncie. Aby utworzyć backendy połączone z różnymi kontami GitHub, umieść je w osobnych projektach.
- Oprogramowanie pośredniczące, przekierowania i przepisania Next.js są wykonywane w Cloud Run, za CDN. Ponieważ nie chronią one odpowiedzi z pamięci podręcznej, pamiętaj o ustawieniu odpowiednich dyrektyw kontroli dla renderowanych treści.