Middleware — связующее программное обеспечение, упрощающее взаимодействие мобильного приложения с сервером. Он ускоряет работу клиентских приложений, уменьшает зависимость от API и снижает затраты на разработку. Решение о его использовании принимают разработчики, оценивая конкретный проект.
Что такое Middleware?
Разработка мобильных приложений часто предполагает работу с внешними API. Иногда разработчики API не успевают подготовить версию для мобильного приложения вовремя. В таких случаях middleware становится незаменимым инструментом. Он обеспечивает подготовку и отправку статических данных, позволяя разработчикам приложения проверять соединение с сервером и продолжать работу, не ожидая готовности API.
Middleware — промежуточный сервер, выступающий посредником между мобильным приложением и основным сервером (бэкендом). Он снижает зависимость от бэкенда, позволяя не торопиться с его обновлением, и уменьшает нагрузку на мобильный клиент. Помимо решения проблем с API, middleware позволяет объединять различные продукты и системы.
Необходимость Middleware
Рассмотрим ситуации, где использование middleware оправдано:
- Интеграция разных сервисов: Представьте мобильную программу лояльности, объединяющую 8 торговых сетей, каждая со своим интернет-магазином, сервером и форматом данных. Без middleware приложение работало бы медленно, взаимодействуя с восемью различными системами одновременно. Middleware выступает как единая точка доступа, объединяя контент (акции, новости, адреса магазинов и т.д.), обеспечивая единую авторизацию, сквозной поиск, работу реферальной программы, обработку логики клубных статусов, кэширование данных и оповещение об ошибках. Результат — быстрое, стабильное приложение и снижение затрат на разработку и развитие.
- Работа со старым бэкендом: Требуется разработать новую версию мобильного банка на Flutter, а существующий бэкенд устарел (начало 2000-х годов). Полная переработка бэкенда займёт несколько лет. Middleware выступает как «переводчик», связывая новое мобильное приложение с устаревшим бэкендом. Это позволяет постепенно обновлять модули старой системы, не влияя на работу мобильного приложения. Middleware преобразует данные из формата бэкенда в формат, понятный мобильному приложению.
Когда Middleware не нужен?
От промежуточного сервера можно отказаться почти всегда. Однако это часто негативно сказывается на качестве, стоимости и сроках разработки. Middleware, вероятно, не нужен в следующих случаях:
- Высоконагруженное приложение с развитой инфраструктурой.
- Наличие работающей и гибко дорабатываемой серверной части и команды разработчиков.
Плюсы и минусы Middleware
Преимущества:
- Уменьшение веса приложения и повышение производительности (плавные анимации, быстрая загрузка).
- Минимальная зависимость от бэкенда.
- Отсутствие проблем из-за неготовности API или необходимости переделки старого бэкенда.
- Возможность связывания с новыми бэкендами без влияния на пользователей.
- Простота и удобство развёртывания и логирования ошибок.
- Простая и понятная документация.
- Использование собственных наработок в сетевой части приложения.
Недостатки:
- Middleware не может работать быстрее исходного API.
- Не защищает от багов в бизнес-логике исходного приложения.
- Не всегда очевиден источник ошибки: проблема может быть как на стороне сервера, так и в самом middleware.
- Middleware может работать как «чёрный ящик» без надлежащей документации.
Разработка Middleware
Разработка middleware схожа с разработкой любого другого программного продукта:
- Сбор информации и анализ работы приложения и API.
- Оценка технической возможности реализации middleware.
- Согласование с фронт-энд командой формата данных.
- Написание кода.
- Тестирование и запуск сервера.
Стоимость и сроки разработки зависят от размера и состояния приложения. Однако, запуск простого middleware обычно дешевле, чем приведение в порядок исходного API.
Middleware — простое и недорогое решение, эффективно используемое во многих проектах. Решение о его применении принимают разработчики, оценивая специфику проекта.