Внедрите асинхронную обработку: загрузка обложек книг через RabbitMQ, сжатие изображений в worker-сервисе, хранение файлов в MinIO (S3). Пользователь получает ответ мгновенно, тяжёлые задачи выполняются в фоне.
Войдите, чтобы начать проектВо втором проекте мы построили два микросервиса (auth-service и books-service), которые общаются синхронно через HTTP. Когда books-service нужно проверить токен — он делает HTTP-запрос к auth-service и ждёт ответа. Это работает, но у синхронного подхода есть ограничения.
Представьте кофейню в час пик. Когда вы делаете заказ, бариста не заставляет вас стоять у кассы 5 минут, пока готовится латте. Вместо этого: вы оплачиваете, получаете номер заказа и отходите. Бариста кладёт ваш заказ в очередь и готовит по мере возможности. Когда кофе готов — вас вызывают по номеру.
Синхронный подход: вы стоите у кассы и ждёте, блокируя очередь за собой. Асинхронный подход: вы свободны, пока заказ готовится в фоне.
В нашем проекте "заказ" — это загрузка обложки книги. Обработка изображения (создание разных размеров) занимает несколько секунд. Вместо того чтобы заставлять пользователя ждать, мы принимаем изображение, говорим "Обложка обрабатывается" и обрабатываем её в фоне.
В этом проекте мы изучим Event-Driven Architecture: сервисы будут общаться через очередь сообщений (RabbitMQ), а не напрямую. Также добавим Object Storage (MinIO) для хранения файлов и создадим Worker — фоновый сервис для обработки изображений.