API Gateway

January 28, 2021 by

 API Gateway
Contoh inventory system
Biasanya yg kita lakukan utk membuat logic secara umum tanpa harus di buat di 3 tempat yaitu membuat sistem backend. Kita develop bisnis logic di backendnya. Kalau misalnya ada lebih dr 10 aplikasi yg dibuat. apalagi jika kita butuh konek ke lebih dari 1 sistem,
contohnya pakai endpoint yg berbeda. Misal dari inventory api, finance API, payroll api, customer api, maka kita buat namanya proxy server (Haproxy, nginx) merouting dari yg sudah ditentukan ke service yg dituju. Kita sudah mengimplementasikan konsep api gateway.
Saat kita implementasi proxy server secara tidak sadar kita implementasi api gateway. Biasanya selanjutanya melakukan centralize authentication utk koneksi dan permission di backend. jadi proses request dari user kemudian ingin access ke endpoint harus melewati api gateway kemduian di dlm api gateway di saring melalui auth system. Kenapa di API gateway, krn auth nya bisa beda2 utk platform2, jika mobile pake oauth, jika web pakai session, third party pake basic auth, rumit jika dihandle di tiap service.
Dimana ada authentication disitu ada authorization.
role user punya akses tertentu utk service tertentu.
Biasnaya setelah auth bisa dapat role nya utk permission access ke endpoint di dlm api gateway, jadi ketika sudah sampai di backend nya tidak perlu divalidasi.
Rate limiter => menjaga backend service performa bagus,
misal backend hanya 2 req/seconds, jika ada 100req.second maka api gateway handle DDOS, brute force.

Orchestrator : API GET (Employee +salary (payroll))
biasanya kita akan menembak 1 sistem HR API kemudian sistem HR nembak ke payroll. Problemnya tiap service ketergantungan, hal ini bisa dicegah dengan API gateway dimana ketika ada request masuk ke API Gateway itu nanti nembak ke 2 endpoint setelah dapat data akan digabungkan dan berikan user/client

Standard API:
- problem ketika data yg didapat tidak konsisten. maka transform data nya bisa di API gateaway. diterima datanya JSON diballikan datanya ke API gateway.

Backend for Frontend
pertanyaannya data sebesar apa, dan waktu responsenya bagaimana ?
bayanging 1 buah service utk tiap jenis client
dibanding dibuat api banyak di tiap servicenya lebih baik kita buat di API gateway, (mobile, gateway, web gateway, thirdparty gateway).
Transform data yg dibutuhkan saja.
GraphQL => ketika get data dari backend jadi client bisa leluasa ngambil data sesuai kebutuhan.

Kekurangan API Gateway, jadi lebih lambat response time krn latency tambhan dari layer API Gateway.

0 comments:

Post a Comment