Praktik Terbaik untuk Membangun API yang Andal

Navendu Pottekkat

Navendu Pottekkat

August 18, 2022

Technology

Saat API Anda berkembang, kebutuhan untuk membuatnya andal dan kuat semakin meningkat.

Artikel ini membahas praktik terbaik untuk membangun API yang andal dengan memperkenalkan jenis khusus dari reverse proxy yang disebut API gateway.

Kita akan membahas:

  1. Masalah dengan desain API tradisional
  2. Apa itu API gateway
  3. Bagaimana API gateway meningkatkan API dan
  4. Pola dan contoh penggunaan API gateway

Tapi pertama-tama, apa itu API yang "andal"?

Apa yang Membuat API Andil?

Sebagai penyedia layanan, Anda mungkin memiliki perjanjian tingkat layanan (SLA) dengan pelanggan Anda, biasanya dinyatakan dalam uptime—jumlah waktu layanan dijamin untuk tetap online dan beroperasi.

Uptime adalah pandangan yang sempit tentang keandalan. Untuk memahami apa artinya andal, Anda harus melihat faktor-faktor yang memengaruhi uptime. Setelah Anda memahami faktor-faktor ini, Anda akan berada dalam posisi yang lebih baik untuk membangun layanan yang andal.

Mari kita lihat faktor-faktor ini dan pertanyaan yang mereka ajukan:

  1. Latensi: Seberapa cepat API Anda merespons permintaan?
  2. Keamanan: Siapa yang dapat mengakses API Anda? Apakah aman?
  3. Frekuensi Downtime: Seberapa sering API Anda mengalami downtime?
  4. Konsistensi: Apakah endpoint API Anda tetap? Apakah konsumen perlu sering mengubah kode mereka?
  5. Pemantauan dan Pelaporan: Dapatkah Anda mengamati masalah dan kegagalan dalam API Anda? Apakah Anda melaporkannya kepada konsumen Anda?

network error/api.png

Saat organisasi beralih ke arsitektur cloud-native, menjadi sulit bagi tim pengembangan untuk memperhitungkan faktor-faktor ini pada setiap layanan mereka. Dan saat sistem ini berkembang, akan jauh lebih mudah untuk mendelegasikan tanggung jawab ini ke sistem tunggal yang terpisah. Mari berkenalan dengan API gateway!

API Gateway, Pintu Masuk Terpadu

Sebuah API gateway bertindak sebagai perantara antara klien Anda dan API Anda. Ini akan menerima semua lalu lintas (panggilan API) seperti reverse proxy, meneruskan permintaan ke layanan yang diperlukan di backend Anda, dan mengembalikan hasil yang dibutuhkan.

network error/api gateway.png

API gateway dapat menjadi titik pusat yang menangani semua masalah autentikasi, keamanan, kontrol lalu lintas, dan pemantauan, sehingga memungkinkan pengembang API untuk fokus pada kebutuhan bisnis dan membuatnya lebih mudah untuk meningkatkan keandalan.

network error/api gateway reliability.png

Ada banyak penawaran API gateway open source dan managed yang tersedia. Dalam artikel ini, saya akan menggunakan Apache APISIX.

Bagian berikut akan menjelaskan beberapa praktik terbaik untuk membuat API Anda andal menggunakan API gateway.

Praktik Terbaik Keandalan dengan API Gateway

Kita akan lebih fokus pada pola yang mendasarinya daripada implementasi aktual, karena ini dapat bervariasi berdasarkan pilihan API gateway Anda.

Saya akan membagi pola ini menjadi tiga kategori:

  1. Autentikasi dan keamanan
  2. Pemantauan dan observabilitas
  3. Kontrol versi dan zero downtime

Kita akan membahas setiap kategori secara detail di bawah ini.

Autentikasi dan Keamanan

Autentikasi Pengguna

Permintaan yang diautentikasi dengan API gateway mengamankan interaksi klien-API. Setelah klien diautentikasi, API gateway Anda dapat menggunakan detail klien yang diperoleh untuk kontrol yang lebih terperinci.

network error/user authentication.png

APISIX menangani autentikasi langsung melalui plugin seperti key-auth dan jwt-auth. APISIX juga mendukung autentikasi OAuth dan sistem kontrol akses berbasis peran seperti wolf melalui plugin seperti openid-connect dan wolf-rbac, masing-masing.

Pembatasan Laju

Lonjakan lalu lintas yang disengaja (serangan DoS) dan tidak disengaja (klien membuat terlalu banyak permintaan) ke API Anda dapat membuatnya jatuh seperti rumah kartu. Menyiapkan pembatasan laju akan meningkatkan keandalan sistem Anda dalam menangani skenario seperti itu.

Anda dapat menyiapkan pembatasan laju pada API gateway Anda, dan jika jumlah permintaan meningkat di atas ambang batas, API gateway dapat menunda atau menolak permintaan yang melebihi batas.

network error/rate limiting.png

