ADVERTISEMENT

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:

ADVERTISEMENT