Skip to content

🔥 Homework. Week #3

Latest
Compare
Choose a tag to compare
@BrittleFoot BrittleFoot released this 11 Mar 11:19
· 15 commits to main since this release
9f349c4

Схема данных

Схему храню в common package jirapopug.
Схема написана на валидаторах pydantic.
При необходимости уйти из питона - педантик умеет сгенерировать json-схему (см jirapopug.json)

Соответственно схема в формате json :)

Миграция на вторую версию схемы

Миграция на вторую версию в коммите a4bd3e1

В целом прошла безболезненно, по шагам:

  • добавил новую версию схемы
  • добавил новое поле в модель таски
  • добавил в трекер новую версию вью, которая
    • принимает новые параметры и создает таску
    • и отдает в новом формате фронту
    • и создает событие второй версии
  • в биллинге поменял модель
  • и добавил обработчик новой версии события

На каждом шаге приложение целиком оставалось в рабочем состоянии, так как пока все сервисы переходили на новую версию - те, что уже перешли поддерживали обе схемы и генерировали события в нужном формате.

Как тестировать и не терять деньги?

  1. Все операции - транзакционно
  2. Событие отправляется только при подтверждении транзакции
  3. Ошибочные события складывать в очередь неуспешных и позже обрабатывать отдельно
    • сейчас этого конечно нет, но зародыш - я не подтверждаю оффсет кафки, если хэндлер упал с ошибкой - сервис падает пока не поправится код. вот этот момент заменить на "очередь ошибок"
  4. Так как все обработчики просто вызывают сервисы с нужными данными, и сервис зависит только от событий - то можно тестировать отправляя нужные события и смотря на результат (выходные собития или проверкой состояния сервиса через апи)

Немного фотокарточек

Сервис биллинга и аккаунтинга

image

Сервис аналитики

image