Pada artikel kali ini kita akan membahas mengenai salah satu tools yang digunakan sebagai API Gateway yaitu Krakend, kita akan bahas mulai dari apa yang dimaksud API Gateway dan proses installasi krakend itu sendiri. Lets Read !
Contents
Mengenal Krakend
Krakend merupakan salah satu tools API Gateway, yang mana memiliki fungsi sebagai proxy yang meneruskan request yang diberikan oleh client kepada service backend yang dituju. Selain itu krakend menyediakan cukup banyak fitur mulai dari monitoring, cache, security, decoding, QOS, dll.

Seperti konsep layanannya sendiri yaitu API Gateway, krakend akan menjadi jembatan bagi client yang akan mengakses API Service dan melanjutkannya kepada endpoint yang dituju. Sebelum sampai ke endpoint client akan melewati proses pointing, filtering dan authentikasi pada krakend setelah sesuai barulah diteruskan kepada tujuan utama.
Jika di analogikan, API Gateway ini seperti stasiun kereta api dimana posisi kita adalah client yang akan melakukan serangkaian proses seperti pemeriksaan loket karcis (autentikasi) lalu memilih ketera api (Service) yang akan kita tuju dan kereta api (proxy) akan menerukan kita sampai di tujuan (endpoint).
Goal
- Melakukan installasi krakend menggunakan docker
- Melakukan contoh pointing API sederhana dengan menggunakan 2 service dummy
Installasi
Install Dummy Service
Sebelum melakukan pengetesan krakend kita memerlukan API Service yang akan diujicoba, disini saya sudah menyediakan dummy service nya.
Ada 2 service yang tersedia yaitu keranjang dan user dengan methode GET pada setiap servicenya. kedua service ini menggunakan docker base jadi pastikan docker sudah ter-install pada komputer anda.
Untuk mendapatkannya anda dapat melakukan clone pada repo berikut https://github.com/tresnax/tutorial-krakend.git
Setelah itu masuk kedalam directory membangun-krakend-1 dan buat docker network terlebih dahulu dengan nama krakend-net.
docker network create krakend-net
Setelah itu jalankan perintah tersebut untuk melakukan build dan install service dari repository tadi.
make build && make install
Tunggu hingga proses installasi selesai dan check apakah kedua service sudah berjalan dengan perintah docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66fb9aada466 keranjang-app:latest "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3001->3000/tcp, :::3001->3000/tcp keranjang-app
1bfdd1338e5f user-app:latest "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3002->3000/tcp, :::3002->3000/tcp user-app
Lakukan ujicoba pada kedua API service menggunakan Postman maupun Insomnia, apabila berhasil akan terlihat seperti berikut.


Install Krakend
Sebelum melakukan installasi krakend, anda perlu tahu bahwa kita akan melakukan persiapan dengan struktur direktory sebagai berikut.
project
└── krakend
└── krakend.json
Maka pertama sebuah folder baru dengan nama krakend. Selanjutnya pada direktory krakend, buat sebuah file dengan nama krakend.json dan isikan script dibawah ini.
{
"version": 3,
"output_encoding": "no-op",
"http_port": 8080,
"endpoints": [
{
"endpoint": "/keranjang",
"method": "GET",
"backend": [
{
"url_pattern": "/",
"method": "GET",
"host": ["http://keranjang-app:3000"]
}
]
},
{
"endpoint": "/user",
"method": "GET",
"backend": [
{
"url_pattern": "/",
"method": "GET",
"host": ["http://user-app:3000"]
}
]
}
]
}
Keterangan
- “http_port”: 8080 : Menjelaskan port yang digunakan untuk pemanggilan API Gateway
- “endpoint”: “/keranjang” : Endpoint alias yang dipanggil dari API Gateway yang nanti akan diteruskan kepada Endpoint
- “method”: “GET” : Method yang disetujui pada endpoint
- “url_pattern”: “/” : Endpoint utama yang dituju dari service yang kita daftarkan, ini bisa berubah sesuai yang kamu setup pada service backend.
- “host”: [“http://keranjang-app:3000”] : Alamat host dari service backend, pada kasus ini yang dipanggil adalah hostname dari dockernya, pada kasus lain bisa saja alamat domain apabila beda server.
Jalankan docker krakend dengan menggunakan perintah berikut
docker run -d --name krakend \
-v ./krakend/:/etc/krakend \
-p 8000:8000 \
-p 8080:8080 \
--network krakend-net devopsfaith/krakend
Check apakah container sudah berjalan dengan menjalankan perintah docker ps
seperti berikut.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
66fb9aada466 keranjang-app:latest "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3001->3000/tcp, :::3001->3000/tcp keranjang-app
1bfdd1338e5f user-app:latest "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 0.0.0.0:3002->3000/tcp, :::3002->3000/tcp user-app
9a3d9e9dea5d devopsfaith/krakend "/docker-entrypoint.…" 9 minutes ago Up 8 minutes 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 8090/tcp krakend
.
Pengujian
Untuk melakukan pengujian, kita dapat menggunakan langkah yang sama seperti pada dummy service yaitu menggunakan Postman atau Insomnia dengan memasukan alamat dari Krakend API Gateway yaitu localhost:8080 setelah itu tambahkan enpoint dari backend service yang kita tuju.
- localhost:8080/keranjang –> service keranjang
- localhost:8080/user –> service user


.
Penutup
Sekian artikel dari membangun API Gateway menggunakan Krakend, anda dapat melakukan penyesuaian service backend menggunakan service yang anda miliki sendiri dan menambahkan method sesuai skema yang anda miliki.
Semoga artikel ini bermanfaat dan dapat membantu R&D kalian, sampai jumpa pada pembahasan selanjutnya !
Referensi
- https://www.krakend.io/
- https://www.krakend.io/docs/service-settings/
- https://chat.openai.com/ – [ For creating backend service ]