Releases: BrittleFoot/async-architecture
Releases · BrittleFoot/async-architecture
🔥 Homework. Week #3
Схема данных
Схему храню в common package jirapopug
.
Схема написана на валидаторах pydantic.
При необходимости уйти из питона - педантик умеет сгенерировать json-схему (см jirapopug.json)
Соответственно схема в формате json :)
Миграция на вторую версию схемы
Миграция на вторую версию в коммите a4bd3e1
В целом прошла безболезненно, по шагам:
- добавил новую версию схемы
- добавил новое поле в модель таски
- добавил в трекер новую версию вью, которая
- принимает новые параметры и создает таску
- и отдает в новом формате фронту
- и создает событие второй версии
- в биллинге поменял модель
- и добавил обработчик новой версии события
На каждом шаге приложение целиком оставалось в рабочем состоянии, так как пока все сервисы переходили на новую версию - те, что уже перешли поддерживали обе схемы и генерировали события в нужном формате.
Как тестировать и не терять деньги?
- Все операции - транзакционно
- Событие отправляется только при подтверждении транзакции
- Ошибочные события складывать в очередь неуспешных и позже обрабатывать отдельно
- сейчас этого конечно нет, но зародыш - я не подтверждаю оффсет кафки, если хэндлер упал с ошибкой - сервис падает пока не поправится код. вот этот момент заменить на "очередь ошибок"
- Так как все обработчики просто вызывают сервисы с нужными данными, и сервис зависит только от событий - то можно тестировать отправляя нужные события и смотря на результат (выходные собития или проверкой состояния сервиса через апи)
Немного фотокарточек
Сервис биллинга и аккаунтинга
Сервис аналитики
🔥 Homework. Week #2
🤔 Выбор
- Аутентификация - oAuth
- Message broker - Kafka
🐕🦺 Сервисы
Общая архитектура
Реализация сервиса аутентификации
Реализация таск-трекера
Создание задачи
Список задач
Выполнение задачи
Перераспределение задач
Связь сервисов
Коммуникации
Django App с кодом консюмера/продьюсера
Топики/События
account
user.created
user.updated
task
task.created
task.performer_changed
task.completed