Message queue — важная часть бэкенда. Задача сервиса проста: надёжно и безопасно передавать сообщения от producer’ов к consumer’ам. Очередь можно организовать с помощью RabbitMQ, а можно с помощью PostgreSQL или Redis, а если нужен не просто транспорт, а история событий, которую можно перечитать, то стандарт индустрии, конечно, Kafka.
В среде бэкендеров и devops’ов Kafka считается сложной технологией в первую очередь из-за непростой эксплуатации: планирования ёмкости локальных дисков для брокеров, репликации и перераспределения партиций. Но что, если мы скажем, что большинству команд (на старте уж точно) не нужна избыточная сложность Kafka?
Меня зовут Кирилл Пятковский, я разработчик в команде Serverless Data Streams в MWS Cloud Platform. Я готовил эту статью вместе с Денисом Титовым, TPO дата-сервисов платформы.
В материале мы разберём модели передачи сообщений, а затем посмотрим, как сервис MWS Serverless Queue устроен внутри: почему брокеры не владеют ни одной партицией, как сообщения разных клиентов оказываются в одном объекте S3 и почему Kafka-клиент при этом ничего не замечает. И честно скажем, сколько это стоит по задержке.