Uygulama Barındırma'yı ve işleyiş şeklini anlama

App Hosting, uygulamanızın dağıtımını basitleştirmek için karmaşık bir dizi arka plan görevini yönetir. Bu sayfa, görev akışının önemli bölümlerini açıklar ve uygulamanızın ihtiyaçlarına bağlı olarak akışı özelleştirmek isteyebileceğiniz noktalar hakkında bilgi sağlar.

Çerçeve entegrasyonu

App Hosting, aşağıdaki çerçevelerde geliştirilen web uygulamaları için önceden yapılandırılmış derleme ve dağıtım desteği sağlar:

  • Next.js 13+
  • Angular 17.2 ve sonraki sürümler

App Hosting, package-lock.json dosyasını veya deponuzdaki diğer kilit dosyasını inceleyerek hangi çerçeveyi kullandığınızı belirler. Kilit dosyası eksik olan bir Node.js uygulamasını dağıtmaya çalışırsanız App Hosting, uygulamanızı derleyip çalıştıramaz. Kök dizininizde npm install'yi çalıştırarak package-lock.json oluşturabilirsiniz.

Çerçeve adaptörleri

App Hosting çerçeve bağdaştırıcıların iki temel işlevi vardır:

  1. Kaynak kodunuzu ve çerçeveye özgü yapılandırma dosyalarını (next.config.js gibi) ayrıştırır ve uygulama barındırma altyapısının geri kalanı tarafından işlenebilecek bir çıktı paketi oluşturur.
  2. Statik öğeler oluşturmak ve uygulamanızın üretime yönelik optimize edilmiş bir sürümünü oluşturmak için uygulamanızın derleme komutunu çalıştırırlar.

Çerçeve bağdaştırıcılar, Node.js uygulamanızı npm run build ile oluşturur ve her çerçevenin varsayılan derleme komut dosyalarıyla en iyi şekilde çalışır: Next.js için next build ve Angular için ng build. App Hosting, özel derleme komutlarıyla derleme yapmayı dener ancak başarının güvenilir bir şekilde garanti edilemeyeceğini belirtir.

Next.js ve Angular bağdaştırıcıların kaynağı firebase-framework-tools'da mevcuttur.

Diğer çerçeveler

Uygulama barındırma, Nextjs ve Angular'a ek olarak çıktı paketi spesifikasyonumuzla eşleşen bir derleme çıkışı sağlayabilen tüm web çerçevelerini de destekler. Çerçeve yazarları, çerçevelerinin App Hosting tarafından desteklenmesini sağlamak için çıkış paketi spesifikasyonundan yararlanabilir.

Daha fazla çerçevenin desteklenmesini istiyorsanız bir bağdaştırıcı oluşturabilir veya derleme çıkışlarını uygulama barındırma biçimine dönüştürmek için çerçevenin koruyucularıyla iletişime geçebilirsiniz. Nextjs ve Angular bağdaştırıcılar, bağdaştırıcılar oluşturan herkes için iyi referans örnekleridir.

Desteklenen çerçeveleri Firebase Open Source'da bulabilirsiniz.

App Hosting deposu entegrasyonu nasıl çalışır?

GitHub deponuz ile App Hostingarka uç arasındaki önemli bağlantı, Google Cloud'un harici DevOps araçları için bağlantı platformu olan Developer Connect tarafından yönetilir. App Hosting arka uç oluştururken Developer Connect'in kullanıcı arayüzü iş akışı, Firebase GitHub uygulamasının kurulumunda size yol gösterir. Bu süreçteki temel adımlar şunlardır:

  1. Developer Connect'e Secret Manager Yöneticisi rolünü verirsiniz. Bu sayede sistem, kimlik bilgilerini Cloud Secret Manager'da "gizli anahtar" olarak güvenli bir şekilde saklayabilir.
  2. Firebase GitHub uygulamasına GitHub deponuza erişmesi için yetki verin.
  3. Developer Connect, projenizin gizli yönetici deposunda özel bir GitHub yetkilendirme jetonu depolar. Bu jetonu değiştirmeyin veya silmeyin.

Ayrıca App Hosting, kullanıma sunma işlemleri için kontrol sağlamak amacıyla GitHub Checks API ile entegre olur. Bu kontrol, kullanıma sunma işleminizin durumunu GitHub'da görüntülemenize ve hata olması durumunda dağıtım sürecinde hata ayıklamanıza olanak tanır.

Firebase ve diğer Google hizmetleriyle entegrasyon

App Hosting, Google Uygulama Varsayılan Kimlik Bilgileri ile Firebase Admin SDK'sını başlatabilmeniz için hem derleme hem de çalışma ortamınızı oluşturur. Bu sayede arka uç, hem derleme hem de dağıtım sırasında diğer Firebase ürünleriyle iletişim kurabilir.

