CI/CD на Azure Databricks

Непрерывная интеграция и непрерывная поставка (CI/CD) — это процесс разработки и поставки программного обеспечения с короткими, частыми циклами посредством конвейеров автоматизации. CI/CD распространен в разработке программного обеспечения и становится всё более необходимым в области инженерии данных и науки о данных. Автоматив сборку, тестирование и развертывание кода, команды разработчиков обеспечивают выпуски более надежно, чем с помощью ручных процессов.

Databricks предоставляет средства для разработки конвейеров CI/CD, которые поддерживают подходы, которые могут немного отличаться от организации от организации из-за уникальных аспектов жизненного цикла разработки программного обеспечения каждой организации. Эта страница содержит сведения о доступных средствах для конвейеров CI/CD в Databricks. Дополнительные сведения о рекомендациях и лучших практиках по CI/CD см. в разделе Лучшие практики и рекомендуемые рабочие процессы CI/CD в Databricks.

Обзор CI/CD для проектов машинного обучения на Azure Databricks см. в статье Как Databricks поддерживает CI/CD для машинного обучения?.

Поток высокого уровня

Обычный процесс для конвейера CI/CD Azure Databricks:

  1. Version. Сохраните код и записные книжки Azure Databricks в системе управления версиями, например Git. Это позволяет отслеживать изменения с течением времени и сотрудничать с другими участниками команды.
  2. Code: разработка кода и модульных тестов в записной книжке Azure Databricks в рабочей области или локально с помощью интегрированной среды разработки.
    • Используйте редактор Конвейеров Lakeflow для разработки конвейеров в рабочей области.
    • Используйте расширение Databricks Visual Studio Code для разработки и развертывания локальных изменений в рабочих областях Azure Databricks.
  3. Сборка: Используйте параметры пакетов декларативной автоматизации для автоматической сборки определенных артефактов в ходе развертывания.
    • Настройте сопоставление артефактов конфигурации пакета.
    • Pylint, расширенный с использованием плагина Databricks Labs pylint, помогает соблюдать стандарты кодирования и обнаруживать ошибки в записных книжках и коде приложений.
  4. Deploy. Развертывание изменений в рабочей области Azure Databricks с помощью пакетов декларативной автоматизации с такими инструментами, как Azure DevOps, GitHub Actions или Jenkins.
  5. Тест. Разработка и запуск автоматических тестов для проверки изменений кода.
    • Используйте инструменты, такие как pytest, чтобы протестировать интеграции.
  6. Run. Используйте интерфейс командной строки Databricks с декларативными пакетами автоматизации для автоматизации выполнения в рабочих областях Azure Databricks.
  7. Мониторинг: Отслеживайте производительность вашего кода и рабочих нагрузок в Azure Databricks с помощью таких инструментов, как мониторинг заданий. Это помогает выявлять и устранять любые проблемы, возникающие в рабочей среде.

Доступные средства

Следующие средства поддерживают основные принципы CI/CD: создавайте версии всех файлов и унифицируйте управление ресурсами, определите инфраструктуру как код, изолируйте среды, автоматизируйте тестирование и мониторинг, а также автоматизацию откатов.

Площадь Используйте эти инструменты, когда вы хотите…
Декларативные пакеты автоматизации Программирование, развертывание и запуск ресурсов Databricks, включая задания Lakeflow, декларативные конвейеры Lakeflow Spark и стеки MLOps с использованием лучших практик и процессов CI/CD.
Провайдер Databricks для Terraform Предоставление и управление рабочими областями и инфраструктурой Databricks с помощью Terraform. Дополнительные сведения об использовании поставщика Databricks Terraform вместо декларативных пакетов автоматизации см. в разделе "Локальные средства разработки".
Непрерывная интеграция и доставка на Azure Databricks с использованием Azure DevOps Разработка конвейера CI/CD для Azure Databricks, использующего Azure DevOps.
Выполните аутентификацию в Azure DevOps на Azure Databricks Проверка подлинности с помощью Azure DevOps.
GitHub Actions Включите действие GitHub, разработанное для Azure Databricks в потоке CI/CD.
CI/CD с Jenkins на Azure Databricks Разработка конвейера CI/CD для Azure Databricks, использующего Jenkins.
Оркестрация заданий Lakeflow с Apache Airflow Администрировать и планировать конвейеры данных, использующие Apache Airflow.
Сервисные принципалы для CI/CD Используйте учетные записи службы вместо пользователей для CI/CD.
Аутентификация доступа к Azure Databricks с использованием федерации токенов OAuth Используйте федерацию идентификационных данных рабочих нагрузок для аутентификации CI/CD, которая устраняет необходимость использования секретов Databricks, делая его наиболее безопасным способом для аутентификации в Databricks.

Декларативные пакеты автоматизации

Декларативные пакеты автоматизации — это рекомендуемый подход к CI/CD в Databricks. Используйте декларативные пакеты автоматизации для описания ресурсов Databricks, таких как задания и конвейеры в качестве исходных файлов, и объединяйте их вместе с другими ресурсами, чтобы обеспечить комплексное определение развертываемого проекта. Эти пакеты файлов можно управлять источником, и вы можете использовать внешнюю автоматизацию CI/CD, например Github Actions для активации развертываний.

Пакеты включают множество функций, таких как пользовательские шаблоны для обеспечения согласованности и рекомендаций по всей организации, а также комплексной поддержки развертывания файлов кода и конфигурации для многих ресурсов Databricks. Для разработки пакета требуются некоторые знания о синтаксисе конфигурации пакета.

Для получения рекомендаций по использованию пакетов в CI/CD см. Лучшие практики и рекомендуемые рабочие процессы CI/CD на Databricks.

Другие инструменты для контроля версий

В качестве альтернативы применению полного CI/CD с декларативными пакетами автоматизации, Databricks предлагает варианты для управления исходным кодом и версиями, а также развертывания файлов кода и записных книжек.

  • Папка Git: папки Git можно использовать для отражения состояния удаленного репозитория Git. Вы можете создать папку Git для рабочей среды для управления исходными файлами и записными книжками. Затем вручную извлеките папку Git в последнее состояние или используйте внешние средства CI/CD, такие как GitHub Actions, чтобы извлечь папку Git при слиянии. Используйте этот подход, если у вас нет доступа к внешним конвейерам CI/CD.

    Этот подход подходит для внешних оркестраторов, таких как Airflow, но обратите внимание, что только файлы кода, такие как блокноты и черновики информационных панелей, находятся в системе управления версиями. Конфигурации заданий или конвейеров, которые используют активы в папке Git, и конфигурации для публикации панелей мониторинга не находятся в системе управления версиями.

  • Git с заданиями: Git с заданиями позволяет настроить некоторые типы заданий для использования удаленного репозитория Git в качестве источника для файлов кода. При начале выполнения задания Databricks делает моментальный снимок репозитория и выполняет все задачи на этой версии. Этот подход поддерживает только ограниченные рабочие задачи, а только файлы кода (записные книжки и другие файлы) управляются системой контроля версий. Конфигурации заданий, такие как последовательности задач, параметры вычислений и расписания, не управляются источником, что делает этот подход менее подходящим для развертываний в нескольких средах, между рабочими областями.