Algolia ile Firebase Cloud Functions Kullanımı
Bu yazıda Algolia’yı inceleyecek, Firebase ile bağlantısını kurup, functions özelliklerini projeye deploy edeceğim.
Cloud Firestore dokümantasyonunda Full Text Search önerisi olarak Algolia önerilmekte.
Algolia Nedir?
Algolia, uygulamanızda gerçek zamanlı arama yapmanızı sağlayan servistir. Eldeki datayı, Algolia’ya deploy ettikten sonra kullanıcıların uygulama üzerinde çok detaylı ve hızlı bir şekilde arama hizmetini kullanmasını sağlayan arama üzerine iyi performans veren girişim.
Haliyle bu servis ücretsiz değil şöyle ki 50 bin kullanımına kadar “Community” paketini kullananlara karşı bu servis ücretsiz 50 bin kullanımdan fazla ihtiyaç var ise $29 ödeyerek kullanabiliyorsunuz. Community paketini kullanabilmek için önemli şartlardan birisi de uygulamanın ticari olmadığını söylemektir.
İlk olarak işe Firebase’de örnek bir proje açarak işe başlayalım.
Firebase de Proje Oluşturma
Proje ismini verdikten sonra devam diyelim.
Önemli Not: Kullanım tercihinin Spark yerine Blaze olması gerektiğini unutmayın, eğer Spark sürümde kullanıyorsanız functions işlemlerine izin verilmemektedir.
Projeyi oluşturduktan sonra “Cloud Firestore” dan bir veritabanını oluşturalım. Bu kısımda ise üretim modunda başlatma seçeneğini tıklayarak devam diyelim.
Sonrasında Cloud Firestore’da bir db oluşmuş olacak burada Collection’lar tutarak veri modellemesini ve verileri tutma işlemini yapabiliriz.
Örnek olması açısından manuel olarak birkaç veri ekliyorum. Bunu yapmak için de “Koleksiyon başlatın” butonuna bastıktan sonra collection ismini “grade” yapıp gerekli parametreleri oluşturdum. Tabii ki gerçek bir projede bu kısım uygulama içinden oluşmaktadır.
Sonrasında örnek olması açısından birkaç tane daha veri girelim.
İlk kısım böylece de tamamlanmış oldu, şimdi ise node.js kullanarak, functions modülü oluşturacağız.
Modül Paketi Oluşturma
mkdir ile example isimli klasör oluşturalım. Klasörün içine girdikten sonra aşağıdaki işlemleri sırasıyla yapalım.
1) nvm install 8.16.0
2) npm install -g firebase-tools
3) firebase login
4) firebase functions -add
5) firebase init
Functions seçeneğini seçelim sonrasında FB’deki oluşturduğmuz örnek projeyi buradan seçelim.
Algolia Node.js SDK Kurulumu
cd functions
npm install algoliasearch --save
npm install dotenv --save
npm install firebase --save
Bu komutlarla SDK kurulumu yapılır.
example klasörünün içindeki functions klasörü oluşmuş oldu.
Algolia’da Proje Kurulumu
Buradan üye olup create application diyebiliriz.
Yazının ilk kısmında belirtiğim üzere çeşitli paketler mevcut, Free olan Community seçeneğini seçiyoruz. Ticari kullanımlar için bu paket kullanılamıyor.
Burada sunucunun çalışacağı bölgeleri seçmemiz isteniyor. Yakın olduğu vs ms düşük olduğu için eu-west’i seçiyorum.
Projeye ait API Keys’leri bulabilirsiniz. Functions config etmek için buradaki keyleri kullanmak gerekiyor.
Bir önemli nokta daha: Firebase proje ayarlarından “Yeni özel anahtar oluştur”a tıkladıktan sonra, serviceAccountKey.json dosyasını verir.
Bu json dosyasında Firebase projesine ait key bilgileri bulunur. Kullanmak için projenin üstteki görseldeki yerine kopyalamak gerekiyor.
Algolia Config Ayarları
Algoliasearch kullanmak için ve Algolia’ya güvenli bir şekilde erişmek için API anahtarlarına ihtiyacımız olacak. Firebase Cloud Functions, bu bilgileri ortam yapılandırmasında depolamanın güvenli bir yolunu sunar:
$ firebase functions:config:set algolia.appid="YOUR_APP_ID" algolia.apikey="YOUR_API_KEY
YOUR_APP_ID ve YOUR_API_KEY öğelerini Algolia’nızın kontrol panelinde bulabileceğiniz kendi anahtarlarınızla değiştirin ve komutu çalıştırın.
Node.js ile Firebase’deki Veriyi Algolia’ya Deploy Etme
index.js dosyasını açalım, ilgili tanımlamaları yapalım. ALGOLIA_APP_ID ve devamında kontrol panelindeki kendi anahtarlarınızı yazın ve değiştirin.
Sonrasında yapacağımız iş, Firebase’de olan veriyi Algolia’ya deploy etmek olacak. Burada ilk olarak document yolunu bulup, bir list halinde deploy edebiliyoruz.
node index.js komutu yazarak çalıştırdıktan sonra gelen veriyi deploy edecek.
Deploy ettiğini kontrol etmek amacıyla Algolia’a bakalım.
Evet, deploy ettiğimiz 3 veriyi grade isimli olarak Algolia’a da görmüş olduk.
Peki bundan sonra ne olmalı? Cloud Firestore’a her veri geldiğinde, güncellendiğinde ve silindiğinde bu yapıyı dinleyip Algolia’daki indexi güncellemesi gereken fonksiyonlara ihtiyacımız var.
- onCreate(), fonksiyon ile veriyi create etti ve Algolia içinde yarattı.
- onUpdate(), fonksiyon ile Firebase’deki veriyi dinledi ve güncelledi
- onWrite(), fonksiyon ile de her veriyi dinledi ve yazdı.
Bu işlev hazır olduğunda, deploy edelim:
firebase deploy --only functions
Sonrasında tüm fonksiyonlar deploy edilmiş olur.
Firebase Functions panelinde fonksiyonların çalışmasını kontrol edebiliriz.
Veriyi Dinlemek
Fonksiyonların testini yapmak için, Cloud Firestore’a bir veri daha girelim ve fonksiyonun bunu dinleyip Algolia’ya deploy edip etmediğini kontrol edelim.
Kaydettikten sonra Algolia’ya bakalım.
Evet! Veriyi dinledi ve Algolia’ya deploy etmiş oldu.