Brief¶
DAG Relay Service это сервис для упрощение работы с публикацией YAMLов DAGов в наш DataMesh (Airflow).
Общая схема взаимодейсвия:
Какие проблемы призван решить данный сервис:
- абстрагироваться от необходимости пушить YAMLы DAGов напрямую в репозиторий DataMeshа
- возможность хранить YAMLы внутри репы самого проекта
- добавить возможность кастомной шаблонизии/генерации YAMLов, удобным каждому проекту
- добавить возможность генерить динамические YAMLы со стороны проекта
- сделать всё это прозрачно для команды DataMeshа, для них в итоге всё это будет выглядеть как push в git репозиторий
Компоненты системы¶
Основные компоненты системы:
- ядро
- хранилище проектов
- git repo client
- http endpoint for DAG pushes
- scheduler
- dag/resource fetcher (http client)
- cli interface
Сущности¶
Основные сущности:
- проект (имя, токен, url endpoint для фетчинга DAGов, настройки git репы)
- DAG (YAML) (проект, имя, YAML)
Имя проекта уникально. Имя DAGа в рамках проекта уникально.
Жизненный цикл¶
DAG рождается и умирает только по сигналу от API:
Наличие отсутствие файла в папке gitа ни на что не влияет. Мы потом напишем отдельную утилиту проверяющую zombie файлы :)
Stack¶
Предлагаемый stack:
- Scala 2.13
- ZIO 1.0.3
- http4s для web сервера
- sttp для http клиента
- circe для Json
- pureconfig
- что-то для запуска в режиме CLI (есть либа decline http://ben.kirw.in/decline/)
- что для логирования?
- zio-test для тестов