Что такое middleware? Как с его помощью снизить стоимость и сроки разработки мобильных приложений
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 сервер выступает как переводчик с языков бэкендов на язык мобильного приложения, а также нормализует данные — приводит их к нужному формату.
Почитать подробнее об этом кейсе.
В каком случае можно обойтись без middleware
На практике обойтись без промежуточного сервера можно почти всегда, но зачастую это негативно скажется на качестве работы, стоимости и сроках. В каких проектах лучше обойтись без middleware:
- Высоконагруженное приложение с большой инфраструктурой. Исключение — у проекта есть много устаревшего кода, а менять его нет времени или возможности.
- У проекта есть работающая серверная часть и команда разработки, которая может гибко ее дорабатывать
В любом случае, middleware — вопрос сугубо для разработчиков, поэтому принимать решение о его необходимости должны именно они. Это похоже на поиск диагноза в интернете: в статье мы можем дать только основные ориентиры, а правильный и исчерпывающий ответ — при личном общении.
Middleware: плюсы и минусы
Преимущества middleware:
- Уменьшается вес приложения и повышается его производительность — плавные анимации, высокая скорость загрузки.
- Зависимость от API заказчика сводится практически к нулю — нужно работать только на сервере шины.
- Отсутствуют простои из-за неготовности API или необходимости переделывать старый бэкенд. Но когда API будет закончено, его все равно придется проверить.
- На одном из проектов мы связали его с новым бэкендом, поэтому изменения в старых модулях не затрагивали пользователей.
- Простота и удобство: можно с легкостью развернуть сколько угодно серверов и логировать все сетевые ошибки.
- Документация middleware привычна и понятна для ваших сотрудников, потому что ее ведете вы сами.
- Можно использовать свои наработки в сетевой части приложения.
Недостатки middleware:
- Он не может работать быстрее исходного API. Поэтому API необходимо для максимального быстродействия приложения.
- Middleware не защищает от багов в бизнес-логике исходного приложения.
- В случае обнаружения бага на сервере не всегда понятен его источник. Чаще всего проблема на стороне сервера, но в первую очередь проводится изучение middleware.
- Исходное API для разработчиков middleware работает как черный ящик, если документация к нему неверна или неполноценна.
Несмотря на недостатки, middleware снижает затраты на разработку и развитие проекта: снижаются риски простоя, ускоряется процесс разработки, избегается работа над сложной серверной частью. Выгоду получают все: разработчик предлагает выгодную цену и выигрывает тендер, заказчик экономит, а пользователи рады стабильной работе приложения и ставят ему хорошие оценки в сторах.
Сколько стоит разработать middleware?
Подход к разработке middleware в целом не отличается от любого другого программного продукта:
- Собираем информацию: анализируем работу приложения и API. Если есть доступ к исходным файлам, смотрим их.
- Смотрим, есть ли техническая возможность реализовать middleware. Если API отсутствует полностью, сделать его не получится.
- Согласовываем API с фронтенд-отделом: что они хотят получить и с чем они хотят работать.
- Пишем код.
- Ищем баги и понимаем сервер в среде заказчика.
Как и для мобильного приложения, здесь сложно указать даже вилку цен: сроки и стоимость разработки сильно зависят от размера и состояния приложения. Единственное, что можно сказать точно — поднять промежуточный сервер дешевле, чем привести в порядок исходный API.
Вывод
Middleware — это полноценное, простое и недорогое решение, которое можно использовать во многих проектах. А как и где это возможно могут решить только разработчики.