Pemrosesan Backend AI Masa Depan: Menggunakan Flask Python di Firebase Cloud Functions

Surahutomo Aziz Pradana
Firebase Indonesia
Published in
5 min readMay 21, 2024

Halo, para penggemar Firebase dan AI!

Hari ini kita akan menjelajahi dunia komputasi serverless yang bisa diintegrasikan dengan AI menggunakan bahasa Python, khususnya dengan Firebase Cloud Functions. Fungsi-fungsi ini menawarkan cara mudah untuk menjalankan kode sebagai respons terhadap berbagai pemicu, tanpa perlu repot mengelola server.

Tapi sebelum kita menyelami lebih dalam dunia serverless, mari kita bandingkan dulu pendekatan ini dengan pola arsitektur populer lainnya: microservices.

Serverless Cloud Functions vs. Microservices

Serverless cloud functions dan microservices adalah dua pola arsitektur yang digunakan untuk membangun aplikasi yang dapat diskalakan dan fleksibel. Namun, keduanya berbeda dalam beberapa aspek penting:

1. Manajemen Sumber Daya:

- Serverless Cloud Functions: Dengan fungsi serverless, penyedia cloud menangani manajemen infrastruktur, termasuk penyediaan server, penskalaan, dan pemeliharaan. Pengembang hanya fokus menulis kode tanpa perlu khawatir tentang infrastruktur di bawahnya.

- Microservices: Microservices mengharuskan pengembang untuk mengelola infrastruktur mereka sendiri, termasuk server, kontainer, dan alat orkestrasi seperti Kubernetes. Meskipun ini menawarkan lebih banyak kontrol atas sumber daya, ini juga menambah kompleksitas dan overhead.

2. Penskalaan:

- Serverless Cloud Functions: Fungsi cloud secara otomatis diskalakan naik atau turun berdasarkan permintaan. Penyedia mengalokasikan sumber daya secara dinamis, memastikan kinerja optimal dan efisiensi biaya.

- Microservices: Penskalaan microservices melibatkan manajemen sumber daya secara manual atau otomatis. Pengembang harus mengantisipasi pola lalu lintas dan menyesuaikan alokasi sumber daya, yang bisa jadi menantang untuk diimplementasikan dan dipelihara pada skala besar.

3. Biaya:

- Serverless Cloud Functions: Fungsi serverless menawarkan model harga bayar sesuai penggunaan, di mana Anda hanya dikenakan biaya untuk sumber daya yang digunakan selama eksekusi. Ini bisa efektif biaya untuk beban kerja sporadis dengan lalu lintas yang tidak terduga.

- Microservices: Microservices membutuhkan alokasi sumber daya yang konstan, terlepas dari fluktuasi beban kerja. Meskipun ini memberikan biaya yang lebih dapat diprediksi, ini bisa menyebabkan overprovisioning dan pemborosan sumber daya selama periode aktivitas rendah.

4. Pengembangan dan Penerapan:

- Serverless Cloud Functions: Mengembangkan dan menerapkan fungsi serverless sangat mudah dan membutuhkan sedikit pengaturan. Pengembang fokus menulis kode, dan penerapan ditangani melalui perintah CLI sederhana atau pipeline CI/CD.

- Microservices: Mengembangkan dan menerapkan microservices melibatkan lebih banyak pengaturan awal, termasuk penyediaan infrastruktur, containerization, dan penemuan layanan. Mengelola ketergantungan dan versi di berbagai layanan menambah kompleksitas proses pengembangan dan penerapan.

Sekarang setelah kita menguraikan perbedaan antara fungsi cloud serverless dan microservices, mari kita telusuri spesifik cara membangun dan menerapkan cloud functions dengan Python menggunakan Firebase Cloud Functions.

Tanpa berlama-lama lagi, mari kita mulai dengan menyiapkan proyek Firebase kita.

Langkah 1: Siapkan Proyek Firebase Anda

Pastikan Python sudah terinstal di sistem Anda. Jika belum, instal Firebase CLI secara global menggunakan npm:

npm install -g firebase-tools

Selanjutnya, masuk ke akun Google Anda dan inisialisasi proyek Firebase di direktori yang Anda inginkan. Selama proses inisialisasi:

