Firebase Sunucusuz Kullanım - Mobil ve Web Uygulamaları Kolaylaştırıldı
Yayınlanan: 2022-03-11Mobil ve web uygulamaları genellikle bir arka uç sunucusu gerektirir. Web uygulamaları, içerik sunmak için bir web sunucusuna ihtiyaç duyar. Uygulamaların ayrıca kullanıcı profillerini ve resimler ve videolar gibi medyaları depolaması gerekir. Uygulama ve sunucu arasındaki iletişim, genellikle REST olan bir API kullanılarak yapılır.
Uygulamalar çeşitli dillerde kodlanmıştır. Bir iOS uygulaması Swift veya Objective-C ile yazılır. Android uygulamaları Java veya Kotlin ile yazılır. Web uygulamaları HTML, CSS, JavaScript ve genellikle Angular veya React gibi karmaşık çerçevelerle yazılır. Ön uç geliştiricilerin ilgili dilleri ve ilgili geliştirme araçlarını bilmesi gerekir.
Arka uç sunucular Go, Java, PHP ve Python dahil olmak üzere çeşitli dillerde yazılmıştır. Bu dillerin her biri, karmaşık uygulamaların yazılmasını kolaylaştırmak için kendi kitaplık paketine sahiptir.
Çoğu geliştirici, kendilerini ön uç veya arka uç geliştiriciler olarak görür. Her iki rolde de yetkin olan tam yığın geliştiriciler nispeten nadirdir.
Bir arka uç sunucusunu çalıştırmak ve sürdürmek, kendi zorluklarına sahiptir. Sunucuların oluşturulması, güncellenmesi ve yedeklenmesi gerekir. Ayrıca, yanlışlıkla veya kötü niyetli veri kaybını veya hassas verilere erişimi önlemek için sunucuların güvenliğinin sağlanması gerekir. Ek olarak, sunucuların bağlanabilmeleri için atanmış ana bilgisayar adlarına ve IP adreslerine sahip olmaları gerekir.
Firebase Nedir?
Firebase, Google tarafından satın alınan bir mobil mesajlaşma mimarisi olarak başladı. O zamandan beri, Google Cloud Platform ile birlikte çalışan 25'ten fazla bileşenden oluşan bir paket haline geldi.
Firebase, mobil ve web geliştiricilerinin bulut işlevlerine basit, güvenli ve güvenilir bir şekilde erişmesine olanak tanıyan yazılım geliştirme kitlerinden (SDK'lar) oluşur. Zayıf ağ bağlantısını otomatik olarak telafi ederler. Bileşenleri etkinleştirmek, yönetmek ve güvenceye almak için bir Firebase web konsolu vardır. Daha derinlemesine kullanım için komut satırı araçları ve REST API'leri de vardır.
Bazı Firebase bileşenleri diğerlerinden daha iyi bilinir. Bileşenler arasında, işlevselliğin aşamalı olarak benimsenmesine izin veren çok az bağımlılık vardır. Firebase kimlik doğrulaması ve analitiği en yaygın kullanılanlardır.
Firebase, mobil ve web ön uç geliştiricilerinin arka uç sunuculara ihtiyaç duymadan eksiksiz uygulamalar geliştirmesine olanak tanıyan bir platform haline geldi. Son geliştirmeler, Bulut Sanal Makinesi sunucu çözümlerine uygun, ölçeklenebilir, uygun maliyetli bir alternatif sağlayan sunucusuz çözümleri büyük ölçüde kolaylaştırdı.
Firebase Fiyatlandırma ve Faturalandırma Planları
Spark adlı temel Firebase faturalandırma planı ücretsizdir. Bulut kaynağı kullanımının sınırları vardır, ancak bunlar oldukça cömerttir. Makul boyutta bir uygulamayı herhangi bir ücret ödemeden çalıştırmak mümkündür.
Spark planı kapsamında 1 GB'a kadar içerik ve 10 GB/ay'dan daha az aktarıma sahip bir web sitesi barındırılabilir. Firestore, 1 GB'a kadar veriye ve ayda 10 GB'a kadar ağ trafiğine izin verir. Bulut depolama sınırları, 5 GB'a kadar veri ve 1 GB/gün'e kadar indirmelerdir.
Uygulamanın daha fazla kaynağa ihtiyacı varsa, kullandıkça öde gibi ücretli bir faturalandırma planı gerekir. Spark planı ücretsiz sınırları hala geçerlidir. Faturalandırılabilir ücretler oldukça düşüktür. Fiyatlandırma, Firebase fiyatlandırma sayfasında bulunabilir.
Bulutta çalışan sanal makineler, kullanılmasalar dahi çalışır durumdayken ücretlendirilirler. Firebase sunucusuz çözümleri sıfıra ölçeklenir. Bu, kaynakların yalnızca kullanımdayken etkin bir şekilde çalıştığı ve kullanılmadığında ücrete tabi olmadığı anlamına gelir. Bu, tatil kiralama gibi mevsimlik işletmeler veya konserler gibi periyodik etkinlikler için uygulamalar için idealdir. Aylarca süren hareketsizliğin ardından çok fazla aktivite olurdu.
Firebase Nasıl Kurulur
Kimlik doğrulama için bir e-posta hesabı gereklidir. Bir Google posta hesabı tercih edilir. https://mail.google.com adresinde oluşturulabilirler.
Bir Google Cloud Platform (GCP) hesabı da gereklidir. Ücretsiz deneme burada mevcuttur. Bu size bir yıl boyunca kullanılabilen 300 $ kredi verir. Kimlik kanıtı olarak bir kredi kartı gereklidir. Google 1 ABD doları tahsil edebilir ve ardından geri ödeyebilir. Faturalandırma etkinleştirilirse ve faturalandırılabilir kaynaklar kullanılırsa kredi kartından aylık olarak borçlandırılır. Faturalandırma için aracı görevi gören Google sağlayıcı şirketleri de vardır. Sağlayıcıya bulut kullanımı için ödeme yaparsınız ve onlar Google'a ödeme yapar. Kendi faturalandırma planları vardır ve ücretsiz deneme sunabilirler.
Kullanımı izlemek için bulut konsolunun faturalandırma bölümünü sık sık izlemek önemlidir. Depolama gibi kaynakları gerekli olmadığında etkin tutmak kolaydır ve bu da zaman içinde önemli maliyetlere neden olabilir.
Firebase projeleri aynı zamanda GCP projeleridir. Bir GCP projesi oluşturup bunu Firebase'e aktarabilir veya aynı zamanda bir GCP projesi oluşturacak bir Firebase projesi oluşturabilirsiniz. Firebase konsolu burada.
Farklı uygulama türleri için farklı bir kurulum gereklidir. Başlıcaları Android, iOS ve web uygulamalarıdır. Kurulum talimatları, resmi Firebase Kılavuzlarında bulunabilir.
Bazı işlemler için Firebase Komut Satırı Arayüzü (CLI) araçları gereklidir. Bunlar, Node.js
ve npm
aracının kurulu olmasını gerektirir. macOS veya Linux üzerinde çalışıyorsa, npm
komutunun sudo
ile çalıştırılması gerekir.
sudo npm install -g firebase-tools
Kimlik doğrulama ve yetkilendirme
Firebase kimlik doğrulaması, belki de en yaygın kullanılan Firebase bileşenidir. Kullanıcılar bir veya daha fazla sayıda kimlik doğrulama mekanizması seçebilir. Bunlar e-posta adresi ve şifre, telefon numaraları ve birleşik kimlik sağlayıcıları Google, Facebook, Twitter ve GitHub'dır. Herhangi bir sayıda kimlik doğrulama mekanizması etkinleştirilebilir.
Firebase Kullanıcı Arayüzü, kullanıcıdan şu mekanizmayı kullanmasını ister:
Firebase, istemci tarafında birkaç kod satırından çağrılabilen kimlik doğrulama için kullanıcı arabirimleri sağlar. Kimlik doğrulamasını manuel olarak yapmak için API'ler de vardır. Başarılı kimlik doğrulamasında, arka uç doğrulaması için kullanılabilecek bir kimlik belirteci oluşturulur.
API'ler, yönetim kullanıcılarının kullanıcıları programlı olarak yönetmesine olanak tanır. Operasyonlar şunları içerir:
- Kullanıcı oluşturma, güncelleme ve silme
- Kullanıcıları e-posta adresi veya telefon numarası gibi arama kriterlerine göre arayın
- Hesap oluşturma tarihi ve son giriş tarihi ve saati gibi bilgilere erişin
- Mevcut iş akışlarını kullanmak zorunda kalmadan e-posta adreslerini ve telefon numaralarını doğrulayın
Çoğu mobil ve web uygulaması, çok sayıda kullanıcının uygulamalarında oturum açmasını ister. Örneğin, bir Google Mail hesabı olan herkes, Google kimlik doğrulamasına izin veren herhangi bir uygulamada kimliklerini doğrulayabilir. Uygulamaya erişimi belirli kullanıcılarla kısıtlamak için bir yetkilendirme şekli gereklidir. Bu, e-posta adresleri ve erişim rolleri arasındaki ilişkileri veri depolamada depolayarak kolayca yapılabilir. Başarılı kimlik doğrulamada, e-posta adresi veri deposunda aranır. Kullanıcı doğru rollere sahipse, erişim verilir; aksi takdirde kullanıcı oturumu kapatılır.
Firebase Barındırma
Firebase barındırma, JavaScript içeren statik web içeriğinin bir web sunucusuna ihtiyaç duymadan bulutta barındırılmasına olanak tanır. İçerik, küresel bir İçerik Dağıtım Ağının (CDN) kenarlarında önbelleğe alınır. Bu, dünyanın her yerinden içeriğe hızlı erişim sağlar.
Bir veya daha fazla web sitesi, Firebase Konsolundaki bir Firebase projesinin Barındırma bölümüne eklenerek barındırılabilir. İçerik, SSL üzerinden teslim edilir ve formun iki URL'si verilir, [https://site-name.web.app] ve https://site-name.firebaseapp.com, burada site-name
proje adı veya bir kullanıcı tanımlı site adı.
Alan adınızın DNS kayıtlarını değiştirebilmeniz koşuluyla, siteyi kendi alan adınızdan barındırmak çok kolaydır. Alan adınızı Firebase Konsolu'ndaki bir siteye eklersiniz. Ardından, Google'a alanın size ait olduğunu kanıtlamak için alanınızın DNS'sine eklemeniz gereken bir DNS TXT kaydı verilecektir. TXT kaydı göründüğünde, site için DNS A kayıtları alabilirsiniz. Site için otomatik olarak bir SSL sertifikası sağlanır. Sertifika sağlandıktan sonra, site küresel olarak kullanılabilir. Prensip olarak, DNS güncellemeleri ve sertifika provizyonu için birkaç saat sürebilir. Uygulamada işlem 20 dakikada tamamlanabilmektedir.
Hostinge içerik eklemek için öncelikle site için bir dizin oluşturun ve komut satırından içine cd
atın. Ardından, Firebase'de oturum açın ve proje dizinini başlatın.
firebase login firebase init
Bir proje seçmeniz ve hangi müşteri hizmetlerinin gerekli olduğu sorulacak. Hizmetler her zaman daha sonra eklenebilir ve bu aşamada seçilmesi gerekmez.
Web sitesi kök dizinini ve hariç tutulacak dosyaları tanımlayan firebase.json
adlı bir dosya oluşturun. Dosyaları sürüm kontrolünden hariç tutmak için bir .gitignore
dosyasına da ihtiyacınız olacak.
{ "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] } }
Ardından, statik içeriği genel dizine kopyalayın. Son olarak, siteyi buluta dağıtın.
firebase deploy
Web içeriğini değiştirmek için içerik dosyalarını değiştirmeniz ve konuşlandırma komutunu vermeniz yeterlidir. Her dağıtım, Firebase Konsolunda bir sürüm olarak görünür. Tek bir tıklama ile önceki bir sürüme geri dönebilirsiniz.
Firebase Hosting ayrıca URI'leri dosyalara, Bulut İşlevlerine ve Cloud Run'a yeniden yazabilir. Bu hizmetlere bir etki alanı atamak gerekmediğinden bu, işleri büyük ölçüde basitleştirir. Yeniden yazma işlemleri, firebase.json'un barındırma bölümüne bir yeniden yazma bölümü eklenerek tanımlanır. Hizmet yoksa, barındırma dağıtımı başarısız olur.

{ "hosting": { "public": "public", "rewrites": [ { "source": "/xxx", "destination": "/profile.html" }, { "source": "/yyy", "function": "profile" }, { "source": "/api{,/**}", "run": { "serviceId": "cloud-api", "region": "europe-west1" } } ] } }
Veri depolama
Firebase, bulut tabanlı veri depolamaya erişmek için istemci API'leri sağlar. Üç tür depolama vardır:
- Gerçek Zamanlı Veritabanı
- Bulut Firestore
- Bulut depolama
Bu, mobil ve web istemcilerinin bir sunucuya ihtiyaç duymadan verileri depolamasına ve almasına olanak tanır.
Gerçek Zamanlı Veritabanı
Realtime Database, bulutta barındırılan bir NoSQL veritabanıdır. Gerçek Zamanlı Veritabanındaki veriler, bağlı tüm cihazlarla gerçek zamanlı olarak otomatik olarak senkronize edilir. Android, iOS ve web için çapraz platformda çalışır. Veriler bir JSON ağaç yapısı olarak saklanır. Verilere okuma ve yazma erişimini kontrol etmek için güvenlik kuralları ayarlanabilir.
Her cihaz, veritabanının yerel bir kopyasını tutar. Bu, verilerin ağa bağlı olmadığında kullanılabilir olduğu anlamına gelir. Yeniden bağlanıldığında, verilerin yerel ve bulut tabanlı kopyaları senkronize edilir.
Veriler, bir dinleyici kullanan uygulamalar tarafından okunur. Bir dinleyici, JSON ağacındaki bir düğümü dinler. Konsolda veya başka bir kullanıcı tarafından veriler değiştirildiğinde, dinleyici geri çağrısı yeni veri değeriyle çağrılır. Gerçek Zamanlı Veritabanı ayrıca sorguları da destekler. Her sorgu bir düğümü ve tüm alt düğümlerini döndürür.
Güvenlik kuralları varsayılan olarak verilere erişime izin vermez. Kurallar, genel olarak veya JSON nesnesinin tek tek düğümlerine eklenebilir. Güvenlik kuralları, verilere okuma ve yazma erişimini kontrol eder ve doğrulama yapabilir.
Gerçek Zamanlı Veritabanı, derinlemesine iç içe geçmiş bir veri yapısı gerektirmeyen küçük veri parçaları için en uygunudur. Ücretsiz sınır 1 GB veridir.
Bulut Firestore
Cloud Firestore, Realtime Database'in yerini alacak şekilde görülüyor. Gerçek Zamanlı Veritabanının işlevselliğini genişletir. Veriler bir JSON ağacında değil, hiyerarşik bir belge koleksiyonundadır. Her belge, bir dizi anahtar/değer çiftinden ve isteğe bağlı alt belgelerden oluşur. Sorgular, daha karmaşık filtreleme ve sıralamaya izin verir ve yalnızca eksiksiz belgeleri döndürür. Sorgular alt belgeleri döndürmez.
Cloud Firestore, yakında Cloud Datastore'un yerini alacak. Datastore modunda veya yerel modda çalıştırılabilir. Tüm Datastore uygulamaları otomatik olarak Cloud Firestore'a taşınacaktır.
Cloud Firestore, nispeten küçük veri parçaları için en uygun olanıdır. Derinlemesine yuvalanmış bir veri yapısına sahip olabilir. Ücretsiz sınır 1 GB veridir.
Bulut depolama
Bulut Depolama, resimler ve video klipler gibi dosyaları depolamak içindir. Mobil ve web istemcileri, bir arka uç sunucusuna ihtiyaç duymadan dosyaları doğrudan buluta yüklemek ve buluttan indirmek için Firebase'i kullanabilir. Ücretsiz sınır 5 GB veridir.
Bulut İşlevleri
Bulut İşlevleri, sunucusuz uygulamalar oluşturmak için önemli bir teknolojidir. Doğrudan Google bulutuna dağıtılan JavaScript, TypeScript, Python veya Go'da bir bulut işlevi yazılabilir. Bir işlev, bir HTTP isteği veya Bulut Depolama'ya yazma gibi buluttaki bir olay tarafından tetiklenir.
Bir Bulut İşlevi aynı anda yalnızca bir isteği işleyebilir, ancak bulut işlevi çoğaltarak otomatik olarak ölçeklendirir. Python'da yazılmış bir Bulut İşlevi, HTTP isteklerini işlemek için Flask kitaplığını kullanır. İşlev, parametre olarak bir istek nesnesi alır ve yanıt gövdesini döndürür.
Basit bir Python Bulut İşlevi, bir çalışma dizini gerektirir ve giriş noktası main.py
dosyasına girer.
def simple_cloud_function(request): return "It worked"
Bağımlılıklar pip tarafından yönetilir ve requirements.txt
adlı bir dosyaya gider.
Flask==1.0.2
gcloud
komut satırı aracı kullanılarak bir işlev dağıtılır. İşlev adını, dili ve tetikleyiciyi belirtir.
gcloud functions deploy simple_cloud_function --runtime python37 \ --trigger-http
İşlevin URL'si dağıtımda görüntülenir ve açıklama komutu çalıştırılarak bulunabilir.
gcloud functions describe simple_cloud_function Url: https://europe-west1-project-id.cloudfunctions.net/simplecloud_function
Cloud Functions, arka uç işlevselliği sağlamak için Google Cloud ve Firebase API'lerini çağırabilir. Yürütme başlatma ve yürütme süresi hakkında günlük bilgileri sağlarlar. Ek günlük kaydı kolayca eklenebilir. Günlükler, Stackdriver Logging kullanıcı arayüzünde ve gcloud
komut satırı aracı aracılığıyla görüntülenebilir.
gcloud functions logs read simple_cloud_function
İşlevler, Google Cloud Console'da görüntülenebilir ve silinebilir.
Bulut İşlevleri en iyi, nispeten seyrek gerçekleşen işlemler için kullanılır. Örnek kullanım, bir görüntü Cloud Storage'a yüklendiğinde bir küçük resim oluşturmaktır. Ücretsiz limit ayda 125.000 çağrıdır.
Bulut Çalıştırması
Cloud Run, sunucusuz uygulamaları büyük ölçüde kolaylaştıran yakın zamanda eklenen bir işlevdir. Docker kapsayıcılarının karmaşık altyapı kurulumu yapmak zorunda kalmadan bulutta çalıştırılmasını sağlar. Kubernetes üzerine kurulu Knative çalışma zamanını kullanan yönetilen modda çalışabilir. Aynı zamanda Kubernetes üzerine kurulu olan Anthos'ta da çalışabilir, ancak kapsayıcıların bulutlar arasında ve hatta kendi veri merkezinizde çalıştırılmasına izin verir. Her şey otomatik olarak yapıldığından bir Kubernetes kümesi kurmaya ve yönetmeye gerek yoktur.
Docker görüntülerine yerleştirilebilecek herhangi bir uygulama, Cloud Run tarafından yönetilebilir. Konteyner sayısını isteğe göre otomatik olarak ölçeklendirir. Hizmet kullanılmadığında da sıfıra ölçeklenir. Kullanılmayan hizmetler ücrete tabi değildir.
Docker kapsayıcılarının, HTTP isteklerine yanıt vermeleri için bir web sunucusu çalıştırması gerekir. Python hizmeti Flask kullanacaktır. Giriş noktası app.py
içinde olacaktır.
from flask import Flask, request app = Flask(__name__) @app.route('/api/profile') def profile(): page = ''' Page content ''' return page
Uygulama, görüntüyü oluşturmak için bir Dockerfile
ihtiyaç duyar.
FROM python ENV APP_HOME /app WORKDIR $APP_HOME COPY . . ENV PORT 8080 RUN pip install Flask gunicorn firebase-admin CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app
Cloud Run kapsayıcıları doğrudan buluta dağıtılır.
gcloud run deploy --image=image_name --platform=managed \ --region=europe-west1 --allow-unauthenticated
Hizmet adı, platform, bölge veya kimliği doğrulanmayan izin verilip verilmeyeceği proje yapılandırmasında tanımlanmadıysa veya komut satırında sağlanmadıysa, sorulacaktır. Dağıtım tamamlandıktan sonra hizmet URL'si görüntülenecektir. URL, gcloud komutu kullanılarak da elde edilebilir.
gcloud run services list SERVICE REGION URL LAST DEPLOYED BY LAST DEPLOYED AT cloud-api europe-west1 https://cloud-api-h42ifbxkyq-ew.a.run.app [email protected] 2020-02-05T10:53:30.006Z
URL, yönetilmesi zor olan rastgele bir sayı içeriyor. Firebase Hosting yeniden yazma kurallarının en kullanışlı hale geldiği yer burasıdır.
Hizmetler, Google Cloud Console'da görüntülenebilir ve silinebilir.
Cloud Run, bir REST API'sini barındırmak için idealdir. Aylık ücretsiz limitler 180.000 CPU saniye, 360.000 GB saniye bellek, 2 milyon istek ve 1 GB ağ çıkışıdır. Ücretsiz ağ çıkış sınırı, yalnızca hizmet bir Kuzey Amerika bölgesinde dağıtılıyorsa geçerlidir.
kimlik doğrulama
Varsayılan olarak, Cloud Functions ve Cloud Run kapsayıcıları herkese açıktır ve internetteki herkes tarafından erişilebilir. Hizmetler, Cloud Console'daki IAM kurallarını kullanarak proje üyeleri, Google Grupları ve bireysel e-posta adresleriyle sınırlandırılabilir.
Kısıtlamalar varsa, yetkisiz erişim yasaktır. Erişimi etkinleştirmek için istek başlıklarına bir kimlik belirteci eklenmelidir. Kimlik belirteci, gcloud komutu kullanılarak veya Firebase kimlik doğrulama işlemi sırasında elde edilebilir.
gcloud auth print-identity-token
Yetkilendirme başlığı gerekli.
Authorization: Bearer id-token
Özet
Google Cloud Platform ve Firebase, mobil ve web uygulamalarının geliştirilmesini büyük ölçüde kolaylaştıran bir dizi ürün sunar. İstemcilerin bulut işlevlerine doğrudan erişmesine izin verilerek veya Cloud Functions veya Cloud Run kullanılarak arka uç kodunu buluta dağıtarak bir arka uç sunucusuna duyulan ihtiyaç tamamen ortadan kaldırılabilir.
Mevcut uygulamalar aşamalı olarak sunucusuz uygulamaya geçirilebilir. Aslında, teknolojinin gelişme şekli, geleneksel sanal makine tabanlı sunucu çözümlerinin artık gerekli olmayacağı anlamına gelebilir.