Please enable JavaScript.
Coggle requires JavaScript to display documents.
Глава 8. Шаблоны внешних API - Coggle Diagram
Глава 8. Шаблоны внешних API
Проблемы проектирования API
Разнородные клиенты с разной латентностью
Мелко раздробленные API провоцируют несколько вызовов для решения одной задачи и берут роль API-композитора
Для мобильного приложения на каждый сетевой запрос тратится батарея устройства
Недостаточная инкапсуляция требует синхронного обновления на сервере и клиенте
Сервисы могут использовать протоколы, плохо совместимые с клиентом
Шаблон API-шлюз
Сервис, который служит точкой входа в микросервисное приложение для клиентов внешнего API
Похож на шаблон Фасад, тк инкапсулирует внутреннюю архитектуру приложения
Преимущества API-шлюза
Маршрутизация запросов (nginx)
Объединение API
Преобразование протоколов
Возможность предоставить каждому клиенту отдельный апи
Реализация граничных функций - на границе приложения. Авторизация, аутентификация, rate limit, кэш, мониторинг
Архитектура
Двухуровневая модульная архитетура: апи + общий уровень для граничных функций
Владение: либо команда шлюза, либо по шаблону BFF (backends for frontends), когда каждый апи-модуль является отдельным апи шлюзом, который разрабатывается и администрируется одной клиентской командой
Недостатки
Ещё один компонент
Может начать тормозить разработку
Процесс обновления должен быть максимально легковесным
Проектирование
Выбор между синхронным и асинхронным взаимодействием
Реактивное программирование - логика объединения апи по возможности должна обращаться к сервисам параллельно
Правильная обработка запросов, которые завершились неудачей (н-р таймаут "шаблон предохранитель")
Реализация
Готовые решения: aws api gateway, kong на основе nginx
Разработка своего решения на базе Netflix Zuul / Spring Cloud Gateway