Внедрихме event sourcing за базово CRUD приложение, защото "е правилният начин." Прекарахме 6 месеца в инфраструктура вместо функционалности.

Изискванията на приложението:

  • Управление на потребители CRUD
  • 500 дневни потребители
  • Без изисквания за одит
  • Без нужда от пътуване във времето
  • Стандартна бизнес логика

Какво изградихме:

  • Event store (Kafka + PostgreSQL)
  • Система за възпроизвеждане на събития
  • Проекции (read models)
  • Snapshotting
  • Версионирани събития
  • Saga оркестрация

Прекарано време:

  • Инфраструктура: 4 месеца
  • Дизайн на event схема: 1 месец
  • Дебъгване на eventual consistency: 1 месец
  • Реални бизнес функционалности: 2 седмици

Какво ни трябваше:

class User:
                                    def update(self, data):
                                    self.name = data.name
                                    self.email = data.email
                                    db.save(self)

Кога event sourcing има смисъл:

  • Регулаторни изисквания за одитна следа
  • Финансови транзакции
  • Дебъгване с пътуване във времето
  • Сложен домейн с много преходи на състояния

Урок: Event sourcing е мощен. Също е скъп. Съобразете сложността с изискванията.


← Назад към Научени Уроци