Перед нами была поставлена задача доставки структурированных данных до хранилища, сохраняя при этом возможность изменять структуру таблиц. Одни из главных вопросов, которые перед нами стояли:
* Как управлять изменениями схемы? В какой момент применять обновления?
* Как переложить ответственность за создание описания схемы на пользователей, обеспечив при этом не только контроль и валидацию изменений, но и поддержку?
* Как гарантировать корректность обновления схемы как с технической, так и с бизнесовой точек зрения?
* Как обеспечить консистентность данных в связанных структурах для дальнейшей работы с ними?
Рассмотрев несколько подходов к решению поставленной задачи, мы пришли к решению, которое реализовали с использованием паттерна event sourcing. Данное решение позволило нам чуть больше, чем за год вырасти в объемах поставки с нескольких десятков таблиц до более двух тысяч.
В этом докладе я бы хотел рассказать о том, почему мы отдали предпочтение event sourcing вместо CDC, какие альтернативы для описания схем рассматривали, почему в итоге остановились на avro и как автоматика помогает нам контролировать все изменения.