Чому "агрегація" не підтримується в більшості рішень API шлюзу?


16

Читаючи про шлюз API, одне з речей, що з'являються щоразу, - це те, що шлюз API - це місце, де слід зібрати результати з кількох кінцевих точок. Це звучить дійсно приємно. Однак багато популярних рішень API шлюзу, такі як AWS API Gateway, Kongo та Netflix Zuul, не підтримують таку функцію. Вам потрібно зламати його або впровадити власний фільтр самостійно.

Чи вважається агрегація поганою практикою? Як люди повертають результат з кількох кінцевих точок?

Відповіді:


11

На це питання можна відповісти декількома способами:

Агрегація кінцевих точок

Шлюзи API в основному агрегують інші кінцеві точки, не обов'язково їх результати. Тобто це єдиний сервер, який може відображати інші кінцеві точки з деякими додатковими функціональними можливостями, такими як аутентифікація або маршрутизація.

Сенс у тому, щоб централізувати деякі сервіси, приховати фактичні сервери від зовнішньої мережі тощо.

Агрегація результатів

Якщо ви дійсно хочете мати ділову логіку на шлюзі, підтягуючи різні документи до іншого документа або просто змінюючи запити чи відповіді, ви можете подивитися на Enterprise Service Bus .

Чи добре, чи агрегація

Це, звичайно, дискусійне, і до окремих думок. Можна стверджувати, що є причина, по якій ми віддалилися (в основному) від рішень типу SOA / ESB. Ця причина може бути через те, що окремі обов'язки не були чіткими, і вони, як правило, збираються на стороні ESB, залишаючи кінцеві точки "тупими". Врешті-решт, в результаті ESB все знає.

Підхід "REST" відрізняється. Він ґрунтується на «розумних» кінцевих точках, знаючи їхню частину та переконуючись, що жодним іншим компонентам не потрібно знати жодної деталі. Ця ідея сама по собі, здається, суперечить тому, щоб Шлюз дізнався більше про відповіді .

Дійсно, є деякі ідеї архітектури, як - от Self-Conced Systems , які ґрунтуються на ідеї, що будь-яка функція, яка потрібна вашому клієнту, повинна повністю покриватися заданою кінцевою точкою. Це НЕ потрібно синхронна зв'язок з іншими , щоб виконати запит у своїй сфері відповідальності. Це також говорить про те, що агрегування результатів може бути контрпродуктивним.

Як завжди, все залежить від точних вимог.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.