Интеграция
Проблемы интеграции
Расходятся названия ключей
Может расходится структура данных
Расхождение типов запросов
Чего мы хотим во время интеграции?
Плавный переезд
Максимальное отсутствие боли
Процесс переезда не должен ломать текущие задачи
Минимальное количество багов
Минимальное количество конфликтов в коде
Возможные пути интеграции
Поправить все на бэке
Создать отдельную версию апи для фронта (с маппингом и блэкджэком)
Перепилить фронт (поменять все ключи, форматы дат, структуру данных)
Создать абстракцию над апи на фронте
Создать прослойку в виде микросервиса
Плюсы
Никаких лишних прослоек
Минусы
Высокая связанность и динамическая типизация, строковые шаблоны = адская боль
Изменения в одном месте влекут множественные изменения в других местах
Большое кол-во конфликтов
Поправить ВСЕ на фронте
Плюсы
Теоретическая возможность переключания между апи.
Возможность маппинга сущностей на фронте
Минусы
Уже созданные абстракции
Плохая поддержка со стороны IDE.
Лишний код в рантайме, в итоговом бандле.
Абстракиця над апи на фронте
Плюсы
Опыт написания подобных микросервисов
Статическая типизация = мощная поддержка со стороны IDE
Swagger
Возможность переключения на GraphQL
Удобное тестирование.
Бесшовный переезд для фронта
Отсутствие пересечений кода разных разработчиков
Независимость от структуры данных
Наличие микросервиса со всеми необходимыми эндпоинтами
Минусы
Необходимость тестирования как фронта так и прослойки
Поддержка микросервиса
Прослойка микросервис
Как сейчас?
Что будет если выберем микросервисную прослойку?
Как будет происходить переезд?
Произведем рефакторинг код стайла на мок сервисе
Прикрутим swagger для понимания текущих требований со стороны фронтэнда
Перейдем на controller - service подход
Прикрутим механизм маппинга данных
Модульно начнем проксировать запросы на PHP
Постепенно откажимся от мок данных
Напишем тесты
Еще о плюсах этого подхода
На время переезда будет сохранена работа фронтэнда.
Никаких изменений на шаткой стороне динамической типизации на фронте.
Возможность "дергать" другие микросервисы
Статическая типизация, поддержка со стороны IDE, swagger
Понятная логика и структура данных для новичков на фронте
Один запрос на микросервис может быть собран из нескольких составляющих, запросы по локальному подключению на HTTP 2.0 очень быстры
Made with Slides.com