Membangun API Gateway dengan Krakend Part-1

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 !

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 ]
Tresna Widiyaman Avatar