Middleware: Дешевле разрабатывать мобильные приложения

Middleware — связующее программное обеспечение, упрощающее взаимодействие мобильного приложения с сервером. Он ускоряет работу клиентских приложений, уменьшает зависимость от API и снижает затраты на разработку. Решение о его использовании принимают разработчики, оценивая конкретный проект.

Что такое Middleware?

Разработка мобильных приложений часто предполагает работу с внешними API. Иногда разработчики API не успевают подготовить версию для мобильного приложения вовремя. В таких случаях middleware становится незаменимым инструментом. Он обеспечивает подготовку и отправку статических данных, позволяя разработчикам приложения проверять соединение с сервером и продолжать работу, не ожидая готовности API.

Middleware — промежуточный сервер, выступающий посредником между мобильным приложением и основным сервером (бэкендом). Он снижает зависимость от бэкенда, позволяя не торопиться с его обновлением, и уменьшает нагрузку на мобильный клиент. Помимо решения проблем с API, middleware позволяет объединять различные продукты и системы.

Необходимость Middleware

Рассмотрим ситуации, где использование middleware оправдано:

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

Когда Middleware не нужен?

От промежуточного сервера можно отказаться почти всегда. Однако это часто негативно сказывается на качестве, стоимости и сроках разработки. Middleware, вероятно, не нужен в следующих случаях:

  • Высоконагруженное приложение с развитой инфраструктурой.
  • Наличие работающей и гибко дорабатываемой серверной части и команды разработчиков.

Плюсы и минусы Middleware

Преимущества:

  1. Уменьшение веса приложения и повышение производительности (плавные анимации, быстрая загрузка).
  2. Минимальная зависимость от бэкенда.
  3. Отсутствие проблем из-за неготовности API или необходимости переделки старого бэкенда.
  4. Возможность связывания с новыми бэкендами без влияния на пользователей.
  5. Простота и удобство развёртывания и логирования ошибок.
  6. Простая и понятная документация.
  7. Использование собственных наработок в сетевой части приложения.

Недостатки:

  1. Middleware не может работать быстрее исходного API.
  2. Не защищает от багов в бизнес-логике исходного приложения.
  3. Не всегда очевиден источник ошибки: проблема может быть как на стороне сервера, так и в самом middleware.
  4. Middleware может работать как «чёрный ящик» без надлежащей документации.

Разработка Middleware

Разработка middleware схожа с разработкой любого другого программного продукта:

  1. Сбор информации и анализ работы приложения и API.
  2. Оценка технической возможности реализации middleware.
  3. Согласование с фронт-энд командой формата данных.
  4. Написание кода.
  5. Тестирование и запуск сервера.

Стоимость и сроки разработки зависят от размера и состояния приложения. Однако, запуск простого middleware обычно дешевле, чем приведение в порядок исходного API.

Middleware — простое и недорогое решение, эффективно используемое во многих проектах. Решение о его применении принимают разработчики, оценивая специфику проекта.

Что будем искать? Например,программа