Я работаю инженером данных в веб-компании среднего размера. У нас есть ежедневный ETL, который доставляет данные из наших баз данных приложений (например, Cassandra и Postgres) и сохраняет их в нашем хранилище данных (Redshift).
Наша текущая система передачи данных настроена относительно простым образом (для нашей базы данных Postgres): у нас есть реплика чтения базы данных Postgres, которую мы используем для загрузки инкрементных данных в S3, а затем копируем их в Redshift столы.
Код, выполняющий эту передачу данных, находится в репозитории группы данных, совершенно отдельно от репозитория приложений.
Мы часто сталкиваемся со следующей проблемой: разработчики приложений вносят изменения в схему. Они меняют имя столбца, они меняют ограничение, они добавляют столбец и т. Д. Они не сообщают нам об этом. Эти изменения иногда нарушают наш процесс ETL (на QA, но все же), и мы должны немедленно решить проблему, играя в догонялки.
Мы тратим усилия на улучшение коммуникации, чтобы убедиться, что разработчики приложений знают, что сделанные ими изменения должны быть доведены до нас, прежде чем они выйдут. Однако мне кажется, что должен быть лучший способ решить эту проблему. Есть ли программный способ решить это? Можем ли мы иметь дополнительный общий репозиторий с разработчиками, который запускает эти сценарии передачи? Таким образом, обе стороны должны были бы одобрить изменения, чтобы они прошли.
Как другие организации решают эту проблему?