Memahami Hosting Aplikasi dan cara kerjanya

App Hosting menangani serangkaian tugas latar belakang yang kompleks untuk menyederhanakan deployment aplikasi Anda. Halaman ini menjelaskan bagian-bagian penting dari alur tugas tersebut, yang memberikan informasi tentang titik-titik yang memungkinkan Anda menyesuaikan alurnya bergantung pada kebutuhan aplikasi.

Dukungan framework

App Hosting menyediakan dukungan build dan deployment tanpa konfigurasi untuk aplikasi Web yang dikembangkan dalam framework berikut:

  • Next.js 13+
  • Angular 17.2+

App Hosting mengidentifikasi framework yang Anda gunakan dengan memeriksa file package-lock.json atau file kunci lainnya di repositori Anda. Jika Anda mencoba men-deploy aplikasi Node.js yang tidak memiliki file kunci, App Hosting akan gagal mem-build dan menjalankan aplikasi Anda. Anda dapat membuat package-lock.json dengan menjalankan npm install di direktori root.

Adaptor framework App Hosting memiliki dua peran utama:

  1. Alat tersebut akan mengurai kode sumber Anda dan file konfigurasi khusus framework (seperti next.config.js) untuk memahami perilaku aplikasi yang dikonfigurasi.
  2. Alat ini menjalankan perintah build aplikasi Anda untuk menghasilkan aset statis dan membuat versi aplikasi yang dioptimalkan untuk produksi.

Adaptor framework mem-build aplikasi Node.js Anda dengan npm run build, yang berfungsi paling baik dengan skrip build default untuk setiap framework: next build untuk Next.js dan ng build untuk Angular. App Hosting akan mencoba membangun dengan perintah build kustom, tetapi tidak dapat menjamin keberhasilan secara bergantung.

Cara kerja integrasi repositori App Hosting

Koneksi penting antara repositori GitHub dan backend App Hosting ditangani oleh Developer Connect, platform konektivitas Google Cloud untuk alat DevOps eksternal. Selama pembuatan backend App Hosting, alur kerja UI Developer Connect akan memandu Anda menginstal aplikasi GitHub Firebase. Langkah-langkah utama dalam proses ini adalah:

  1. Anda memberikan peran Secret Manager Admin kepada Developer Connect. Hal ini memungkinkan sistem menyimpan kredensial dengan aman sebagai "secret" di Cloud Secret Manager.
  2. Anda memberi otorisasi ke aplikasi GitHub Firebase untuk mengakses repositori GitHub Anda.
  3. Developer Connect menyimpan token otorisasi GitHub khusus di repositori secret manager project Anda; jangan ubah atau hapus token ini.

Selain itu, App Hosting terintegrasi dengan GitHub checks API untuk memberikan pemeriksaan peluncuran. Pemeriksaan ini memungkinkan Anda melihat status peluncuran di GitHub dan men-debug proses deployment jika terjadi error.

Integrasi dengan Firebase dan layanan Google lainnya

App Hosting menyiapkan lingkungan build dan runtime sehingga Anda dapat melakukan inisialisasi Firebase Admin SDK dengan Kredensial Default Aplikasi Google. Dengan begitu, backend Anda dapat berkomunikasi dengan produk Firebase lainnya selama build dan deployment.

Lokasi App Hosting

Deployment App Hosting membuat resource backend Anda di lokasi tertentu. Fleksibilitas lokasi aplikasi web Anda ini memiliki keunggulan utama:

  • Meningkatkan performa dan mengurangi latensi dengan mendekatkan data secara geografis ke pengguna Anda.
  • Kegagalan besar untuk App Hosting di satu region tidak akan memengaruhi aplikasi web yang di-deploy di region lain.

Anda dapat memilih salah satu region ini saat membuat backend App Hosting dari konsol atau CLI Firebase:

  • us-central1 (Iowa)
  • asia-east1 (Taiwan)
  • europe-west4 (Belanda)

Akun layanan backend App Hosting

Selama build dan saat runtime, backend App Hosting Anda melakukan autentikasi dengan layanan Google lainnya dengan akun layanan. Akun layanan default untuk tujuan ini dibuat saat Anda pertama kali mengaktifkan App Hosting dalam project Firebase:

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

Akun layanan ini berlaku untuk semua backend secara default dan memiliki serangkaian izin minimal untuk memungkinkan Anda mem-build, menjalankan, dan memantau aplikasi. Akun layanan ini juga memiliki izin untuk mengautentikasi Admin SDK dengan Kredensial Default Aplikasi, untuk melakukan operasi seperti memuat data dari Cloud Firestore. Lihat peran App Hosting Firebase.

Jika aplikasi Anda perlu berinteraksi dengan layanan Google tambahan pada waktu build atau dari backend yang berjalan, Anda dapat menyesuaikan akun layanan default dengan menambahkan peran. Misalnya, jika aplikasi Anda memerlukan izin untuk Vertex AI, Anda mungkin perlu menambahkan roles/aiplatform.user atau beberapa peran terkait.

Istilah dan definisi utama

  • Backend: Kumpulan resource terkelola yang dibuat App Hosting untuk mem-build dan menjalankan aplikasi web Anda.
  • Peluncuran: Versi tertentu dari aplikasi live Anda, yang ditautkan ke commit git.
  • Cabang aktif: Cabang repositori GitHub yang di-deploy ke URL aktif Anda. Sering kali, ini adalah cabang tempat branch fitur atau branch pengembangan digabungkan.

Masalah umum dan batasan

Pratinjau App Hosting memiliki beberapa batasan umum:

  • Dalam beberapa kasus, backend App Hosting dapat menampilkan pesan Intermittent connection error di URL aplikasi Anda. Perbaikan akan tersedia di rilis berikutnya.
  • Header Cache-Control diubah untuk membatasi cache CDN hingga 60 detik; pada masa mendatang, saat App Hosting memiliki kemampuan untuk menghapus cache dengan cepat saat di-deploy, batas ini akan dicabut.
  • Pengoptimalan gambar dilakukan di Cloud Run secara default, dan gambar yang dioptimalkan tidak dipertahankan—sebaiknya nonaktifkan pengoptimalan gambar atau tentukan loader secara manual hingga solusi yang lebih baik tersedia.
  • File statis yang tidak di-cache ditayangkan dari Cloud Run; dalam rilis berikutnya, file tersebut akan disimpan dan ditayangkan dari origin App Hosting untuk performa yang lebih baik.
  • App Hosting SKU mungkin tidak ditampilkan di halaman penggunaan backend di konsol Firebase. Fitur ini akan tersedia di rilis selanjutnya.
  • Konsol Firebase mungkin sesekali menampilkan error "build tidak ditemukan dan tidak valid" saat pembuatan backend.
  • Saat ini, semua backend dalam project yang sama menggunakan organisasi/akun GitHub yang sama. Keduanya dapat dihubungkan ke repositori yang berbeda dalam organisasi/akun tersebut. Untuk membuat backend yang terhubung ke akun GitHub yang berbeda, tempatkan backend tersebut dalam project terpisah.
  • Middleware, penulisan ulang, dan pengalihan Next.js dijalankan di Cloud Run, di belakang CDN. Karena tidak akan melindungi respons yang di-cache, pastikan untuk menetapkan perintah kontrol yang sesuai untuk konten yang Anda render.