Оглавление

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

Middleware — что это?

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

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

2 кейса, когда вам точно нужен middleware

Мы в Surf неоднократно сталкивались с ситуацией, когда использование middleware идет на пользу проекту. Приведем пример таких проектов.

Создание единой точки интеграции для 8 разных CMS: кейс «Ещё»

«Ещё» — мобильная программа лояльности, которая объединяет восемь торговых сетей.

У каждого бренда свой интернет-магазин, отдельный сервер и формат данных. Если приложение будет работать одновременно с восемью сайтами, о молниеносном и плавном интерфейсе можно забыть.

Мы создали прослойку между сайтами и мобильным приложением, которая берет на себя всю техническую работу.

Что делает middleware:

  • объединяет контент из восьми разных CMS: все акции, новости, блоги, видео, адреса магазинов и схемы их расположения в ТЦ;
  • дает единую точку авторизации для пользователей;
  • обеспечивает сквозной поиск по всем брендам;
  • обеспечивает работу реферальной программы, позволяет начислять баллы за установку;
  • обрабатывает логику работы клубных статусов: базовый, продвинутый, экспертный;
  • кэширует данные для супер-быстрых ответов.
  • обеспечивает безотказную работу этой сложной системы: в удобном формате логирует сетевые ошибки и оповещает о них.

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

Middleware в условиях сжатых сроков: кейс «Росбанка»

«Росбанк» пришел в Surf с запросом на новую версию мобильного банка на технологии Flutter. Используемый бэкенд был очень старым, и разрабатывать его с нуля не позволяли сроки — на это ушло бы несколько лет. Поэтому мы разработали middleware-сервер: прослойку, которая связывает новое мобильное приложение со старым и новым бэкендом.

Решение позволило переписывать модули старой автоматизированной банковской системы (АБС) постепенно — и без влияния на работу мобильного клиента.

Схема работы middleware. Прежний бэкенд был написан в начале нулевых на Burlap: теперь это уже устаревший XML-протокол. Новое мобильное приложение работает с JSON

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

Почитать подробнее об этом кейсе.

В каком случае можно обойтись без middleware

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

  1. Высоконагруженное приложение с большой инфраструктурой. Исключение — у проекта есть много устаревшего кода, а менять его нет времени или возможности.
  2. У проекта есть работающая серверная часть и команда разработки, которая может гибко ее дорабатывать

В любом случае, middleware — вопрос сугубо для разработчиков, поэтому принимать решение о его необходимости должны именно они. Это похоже на поиск диагноза в интернете: в статье мы можем дать только основные ориентиры, а правильный и исчерпывающий ответ — при личном общении.

Middleware: плюсы и минусы

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

  1. Уменьшается вес приложения и повышается его производительность — плавные анимации, высокая скорость загрузки.
  2. Зависимость от API заказчика сводится практически к нулю — нужно работать только на сервере шины.
  3. Отсутствуют простои из-за неготовности API или необходимости переделывать старый бэкенд. Но когда API будет закончено, его все равно придется проверить.
  4. На одном из проектов мы связали его с новым бэкендом, поэтому изменения в старых модулях не затрагивали пользователей.
  5. Простота и удобство: можно с легкостью развернуть сколько угодно серверов и логировать все сетевые ошибки.
  6. Документация middleware привычна и понятна для ваших сотрудников, потому что ее ведете вы сами.
  7. Можно использовать свои наработки в сетевой части приложения.

Недостатки middleware:

  1. Он не может работать быстрее исходного API. Поэтому API необходимо для максимального быстродействия приложения.
  2. Middleware не защищает от багов в бизнес-логике исходного приложения.
  3. В случае обнаружения бага на сервере не всегда понятен его источник. Чаще всего проблема на стороне сервера, но в первую очередь проводится изучение middleware.
  4. Исходное API для разработчиков middleware работает как черный ящик, если документация к нему неверна или неполноценна.

Несмотря на недостатки, middleware снижает затраты на разработку и развитие проекта: снижаются риски простоя, ускоряется процесс разработки, избегается работа над сложной серверной частью. Выгоду получают все: разработчик предлагает выгодную цену и выигрывает тендер, заказчик экономит, а пользователи рады стабильной работе приложения и ставят ему хорошие оценки в сторах.

Сколько стоит разработать middleware?

Подход к разработке middleware в целом не отличается от любого другого программного продукта:

  1. Собираем информацию: анализируем работу приложения и API. Если есть доступ к исходным файлам, смотрим их.
  2. Смотрим, есть ли техническая возможность реализовать middleware. Если API отсутствует полностью, сделать его не получится.
  3. Согласовываем API с фронтенд-отделом: что они хотят получить и с чем они хотят работать.
  4. Пишем код.
  5. Ищем баги и понимаем сервер в среде заказчика.

Как и для мобильного приложения, здесь сложно указать даже вилку цен: сроки и стоимость разработки сильно зависят от размера и состояния приложения. Единственное, что можно сказать точно — поднять промежуточный сервер дешевле, чем привести в порядок исходный API.

Вывод

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

Автор статьи:
Артём Зайцев

Руководитель Flutter разработки в Surf