App Hosting yer

App Hosting dağıtımı, arka uç kaynaklarınızı belirli bir konumda oluşturur. Web uygulamanızın konumunda bu esnekliğin önemli avantajları vardır:

  • Verileri coğrafi olarak kullanıcılarınıza daha yakın bir yere getirerek performansı iyileştirdi ve gecikmeyi azalttı.
  • Bir bölgedeki App Hosting için meydana gelen büyük bir hata, diğer bölgelerde dağıtılan web uygulamalarını etkilemez.

Konsoldan veya Firebase CLI'den App Hosting arka uç oluştururken bu bölgelerden herhangi birini seçebilirsiniz:

  • us-central1 (Iowa)
  • asia-east1 (Tayvan)
  • europe-west4 (Hollanda)

App Hosting arka uç hizmet hesabı

App Hosting arka uç, derleme sırasında ve çalışma zamanında bir hizmet hesabıyla diğer Google hizmetleriyle kimlik doğrulaması yapar. Firebase projesinde App Hosting'ü ilk kez etkinleştirdiğinizde bu amaçlar için varsayılan bir hizmet hesabı oluşturulur:

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

Bu hizmet hesabı varsayılan olarak tüm arka uçlar için geçerlidir ve uygulamanızı oluşturmanıza, çalıştırmanıza ve izlemenize olanak tanıyan minimum düzeyde izinlere sahiptir. Ayrıca, Cloud Firestore'den veri yükleme gibi işlemleri gerçekleştirmek için Yönetici SDK'sının kimliğini Uygulama Varsayılan Kimlik Bilgileri ile doğrulama iznine sahiptir. Firebase App Hosting rolleri başlıklı makaleyi inceleyin.

Uygulamanızın derleme sırasında veya çalışan bir arka uçtan ek Google hizmetleriyle etkileşim kurması gerekiyorsa varsayılan hizmet hesabına rol ekleyerek hesabı özelleştirebilirsiniz. Örneğin, uygulamanız Vertex AI için izinler gerektiriyorsa roles/aiplatform.user veya ilgili bir rol eklemeniz gerekebilir.

Önemli terimler ve tanımlar

  • Arka uç: App Hosting'nin web uygulamanızı oluşturmak ve çalıştırmak için oluşturduğu yönetilen kaynaklar koleksiyonu.
  • Yayınlama: Yayındaki uygulamanızın, bir git commit'ine bağlı belirli bir sürümü.
  • Yayındaki dal: GitHub deponuzun canlı URL'nize dağıtılan dalıdır. Genellikle özellik şubelerinin veya geliştirme şubelerinin birleştirildiği şubedir.

Bilinen sorunlar ve sınırlamalar

App Hosting önizlemesinin bilinen bazı sınırlamaları vardır:

  • Bazı durumlarda, App Hosting arka uç, uygulamanızın URL'sinde Intermittent connection error mesajları döndürebilir. Bu sorun sonraki bir sürümde düzeltilecektir.
  • Cache-Control başlıkları, CDN önbelleğini 60 saniyeyle sınırlayacak şekilde değiştirilir. Gelecekte, App Hosting dağıtımda önbelleği hızlıca temizleyebildiğinde bu sınır kaldırılacaktır.
  • Resim optimizasyonu varsayılan olarak Cloud Run'te yapılır ve optimize edilmiş resimler kalıcı olmaz. Daha iyi bir çözüm bulunana kadar resim optimizasyonunu devre dışı bırakmanızı veya yükleyiciyi manuel olarak belirtmenizi öneririz.
  • Önbelleğe alınmamış statik dosyalar Cloud Run üzerinden yayınlanır. Daha sonraki bir sürümde, daha iyi performans için App Hosting kaynağından depolanıp yayınlanacak.
  • App Hosting SKU'lar, konsoldaki arka uç kullanım sayfasında gösterilmeyebilir. Firebase Bu özellikler daha sonraki bir sürümde kullanıma sunulacaktır.
  • Firebase konsolu, arka uç oluşturma işleminde ara sıra "derleme bulunamadı ve geçersiz" hatası gösterebilir.
  • Şu anda aynı projedeki tüm arka uçlar bir GitHub kuruluşunu/hesabını paylaşmaktadır. Bu kuruluş/hesap altındaki farklı depolara bağlanabilirler. Farklı GitHub hesaplarına bağlı arka uç oluşturmak için bunları ayrı projelere koyun.
  • Next.js ara yazılımı, yeniden yazmalar ve yönlendirmeler, CDN'nin arkasındaki Cloud Run'te yürütülür. Bunlar önbelleğe alınan yanıtları korumadığından, oluşturmakta olduğunuz içerik için uygun denetim yönergelerini ayarladığınızdan emin olun.