Оглавление

    Что такое 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. Прежний бэкенд был написан в начале нулевых на 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 — это полноценное, простое и недорогое решение, которое можно использовать во многих проектах. А как и где это возможно могут решить только разработчики.