Apa itu Fn Project?
Mengutip dari situs fnproject.io:
The Fn project is an open-source container-native serverless platform that you can run anywhere – any cloud or on-premise.
Bila anda pernah mendengar istilah Function As A Service (FaaS), Fn Project ini termasuk tool yang dapat kita gunakan untuk keperluan membangun FaaS.
Instalasi Fn CLI
Untuk bermain-main dengan Fn Project, kita perlu melakukan instalasi Docker versi 17.10 atau lebih tinggi. Silahkan mengunjungi laman instalasi Docker. FYI, dalam tutorial ini saya menggunakan sistem operasi Ubuntu 18.04.
Bila Docker sudah terpasang, selanjutnya kita lakukan instalasi Fn CLI. Berikut ini caranya:
sudo su
wget https://github.com/fnproject/cli/releases/download/0.5.81/fn_linux -O /usr/local/bin/fn
chmod +x /usr/local/bin/fn
fn -h
Sampai di sini, Fn CLI sudah terpasang. Selajutkan kita perlu menjalankan Fn Server.
fn start
Perintah di atas menjalankan proses untuk mengunduh Docker image fnproject/fnserver
dan menjalankan container Fn Server dengan port 8080.
Konfigurasi Context
fn list contexts
Default context sudah terbuat saat kita menjalankan Fn CLI. Namun, kita perlu memilih context dan registry yang akan kita gunakan. Berikut ini caranya:
fn use context default
fn update context registry fndemouser
Catatan: untuk perintah terakhir (konfigurasi registry) digunakan untuk keperluan Local Development.
fn list contexts
Membuat Fungsi
Setelah proses instalasi dan konfigurasi selesai, kita lanjutkan dengan mencoba membuat fungsi. Fungsi yang akan kita buat cukup sederhana yakni fungsi Hello World dengan menggunakan bahasa pemrograman Python.
sudo su
fn init --runtime python --trigger http pythonfn
cd pythonfn
ls
cat func.py
cat func.yaml
cat requirements.txt
fn create app pythonapp
Deploy Fungsi
fn --verbose deploy --app pythonapp --local
Mengakses Fungsi
Ada beberapa cara untuk mengakses fungsi yang sudah di-deploy tersebut.
Menggunakan Fn CLI
fn invoke pythonapp pythonfn
Kita juga bisa mem-passing data ke fungsi tersebut.
echo -n '{"name":"Bob"}' | fn invoke pythonapp pythonfn --content-type application/json
Menggunakan Curl
fn list apps
fn list triggers pythonapp
curl -H "Content-Type: application/json" http://localhost:8080/t/pythonapp/pythonfn
curl -H "Content-Type: application/json" -d '{"name":"Bob"}' http://localhost:8080/t/pythonapp/pythonfn
Referensi: