Salah satu contoh API gateway yang dapat dipakai adalah Tyk gateway. Ini merupakan software open source yang dapat digunakan secara gratis, free, walaupun dengan beberapa limitasi. Sistem gateway dengan menggunakan Tyk Gateway dapat berjalan dengan baik dengan cukup memerlukan Redis untuk menyimpan hal-hal seperti perhitungan rate limit counter untuk request.

<aside> 💡 Tyk API Gateway dan Redis merupakan open source software yang memiliki jenis lisensi yang mudah digunakan secara gratis. Sistem di atas merupakan versi minimal agar Tyk API Gateway dapat berjalan.
</aside>
Dalam hal ini, instalasi akan dilakukan dengan menggunakan Docker untuk mempermudah prosesnya.
$ docker network create tyk
Perintah berikut akan melakukan pull image terlebih dahulu jika di local belum ada. Sehingga tidak perlu docker pull image Redis terlebih dahulu.
$ docker run -itd --rm --name redis --network tyk -p 127.0.0.1:6379:6379 redis:4.0-alpine
$ wget <https://raw.githubusercontent.com/TykTechnologies/tyk-gateway-docker/master/tyk.standalone.conf>
$ docker run \\
--name tyk_gateway \\
--network tyk \\
-p 8080:8080 \\
-v $(pwd)/tyk.standalone.conf:/opt/tyk-gateway/tyk.conf \\
-v $(pwd)/apps:/opt/tyk-gateway/apps \\
docker.tyk.io/tyk-gateway/tyk-gateway:latest
Dalam hal ini, akan ada mounting agar Docker container Tyk API Gateway dapat menggunakan config yang kita simpan di OS kita.
<aside> 🧐 Jika mendapatkan log error:
level=error msg="Redis health check failed" error="storage: Redis is either down or was not configured" liveness-check=true prefix=main
bisa diabaikan dulu agar bisa lanjut ke bagian selanjutnya, jika ingin mencoba di-debug silakan 🙏.
</aside>
Dalam instalasi minimal Tyk ini, API dapat didaftarkan ke gateway dengan mengirimkan konfigurasi API via API yang disediakan Tyk Gateway. Untuk selanjutnya konfigurasi API ini disebut dengan API definition. Ini adalah terminologi yang digunakan oleh Tyk. Berikut ini contoh potongan API definition (dalam ekstensi .json) yang dapat didaftarkan di gateway.
{
"name": "Hello-World",
...
"proxy": {
"listen_path": "/hello-world/",
"target_url": "<http://echo.tyk-demo.com:8080/>",
"strip_listen_path": true
},
"active": true
}