Алексей Фиссон
Tech lead,  X5 Tech

И чем вам asyncio не фреймворк, а Redis не брокер?
Как сделать сервис ядра сложной системы в стиле максимального минимализма - без REST, фреймворка и базы данных, не привлекая внимания санитаров

Обычно, говоря об асинхронных микросервисах на Python, подразумевают взаимодействие между ними по REST, каждому микросервису - по своей базе данных, пишем на FastAPI. Я расскажу, как и почему мы последовательно отказались в центральном сервисе платформы ботов общения с клиентами от REST.
Вместо него брокер - значит, Kafka или RabbitMQ. Но нам уже был нужен Redis, и он оказался как минимум не хуже как брокер.
У нас нет REST - значит, и FastAPI не нужен. Что вместо него? Да сам ванильный asyncio - отличная основа для асинхронного сервиса.
Да, кстати, о базе данных - а она правда нужна? Нам вот оказалась не нужна - в этом сервисе опять-таки хватило Redis и отложенной согласованности.
В множестве воркерах нужно согласованно запускать задачи по таймеру? Нет, Celery не берём - это слишком для нашего минимализма, опять обойдёмся asyncio и Redis.
Ну и напоследок - решим с помощью Redis’а давние проблемы актуальности локального кеша в воркере и моментального обновления динамической конфигурации.
А если вдруг понадобятся LLM - и векторного поиска для эмбеддингов заодно.