Dengan APISIX, Anda dapat menggunakan salah satu dari tiga plugin untuk mengonfigurasi batas laju berdasarkan jumlah permintaan, jumlah permintaan bersamaan per klien, dan hitungan (limit-req, limit-conn, limit-count).

Pemantauan dan Observabilitas

Keandalan API Anda dan pengaturan pemantauan Anda berjalan beriringan. Dan Anda dapat memantau metrik keandalan Anda dengan menyiapkan pemantauan pada API gateway Anda.

network error/monitoring and observability.png

Log API dan jejak memberikan informasi detail tentang panggilan API. Informasi ini akan membantu Anda mengetahui kapan API Anda gagal atau mengalami kesalahan sesegera mungkin. Kegagalan diam-diam menyebabkan kesalahan yang tidak diperbaiki yang dapat menyebabkan masalah di masa depan.

Dengan beberapa konfigurasi, Anda juga akan dapat memprediksi dan mengantisipasi lalu lintas untuk masa depan, membantu Anda untuk berkembang dengan andal.

APISIX memiliki plugin yang terintegrasi dengan platform/spesifikasi logging (Apache SkyWalking, RocketMQ), metrik (Prometheus, Datadog), dan tracing (OpenTelemetry, Zipkin). Anda dapat membaca lebih lanjut tentang Observabilitas API dengan Plugin APISIX.

Kontrol Versi dan Zero Downtime

Rilis Canary

Saat beralih ke versi baru API Anda, Anda harus memastikan bahwa Anda tidak kehilangan lalu lintas Anda. Klien harus tetap dapat membuat permintaan ke API Anda dan mendapatkan respons yang benar.

Dengan API gateway, Anda dapat menyiapkan rilis canary. Ini akan memastikan bahwa API Anda tetap berfungsi selama transisi, dan Anda juga dapat kembali ke versi lama jika ada masalah.

Awalnya, API gateway akan mengarahkan semua lalu lintas ke versi lama API Anda.

network error/old version.png

Ketika Anda memiliki versi baru, Anda dapat mengonfigurasi API gateway untuk mengarahkan sebagian lalu lintas Anda ke versi baru ini. Anda dapat terus meningkatkan persentase lalu lintas ke layanan baru Anda dan memeriksa apakah semuanya berfungsi seperti yang diharapkan.

network error/canary release.png

Akhirnya, Anda dapat mengarahkan semua lalu lintas ke API baru Anda.

network error/new API

APISIX menggunakan plugin traffic-split yang memungkinkan Anda mengontrol lalu lintas ke layanan Anda. Anda dapat menggunakannya untuk menyiapkan rilis canary atau konfigurasi rilis kustom Anda.

Circuit Breaking

Ketika salah satu layanan upstream Anda tidak tersedia atau mengalami latensi tinggi, itu perlu diputus dari sistem Anda. Jika tidak, klien akan terus mencoba permintaan, yang mengakibatkan kelelahan sumber daya. Kegagalan ini dapat merambat ke layanan lain dalam sistem Anda dan membuatnya jatuh.

Seperti bagaimana pemutus sirkuit listrik mengisolasi komponen yang rusak dari sirkuit, API gateway memiliki fitur circuit breaker yang memutus layanan yang rusak, menjaga sistem tetap sehat. Lalu lintas ke layanan ini dialihkan atau ditunda sampai layanan menjadi sehat.

network error/circuit breaking.png

APISIX dilengkapi dengan plugin api-breaker yang mengimplementasikan pola ini.

Pengalihan

Saat Anda memperbarui API Anda, endpoint mereka mungkin mengalami beberapa perubahan. Secara tradisional, ini berarti bahwa aplikasi klien harus mengirim permintaan ke /new-api-endpoint alih-alih /old-api-endpoint, yang berarti konsumen Anda harus secara manual mengubah setiap panggilan ke endpoint API ini.

Jika tidak diantisipasi, ini dapat merusak aplikasi klien.

Dengan API gateway, Anda dapat menyediakan lapisan abstraksi dan mengalihkan permintaan ke /new-api-endpoint tanpa mengharuskan klien mengubah permintaan mereka. Dengan kode status dan pesan pengalihan yang tepat, Anda dapat secara bertahap menghapus /old-api-endpoint tanpa konsumen Anda mengalami downtime.

network error/redirect.png

Dengan APISIX, Anda dapat menggunakan plugin redirect untuk mengonfigurasi pengalihan.

Kesimpulan

Ketika keandalan menjadi perhatian utama, jelas bahwa API gateway diperlukan karena semakin banyak organisasi yang memecah monolit mereka menjadi mikrolayanan dan beralih ke arsitektur cloud-native.

Namun, ini tidak berarti bahwa API gateway cocok untuk semua orang. Bergantung pada ukuran dan penggunaan API Anda, API gateway mungkin berlebihan, dan Anda dapat menggunakan reverse proxy dengan kemampuan routing dan load balancing dasar.

Kasus penggunaan yang disebutkan di sini hanya menggores permukaan dari kemampuan API gateway. Anda dapat mempelajari lebih lanjut tentang API gateway dan Apache APISIX di apisix.apache.org.

Tags: