Нужны проверка владельца счёта, точное представление суммы, единая транзакция, защита конкурентного списания и идемпотентность. Два независимых UPDATE могут оставить деньги списанными без зачисления.
Исправьте COPY, зафиксируйте образ и зависимости, отключите DEBUG и запускайте процесс непривилегированным пользователем. Для полной воспроизводимости нужны digest и lock-файл с хешами.
FastAPI — ASGI-фреймворк для API, использующий типовые аннотации для описания входных данных, валидации и документации. Dependency injection передаёт обработчикам нужные зависимости.
Назовите реально использованный gateway или прокси и его функции: маршрутизация, TLS, аутентификация, rate limit, наблюдаемость и преобразование запросов.
Декомпозируйте по бизнес-возможностям и границам согласованности, а не по отдельным таблицам или техническим слоям. Сервис должен иметь понятную ответственность и владельца данных.
str.capitalize() возвращает новую строку с первым символом в заглавной/titlecase-форме и остальными буквами в нижнем регистре. Исходная строка не изменяется.
Чётко разделите архитектуру, существовавшую до вас, и изменения, в которых участвовали лично. Наследование готового решения не уменьшает ценность последующего инженерного вклада.
Используйте Transactional Outbox: сущность и запись о событии сохраняются в одной транзакции БД, а отдельный процесс доставляет событие в брокер с повторами.
Оба варианта возможны: общий кластер RabbitMQ с изолированными очередями и правами либо отдельные брокеры. На интервью нужно описать фактическую схему своего проекта.
Интуиция может подсказать гипотезу, но разделение монолита стоит обосновывать измеримыми проблемами: независимыми релизами, масштабированием, границами ответственности или изоляцией отказов.
В EDA сервисы реагируют на события. Event Notification сообщает о факте изменения, а Event-Carried State Transfer передаёт данные, достаточные для обновления локального состояния потребителя.