Как настроить ваш dbt репозиторий (один или несколько)?
В dbt Labs, по мере того как все больше людей начинают использовать dbt, мы начали замечать все больше и больше случаев использования, которые расширяют границы наших установленных лучших практик. Это особенно актуально для тех, кто внедряет dbt в корпоративной среде.
После двух лет помощи компаниям с численностью сотрудников от 20 до 10 000+ в реализации dbt и dbt Cloud, ниже я постараюсь ответить на вопрос: "Должен ли у меня быть один репозиторий для моего dbt проекта или несколько?" Альтернативное название: "Быть или не быть монорепозиторию, вот в чем вопрос!"
Прежде чем мы перейдем к конкретным структурам, я хочу начать с того, что подчеркну: наш руководящий принцип всегда был в том, что проще — лучше, особенно когда вы только начинаете! Также следует отметить, что все, что представлено ниже, основывается на отличной статье Джереми несколько лет назад. Это является предпосылкой к этой статье.
Прежде чем мы начнем, нам нужно провести инвентаризацию. Рассмотрите рабочий процесс и команды, которые будут использовать dbt.
С точки зрения рабочего процесса, рассмотрите:
- Как будет выглядеть процесс рецензирования в вашей организации?
- Кто может утверждать pull-запросы?
- Кто сможет сливать код в продакшн?
- Для более сложных сред, которые имеют парадигму ветвления dev/qa/prod в git:
- Кто имеет доступ к объектам, созданным в dev-среде? В qa-среде?
- Кого нужно уведомлять, когда код был выпущен в qa-ветку?
- Кто отвечает за продвижение объектов из dev в qa? Из qa в prod?
С точки зрения людей или команды, рассмотрите:
-
Как команды, использующие dbt, обычно работают вместе?
-
Есть ли у этих команд разные стили кода, процессы рецензирования и главные поддерживающие?
-
Используют ли команды, использующие dbt, одни и те же источники данных? Находятся ли сырые данные в месте, к которому все команды, использующие dbt, будут иметь доступ?