Рассказываем, что такое Middleware, как мы прокачали Tarantool от Cache до Middleware и когда будет полезен Tarantool с новыми возможностями.
Что такое Middleware
Middleware — программный слой между фронтендом и бэкендом приложения, который обеспечивает коммуникацию и взаимодействие между ними. Например, Middleware может связывать мобильное приложение с базой данных.
Работа Middleware основана на принципе клиент-серверной архитектуры. Клиентские приложения отправляют запросы на серверы через Middleware-слой, который обрабатывает эти запросы и возвращает результаты обратно клиентам. Middleware может использовать разные протоколы и технологии для обмена данными — например, HTTP, SOAP, REST.
Middleware подходит для задач разного спектра.
- Управление подключением к внутренним ресурсам. Middleware может создать пул одновременных соединений с базами данных, очередями сообщений, облачными ресурсами и другими Core-системами. Как результат, скорость обработки запросов и стабильность подключений увеличиваются.
- Реализация бизнес-логики. Middleware может реализовывать логику на основе клиентских запросов. Например, может определить геолокацию отправителя запроса по IP и отдать приоритет результатам поиска, которые ближе географически. Или распознавать язык, установленный в клиентском браузере, и выдавать ответы только на этом языке.
- Балансировка нагрузки. Middleware помогает распределять запросы по серверам, виртуальным машинам или зонам доступности в облаке. Также программный слой позволяет решить проблемы при параллельной обработке запросов — например, исключает конфликты, когда несколько клиентов одновременно обращаются к одному ресурсу.
- Обеспечение безопасного доступа. Middleware-решения можно задействовать для аутентификации пользователей, управления доступом, шифрования данных, мониторинга безопасности и других кейсов, оставляя всю механику в промежуточном слое, то есть изолируя риски от Core-систем.
Исходя из кейсов использования, Middleware делят на несколько типов. К часто используемым относят программный слой для:
- обмена сообщениями (Messaging Middleware) — упрощает обмен данными между распределенными приложениями и сервисами;
- удаленного вызова процедур (Remote Procedure Call Middleware) — предоставляет протокол, который позволяет запрашивать сервис другого приложения программы, расположенного на другом компьютере или в другой сети;
- транзакций (Transaction Middleware) — обеспечивает переход транзакций из одной фазы в следующую посредством мониторинга процесса транзакций;
- интеграций (Embedded Middleware) — облегчает взаимодействие и интеграцию между встроенными приложениями и Real-time-системами;
- данных (Middleware for data) — обеспечивает прямой доступ к базам данных и взаимодействие с ними.
Движение Tarantool от Cache
Tarantool появился в 2008 году как инструмент для проекта «МойМир@Mail.ru». Технология In-memory позволила снять часть нагрузки с железа, снизить стоимость хранения данных.
Tarantool прошел долгий путь эволюции:
- Сначала это был In-memory кэш, который мало отличался от memCached.
- Для нивелирования недостатков, характерных для холодного кэша, мы сделали Tarantool персистентным.
- Далее мы реализовали поддержку репликации, добавили индексы и Lua-функции.
Сегодня Tarantool — решение класса Middleware for data, с помощью которого можно создать промежуточной слой для управления движением данных, ускорения цифровых сервисов и снижения нагрузки на Core-cистемы. Tarantool сочетает в себе сервер приложений, гибридное хранилище с гибкой схемой данных и мощные средства масштабирования.
Фактически Tarantool встраивается между Core-системой (например, Legacy-решением) и третьими сервисами. Это позволяет без изменения архитектуры Core-систем ускорять обработку данных и получать горячий кэш в необходимых решениях, будь то золотая запись, процессинг или витрины данных.
Почему мы позиционируем Tarantool в качестве решения класса Middleware for data:
- Модульность. Tarantool Enterprise поддерживает большое количество модулей, что позволяет легко настраивать его по принципу конструктора под разные сценарии использования.
- Расширенные возможности. Tarantool сочетает функции СУБД и сервера приложений. Он предлагает средства для хранения и обработки данных, позволяя разработчикам эффективно работать с большими объемами информации. В то же время решение дает возможность разрабатывать и развертывать приложения непосредственно внутри БД.
- Поддержка разных форматов. Инструмент поддерживает разные модели данных, такие как ключ-значение, графы и документы, независимо от структурированности самих данных. Как результат, Tarantool может быть использован в разных сценариях работы с данными — от простых операций поиска и обновления до сложных аналитических запросов и манипуляций с графовыми структурами данных.
- Совместимость и интегрируемость. Tarantool имеет поддержку MySQL, PostgreSQL и других БД, что позволяет разработчикам использовать его для создания высокопроизводительных приложений. Более того, Tarantool легко интегрируется с другими системами, в том числе с инструментами для управления проектами и мониторинга, что позволяет создавать комплексные решения для обработки данных.
- Масштабируемость. Tarantool использует распределенную архитектуру и может горизонтально масштабироваться. Это позволяет ему обрабатывать большие объемы данных быстрее, чем традиционные базы данных.
Кейсы применения Tarantool Middleware for data в деле
Tarantool позволяет закрыть 99% потребностей в хранении и обработке данных и одновременно с этим решает разные бизнес-задачи, в том числе помогает с ускорением Core-систем, преодолением ограничений Legacy и построением микросервисов. Этими и другими сценариями применения Tarantool Middleware for data уже пользуются компании из разных сфер.
- Построение микросервисной архитектуры. Переход от архитектуры монолита к микросервисам позволяет компаниям создавать системы, способные обрабатывать миллионы транзакций и поддерживать растущую нагрузку без снижения скорости сервисов. Например, применив Tarantool Middleware for data в собственной биллинговой системе, «Мегафон» смог обеспечить быструю и надежную работу 25 сервисов для 80 миллионов абонентов в режиме реального времени. При этом проект был реализован на небольшой технической базе: один из сервисов работает на 6 серверах в трех ЦОДах, обеспечивая производительность обработки на уровне 3000 записей в секунду.
- Повышение отказоустойчивости. Tarantool как решение класса Middleware for data позволяет строить надежные системы на базе разнородной ИТ-инфраструктуры. Например, банк «Открытие» применил Tarantool при построении объединенной архитектуры после слияния с другими банками. Решение позволило на 85% снизить нагрузку на Core-системы, в 20 раз повысить скорость обработки транзакций и сократить обновление информации о балансе на клиентском счете с нескольких десятков до 2 секунд. Решить подобную задачу с помощью монолитного ПО было бы затруднительно.
- Ускорение сервисов. Раньше для интернет-магазина «Ситилинк» использовал монолитную реляционную базу данных, но она не позволяла справляться с расширением ассортимента товаров и повышением активности покупателей. Миграция на микросервисную архитектуру и БД на основе Middleware for data Tarantool помогли компании ускорить сервисы. Например, обновление каталога после добавления новых позиций стало занимать не 30 минут, а 3 секунды. Одновременно с этим в 10 раз повысилась и доступность сервисов.
Важно при этом, что, если надо оптимизировать сервисы, интеграция Tarantool Middleware for data в проект позволяет командам избежать значительных трудностей и больших инвестиций в краткосрочной перспективе. Так, встраивание Tarantool между не самым быстрым, надежным Legacy-сервисом и фронтендом может решить проблему быстродействия всей архитектуры и даже поддержания гарантированной надежности на нужном уровне.
Узнавайте о новых релизах, вебинарах и выходящих статьях в Telegram-канале Tarantool News.
Задать вопросы команде разработчиков про использование Tarantool можно в официальном канале сообщества.
О принципах и примерах работы продуктов Tarantool читайте в блоге на сайте.