Dowiedz się, jak działa App Hosting i jak działa.

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:

  1. Analizują kod źródłowy i pliki konfiguracyjne związane z danym frameworkiem (np. next.config.js), aby poznać skonfigurowane działanie aplikacji.
  2. 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:

  1. 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.
  2. Autoryzujesz aplikację Firebase na GitHubie do dostępu do repozytorium GitHub.
  3. 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.