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 desteği

App Hosting, aşağıdaki çerçevelerde geliştirilen web uygulamaları için yapılandırma gerektirmeyen derleme ve dağıtım desteği sunar:

  • Next.js 13 ve sonraki sürümler
  • 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ı olmayan bir Node.js uygulamasını dağıtmaya çalışırsanız App Hosting uygulamanızı geliştirip çalıştıramaz. Kök dizininizde npm install komutunu çalıştırarak package-lock.json oluşturabilirsiniz.

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

  1. Uygulamanızın yapılandırılmış davranışını anlamak için kaynak kodunuzu ve çerçeveye özgü yapılandırma dosyalarını (next.config.js gibi) ayrıştırırlar.
  2. Bu komutlar, statik öğeler oluşturmak ve uygulamanızın optimize edilmiş bir sürümünü oluşturmak için uygulamanızın derleme komutunu çalıştırır.

Ç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.

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 deponuzdan 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, GitHub'da sunumunuzun durumunu görüntülemenize ve herhangi bir 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 şekilde, arka ucunuz 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ölgede App Hosting için büyük bir hata görülmesi, 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ı

Derleme sırasında ve çalışma zamanında, App Hosting arka ucunuz, hizmet hesabı olan diğer Google hizmetleriyle kimlik doğrular. 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 bir izin grubuna 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 izin gerektiriyorsa roles/aiplatform.user veya ilgili bazı roller eklemeniz gerekebilir.

Önemli terimler ve tanımlar

  • Arka uç: App Hosting tarafından web uygulamanızı derlemek ve çalıştırmak için oluşturulan yönetilen kaynaklar koleksiyonu.
  • Kullanıma sunma: Canlı uygulamanızın git kaydına 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 sunulur. Sonraki sürümde, daha iyi performans için depolanır ve App Hosting kaynağından sunulur.
  • App Hosting SKU'ları Firebase konsolundaki arka uç kullanım sayfasında gösterilemez. Bunlar, 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 kullanıcılar, ilgili kuruluş/hesap altındaki farklı depolara bağlanabilir. 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.