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 tempat Anda mungkin ingin menyesuaikan alur bergantung pada kebutuhan aplikasi Anda.

Integrasi framework

App Hosting menyediakan dukungan build dan deployment yang telah dikonfigurasi sebelumnya 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

Adaptor framework App Hosting memiliki dua peran utama:

  1. Alat ini mengurai kode sumber dan file konfigurasi khusus framework (seperti next.config.js) dan menghasilkan paket output yang dapat diproses oleh infrastruktur Hosting Aplikasi lainnya.
  2. Alat ini menjalankan perintah build aplikasi 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 build dengan perintah build kustom, tetapi tidak dapat menjamin keberhasilan dengan andal.

Sumber untuk adaptor Next.js dan Angular tersedia di firebase-framework-tools.

Framework lainnya

Selain Nextjs dan Angular, Hosting Aplikasi juga mendukung framework web apa pun yang dapat memberikan output build yang cocok dengan spesifikasi paket output kami. Penulis framework dapat memanfaatkan spesifikasi paket output untuk memastikan framework mereka didukung oleh Hosting Aplikasi.

Jika ingin framework tambahan didukung, Anda dapat membuat adaptor, atau menghubungi pemelihara framework untuk mengonversi output build menjadi format Hosting Aplikasi. Adaptor Nextjs dan Angular adalah contoh referensi yang baik bagi siapa saja yang membuat adaptor.

Framework yang didukung dapat ditemukan di Firebase Open Source.

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 utamanya dalam proses ini adalah:

  1. Anda memberikan peran Secret Manager Admin ke 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:

  • Peningkatan performa dan pengurangan 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 pertama kali Anda mengaktifkan App Hosting di project Firebase:

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

Akun layanan ini berlaku untuk semua backend secara default dan memiliki serangkaian izin minimum untuk memungkinkan Anda mem-build, menjalankan, dan memantau aplikasi. Akun ini juga memiliki izin untuk mengautentikasikan 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 hal ini tidak akan melindungi respons yang di-cache, pastikan untuk menetapkan perintah kontrol yang sesuai untuk konten yang Anda render.