BrittleFoot
released this
11 Mar 11:19
·
15 commits
to main
since this release
Схема данных
Схему храню в common package jirapopug
.
Схема написана на валидаторах pydantic.
При необходимости уйти из питона - педантик умеет сгенерировать json-схему (см jirapopug.json)
Соответственно схема в формате json :)
Миграция на вторую версию схемы
Миграция на вторую версию в коммите a4bd3e1
В целом прошла безболезненно, по шагам:
- добавил новую версию схемы
- добавил новое поле в модель таски
- добавил в трекер новую версию вью, которая
- принимает новые параметры и создает таску
- и отдает в новом формате фронту
- и создает событие второй версии
- в биллинге поменял модель
- и добавил обработчик новой версии события
На каждом шаге приложение целиком оставалось в рабочем состоянии, так как пока все сервисы переходили на новую версию - те, что уже перешли поддерживали обе схемы и генерировали события в нужном формате.
Как тестировать и не терять деньги?
- Все операции - транзакционно
- Событие отправляется только при подтверждении транзакции
- Ошибочные события складывать в очередь неуспешных и позже обрабатывать отдельно
- сейчас этого конечно нет, но зародыш - я не подтверждаю оффсет кафки, если хэндлер упал с ошибкой - сервис падает пока не поправится код. вот этот момент заменить на "очередь ошибок"
- Так как все обработчики просто вызывают сервисы с нужными данными, и сервис зависит только от событий - то можно тестировать отправляя нужные события и смотря на результат (выходные собития или проверкой состояния сервиса через апи)