Mengapa 'agregasi' tidak didukung di sebagian besar solusi API Gateway?

16

Saat membaca tentang API Gateway, salah satu hal yang muncul setiap saat adalah bahwa API Gateway adalah tempat di mana Anda harus mengumpulkan hasil dari beberapa titik akhir. Kedengarannya sangat bagus. Namun, banyak solusi API Gateway populer seperti AWS API Gateway, Kongo, dan Netflix Zuul tidak mendukung fitur tersebut. Anda perlu meretasnya atau menerapkan filter khusus sendiri.

Apakah agregasi dianggap sebagai praktik yang buruk? Bagaimana orang mengembalikan hasil dari beberapa titik akhir?

Bulan
sumber

Jawaban:

11

Ada beberapa cara yang dapat dijawab pertanyaan ini:

Agregasi titik akhir

Gateway Gateways sebagian besar mengumpulkan titik akhir lainnya, belum tentu hasilnya. Yaitu, ini adalah server tunggal yang mungkin mencerminkan titik akhir lainnya dengan beberapa fungsi tambahan, seperti otentikasi, atau perutean.

Intinya adalah memusatkan beberapa layanan, menyembunyikan server yang sebenarnya dari jaringan luar, dll.

Agregasi hasil

Jika Anda benar-benar ingin memiliki logika bisnis di Gateway, menarik dokumen yang berbeda bersama-sama ke dokumen lain, atau hanya mengubah permintaan atau tanggapan, Anda mungkin sedang melihat Bus Layanan Perusahaan .

Apakah agregasi itu baik atau tidak

Ini tentu saja bisa diperdebatkan, dan tergantung pada pendapat individu. Orang mungkin berpendapat, bahwa ada alasan kami (kebanyakan) menjauh dari solusi tipe SOA / ESB. Alasan ini mungkin karena tanggung jawab individu tidak jelas dan akan cenderung untuk mengumpulkan pada sisi ESB, meninggalkan titik akhir "bodoh". Akhirnya menghasilkan ESB mengetahui segalanya.

Pendekatan "REST" berbeda. Itu dibangun di atas titik akhir "pintar", mengetahui bagian mereka, dan memastikan tidak ada komponen lain yang perlu mengetahui detailnya. Gagasan ini sendiri tampaknya bertentangan dengan membuat Gateway mengetahui lebih banyak tentang responsnya .

Memang, ada beberapa ide arsitektur, seperti Self-Contained Systems , yang dibangun di atas gagasan itu, bahwa fungsi apa pun yang dibutuhkan klien Anda harus ditutupi sepenuhnya oleh titik akhir yang diberikan. Ini seharusnya tidak perlu komunikasi yang sinkron dengan orang lain untuk memenuhi permintaan di daerah sendiri tanggung jawab. Ini juga menunjukkan bahwa hasil agregasi mungkin kontraproduktif.

Seperti biasa, itu semua tergantung pada persyaratan yang tepat.

Robert Bräutigam
sumber