firebase login
firebase init functions

Anda akan diminta memilih antara JavaScript atau TypeScript sebagai bahasa default. Pilih Python jika diminta.

Setelah itu, Anda akan diberikan struktur proyek untuk memulai!

Sebelum kita lanjut ke kode, jangan lupa tambahkan Flask ke dalam requirements.txt untuk mengintegrasikan Flask ke dalam Cloud Functions kita. Pada saat penulisan, saya merekomendasikan menggunakan versi 2.1.2 untuk versi yang didukung dengan Cloud Functions.

Kemudian instal semua dependensi yang diperlukan dengan:

python -m venv functions/venv
source functions/venv/bin/activate && python -m pip install -r functions/requirements.txt

Langkah 2: Tulis Fungsi Python Anda

Sekarang, mari kita tulis beberapa kode Python untuk fungsi cloud kita. Untuk contoh ini, mari kita buat fungsi sederhana yang merespons permintaan HTTP dengan salam yang ramah.

Arahkan ke direktori functions yang dibuat oleh Firebase CLI dan buka file main.py. Ganti isinya dengan kode Python berikut:

from firebase_functions import https_fn
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, Firebase Cloud Functions with Python'
@https_fn.on_request(max_instances=1)
def articles(req: https_fn.Request) -> https_fn.Response:
with app.request_context(req.environ):
return app.full_dispatch_request()

Kode di atas akan membungkus framework Flask Python Anda di dalam Firebase Cloud Functions, yang berarti:

1 Cloud Function dapat membungkus beberapa Endpoint API Flask”

Sebagai contoh, kita memiliki cloud functions bernama “articles” di mana kita bisa memiliki beberapa endpoint API seperti:

- /contents
- /images
- /generators, dll.

Dengan kata lain, Anda juga bisa menganggap Cloud Functions sebagai Microservice, di mana mereka memiliki tanggung jawab sendiri untuk ruang lingkup dan isinya.

Langkah 3: Terapkan Fungsi Cloud Anda

Dengan fungsi kita siap, saatnya untuk menerapkannya ke Firebase. Jalankan perintah berikut dari direktori proyek Anda untuk menerapkan fungsi Anda:

firebase deploy - only functions

Langkah 4: Uji Fungsi Cloud Anda

Setelah diterapkan, Anda dapat menguji fungsi cloud Anda dengan mengirimkan permintaan HTTP ke URL pemicunya. Anda dapat menemukan URL di konsol Firebase di bawah tab “Functions”.

Sekarang, buka browser favorit Anda atau gunakan alat seperti cURL untuk mengirim permintaan GET ke URL pemicu. Anda harus menerima salam yang ramah sebagai respons!

curl https://CLOUD_FUNCTION_ID.run.app/API_NAME

Selamat! Anda telah berhasil membangun dan menerapkan fungsi cloud pertama Anda dengan Python menggunakan Firebase Cloud Functions.

Sekarang Anda bisa mengakses fungsi cloud yang diterapkan melalui Postman juga, yang dalam kasus saya memiliki API POST bernama /generate untuk menghasilkan artikel dengan Generative AI. Saya akan berbagi lebih banyak tentang ini di artikel lain!

Jadi, dalam ringkasan kita telah mempelajari:

- Memahami manfaat menggunakan serverless dibandingkan microservice
- Menyiapkan Firebase Cloud Functions menggunakan bahasa Python
- Mengintegrasikan Flask ke dalam Python Firebase Cloud Functions kita.
- Menerapkan Flask Firebase Cloud Functions kita

Jika Anda memerlukan kode sumbernya, silakan fork dari sini: https://github.com/retzd-tech/genai-openai-firebase-function-sample

Itu saja! Apakah Anda sedang membangun Aplikasi Generative AI, aplikasi web, memproses data, atau mengotomatisasi tugas, Firebase Cloud Functions dengan Python sudah siap membantu. Selamat coding di cloud!

--

--

Surahutomo Aziz Pradana
Firebase Indonesia

Google Developer Expert - Firebase, Co-Lead GDG Jakarta, GDSC Lead PENS, Engineering Manager, AR/VR Tech Lead, Fullstack Engineer