Pracovní postupy CI/CD v Databricks

CI/CD (kontinuální integrace a průběžné doručování) se stala základním kamenem moderní přípravy a analýzy dat, protože zajišťuje integraci, testování a spolehlivé nasazování změn kódu. Databricks rozpoznává, že můžete mít různé požadavky CI/CD tvarované podle předvoleb organizace, stávajících pracovních postupů a konkrétního technologického prostředí a poskytuje flexibilní architekturu, která podporuje různé možnosti CI/CD.

Tato stránka popisuje doporučené pracovní postupy CI/CD, které vám pomůžou navrhovat a vytvářet robustní a přizpůsobené kanály CI/CD, které odpovídají vašim jedinečným potřebám a omezením. Díky využití těchto přehledů můžete urychlit iniciativy přípravy a analýzy dat, zlepšit kvalitu kódu a snížit riziko selhání nasazení.

Základní principy CI/CD

Efektivní kanály CI/CD sdílejí základní principy bez ohledu na specifika implementace. Následující univerzální osvědčené postupy se vztahují napříč předvolbami organizace, vývojářskými pracovními postupy a cloudovými prostředími a zajišťují konzistenci napříč různými implementacemi, ať už váš tým upřednostňuje pracovní postupy vývoje a infrastruktury jako kódu. Adoptujte tyto principy jako mantinely a přizpůsobte si specifika technologickému zásobníku a procesům vaší organizace.

  • Správa verzí – vše
    • Ukládejte poznámkové bloky, skripty, definice infrastruktury (IaC) a konfigurace úloh v Gitu.
    • Použijte strategie větvení, jako je Gitflow, které jsou v souladu se standardním vývojovým, přípravným a produkčním prostředím nasazení.
  • Automatizace testování
    • Implementujte testy jednotek pro obchodní logiku pomocí knihoven, jako je pytest pro Python a ScalaTest pro Scala .
    • Ověřte funkčnost poznámkového bloku a pracovního postupu pomocí nástrojů, jako je Databricks CLI bundle validate.
    • Pro pracovní postupy a datové kanály, jako je chispa pro datové rámce Sparku, použijte integrační testy.
  • Použití infrastruktury jako kódu (IaC)
    • Definujte clustery, úlohy a konfigurace pracovních prostorů pomocí deklarativních balíčků automation YAML nebo Terraform.
    • Parametrizace namísto pevně zakódovaného nastavení specifického pro prostředí, jako je velikost clusteru a tajné kódy.
  • Izolace prostředí
    • Udržujte samostatné pracovní prostory pro vývoj, přípravu a produkci.
    • Pro správu verzí modelů napříč prostředími použijte registr modelů MLflow .
  • Zvolte nástroje, které odpovídají vašemu cloudovému ekosystému:
    • Azure: Balíčky Azure DevOps a deklarativní automatizace, nebo Terraform.
    • AWS: GitHub Actions a deklarativní balíčky automatizace nebo Terraform.
    • GCP: Cloud Build a deklarativní balíčky automatizace nebo Terraform.
  • Monitorování a automatizace vrácení zpět
    • Sledování úspěšnosti nasazení, výkonu úloh a pokrytí testů
    • Implementujte automatizované mechanismy vrácení zpět pro neúspěšná nasazení.
  • Sjednocení správy prostředků
    • Sada deklarativní automatizace slouží k nasazení kódu, úloh a infrastruktury jako jedné jednotky. Vyhněte se izolované správě poznámkových bloků, knihoven a pracovních postupů.

Note

Databricks doporučuje federaci identit úloh pro ověřování CI/CD. Federace identit úloh eliminuje potřebu tajných kódů Databricks, což z něj dělá nejbezpečnější způsob ověřování automatizovaných toků do Databricks. Viz Jak povolit federaci identit úloh v CI/CD.

Deklarativní balíčky automatizace pro CI/CD

Deklarativní balíčky automatizace (dříve Označované jako Sady prostředků Databricks) nabízejí výkonný, jednotný přístup ke správě kódu, pracovních postupů a infrastruktury v ekosystému Databricks a doporučuje se pro vaše kanály CI/CD. Spojením těchto prvků do jedné jednotky definované YAML zjednoduší nasazení a zajistí konzistenci ve všech prostředích. Pro uživatele, kteří jsou zvyklí na tradiční pracovní postupy CI/CD, ale přijetí balíčků může vyžadovat posun v myšlení.

Vývojáři v Javě jsou například zvyklí vytvářet JAR soubory pomocí Mavenu nebo Gradle, spouštět jednotkové testy pomocí JUnit a integrovat tyto kroky do procesů CI/CD. Podobně vývojáři Pythonu často zabalují kód do wheel balíčků a testují pomocí pytestu, zatímco vývojáři SQL se zaměřují na ověřování dotazů a správu notebooků. Díky sadám se tyto pracovní postupy konvergují do strukturovanějšího a preskriptivnějšího formátu, který zdůrazňuje sdružování kódu a infrastruktury pro bezproblémové nasazení.

V následujících částech se dozvíte, jak můžou vývojáři přizpůsobit své pracovní postupy, aby efektivně využívali sady prostředků.

Pokud chcete rychle začít pracovat s deklarativními automatizačními sadami, vyzkoušejte kurz: Vývoj úlohy pomocí deklarativních automatizačních sad nebo vývoj potrubí s deklarativními automatizačními sadami.

Správa zdrojového kódu

Balíčky umožňují snadno obsahovat vše – zdrojový kód, artefakty sestavení a konfigurační soubory – a najít je ve stejném úložišti zdrojového kódu, ale můžete také oddělit konfigurační soubory sady od souborů souvisejících s kódem. Volba závisí na pracovním postupu vašeho týmu, složitosti projektu a požadavcích NA CI/CD, ale kvůli zjednodušení pracovních postupů a sdílení osvědčených postupů doporučuje Databricks použít jedno úložiště pro konfiguraci kódu i sady.

Kromě toho Databricks doporučuje strategii větvení založené na kmeni, která minimalizuje konflikty při slučování a zajišťuje, aby hlavní větev byla vždy v nasaditelném stavu a vždy používala artefakty s verzí, jako jsou hodnoty hash potvrzení Gitu, při nahrávání do Databricks nebo externího úložiště, aby se zajistila sledovatelnost a vrácení zpět.

Další informace o těchto osvědčených postupech najdete v tématu Správa zdrojového kódu.

Pracovní postup CI/CD s balíčky

Doporučený jednoduchý pracovní postup využívající balíčky deklarativní automatizace je následující:

  1. Kompilace a testování kódu
    • Aktivuje se u žádosti o přijetí změn nebo potvrzení do hlavní větve.
    • Zkompilujte kód a spusťte testy jednotek.
    • Vystupte verzovaný soubor, například my-app-1.0.jar.
  2. Nahrajte a uložte kompilovaný soubor, například SOUBOR JAR, do svazku katalogu Unity Databricks.
    • Uložte kompilovaný soubor do svazku katalogu Unity Databricks nebo do úložiště artefaktů, jako je AWS S3 nebo Azure Blob Storage.
    • Použijte schéma správy verzí svázané s potvrzením hodnot hash Gitu nebo sémantickou správou verzí, například dbfs:/mnt/artifacts/my-app-${{ github.sha }}.jar.
  3. Ověření sady
    • Spusťte databricks bundle validate, abyste se ujistili, že databricks.yml konfigurace je správná.
    • Tento krok zajistí, že se v rané fázi zachytí chybné konfigurace, například chybějící knihovny.
  4. Nasazení sady

CI/CD pro strojové učení

Projekty strojového učení představují v porovnání s tradičním vývojem softwaru jedinečné výzvy CI/CD. Při implementaci CI/CD pro projekty ML budete pravděpodobně muset zvážit následující:

  • Koordinace s více týmy: Odborníci na data, technici a týmy MLOps často používají různé nástroje a pracovní postupy. Databricks tyto procesy sjednocuje s MLflow pro sledování experimentů, openSharing pro zásady správného řízení dat a sady deklarativní automatizace pro infrastrukturu jako kód.
  • Správa verzí dat a modelů: Kanály ML vyžadují sledování nejen kódu, ale také trénování schémat dat, distribuce funkcí a artefaktů modelu. Delta Lake poskytuje transakce ACID a časové cesty pro správu verzí dat, zatímco registr modelů MLflow zpracovává rodokmen modelu.
  • Reprodukovatelnost napříč prostředími: Modely ML závisí na konkrétních kombinacích dat, kódu a infrastruktury. Deklarativní balíčky automatizace zajišťují atomické nasazení těchto komponent napříč vývojovými, přípravnými a produkčními prostředími s definicemi YAML.
  • Průběžné přetrénování a monitorování: Modely degradují kvůli datovému driftu. Úlohy Lakeflow umožňují automatizované přetrénování pipeline, zatímco MLflow se integruje s nástroji Prometheus a Databricks pro monitorování kvality dat a sledování výkonu.

Zásobníky MLOps pro CI/CD ML

Databricks řeší složitost CI/CD ML prostřednictvím zásobníků MLOps, což je architektura na úrovni produkce, která kombinuje balíčky deklarativní automatizace, předem nakonfigurované pracovní postupy CI/CD a modulární šablony projektů ML. Tyto technologické balíky vynucují osvědčené postupy a zároveň umožňují flexibilitu pro spolupráci s více týmy napříč rolemi datového inženýrství, datové vědy a MLOps.

Team Responsibilities Ukázkové komponenty sady Ukázkové artefakty
Datoví architekti Vytváření kanálů ETL, vynucení kvality dat YAML deklarativní kanály Lakeflow Spark, zásady clusteru etl_pipeline.yml, feature_store_job.yml
Datoví vědci Vývoj logiky trénování modelů, ověření metrik Projekty MLflow, pracovní postupy založené na poznámkových blocích train_model.yml, batch_inference_job.yml
Technici MLOps Orchestrace nasazení, monitorování procesů Proměnné prostředí, řídicí panely monitorování databricks.yml, lakehouse_monitoring.yml

Spolupráce CI/CD ML může vypadat takto:

  • Datoví inženýři potvrdí změny datového toku ETL do svazku, spustí automatizované ověřování schématu a přípravné nasazení.
  • Datoví vědci odesílali kód ML, který spouští testy jednotek a nasazuje do přípravného pracovního prostoru pro testování integrace.
  • Technici MLOps kontrolují metriky ověřování a propagují ověřené modely do produkčního prostředí pomocí registru MLflow.

Podrobnosti o implementaci najdete tady:

Díky sladění týmů se standardizovanými sadami a zásobníky MLOps můžou organizace zjednodušit spolupráci a současně udržovat auditovatelnost v rámci životního cyklu ML.

CI/CD pro vývojáře SQL

Vývojáři SQL využívající Databricks SQL ke správě streamovaných tabulek a materializovaných zobrazení můžou využívat integraci Gitu a kanály CI/CD ke zjednodušení svých pracovních postupů a udržování vysoce kvalitních kanálů. Díky zavedení podpory Gitu pro dotazy se vývojáři SQL můžou soustředit na psaní dotazů a zároveň využívat Git ke správě verzí svých .sql souborů, což umožňuje spolupráci a automatizaci bez nutnosti hlubších odborných znalostí infrastruktury. Editor SQL navíc umožňuje bezproblémovou spolupráci v reálném čase a integruje se s pracovními postupy Gitu.

Pro pracovní postupy zaměřené na SQL:

  • Soubory SQL správy verzí

    • Ukládání .sql souborů v úložištích Git pomocí složek Databricks Git nebo externích poskytovatelů Gitu, například GitHubu, Azure DevOps.
    • Ke správě změn specifických pro prostředí použijte větve (například vývoj, příprava, produkční prostředí).
  • Integrujte .sql soubory do CI/CD kanálů pro automatizaci procesu nasazení:

    • Ověřte změny syntaxe a schématu během žádostí o přijetí změn.
    • Nasaďte .sql soubory do pracovních postupů nebo úloh SQL Databricks.
  • Parametrizace pro izolaci prostředí

    • Pomocí proměnných v .sql souborech můžete dynamicky odkazovat na prostředky specifické pro prostředí, jako jsou cesty k datům nebo názvy tabulek:

      CREATE OR REFRESH STREAMING TABLE ${env}_sales_ingest AS SELECT * FROM read_files('s3://${env}-sales-data')
      
  • Plánování a monitorování aktualizací

    • Pomocí úloh SQL v úloze Databricks můžete naplánovat aktualizace tabulek a materializovaných zobrazení (REFRESH MATERIALIZED VIEW view_name).
    • Monitorujte historii aktualizací pomocí systémových tabulek.

Pracovní postup může být:

  1. Vývoj: Místně nebo v editoru SQL Databricks můžete psát a testovat .sql skripty a pak je zapsat do větve Gitu.
  2. Ověření: Během žádosti o přijetí změn ověřte kompatibilitu syntaxe a schématu pomocí automatizovaných kontrol CI.
  3. Nasazení: Při sloučení nasaďte skripty .sql do cílového prostředí pomocí kanálů CI/CD, například GitHub Actions nebo Azure Pipelines.
  4. Monitorování: Pomocí řídicích panelů a upozornění Databricks můžete sledovat výkon dotazů a aktuálnost dat.

CI/CD pro vývojáře řídicích panelů

Databricks podporuje integraci řídicích panelů do pracovních postupů CI/CD pomocí deklarativních balíčků automatizace. Tato funkce umožňuje vývojářům řídicího panelu:

  • Řídicí panely správy verzí, které zajišťují auditovatelnost a zjednodušuje spolupráci mezi týmy.
  • Automatizujte nasazení řídicích panelů společně s úlohami a procesy napříč prostředími pro komplexní sladění.
  • Omezte ruční chyby a zajistěte, aby se aktualizace v různých prostředích používaly konzistentně.
  • Při dodržování osvědčených postupů CI/CD udržujte vysoce kvalitní analytické pracovní postupy.

Pro řídicí panely v CI/CD:

  • databricks bundle generate Pomocí příkazu exportujte existující řídicí panely jako soubory JSON a vygenerujte konfiguraci YAML, která ho zahrnuje do sady:

    resources:
      dashboards:
        sales_dashboard:
          display_name: 'Sales Dashboard'
          file_path: ./dashboards/sales_dashboard.lvdash.json
          warehouse_id: ${var.warehouse_id}
    
  • Uložte tyto .lvdash.json soubory do úložišť Git, abyste mohli efektivně sledovat změny a spolupracovat.

  • Automaticky nasaďte dashboardy v CI/CD procesech pomocí databricks bundle deploy. Například krok GitHub Actions pro nasazení:

    name: Deploy Dashboard
      run: databricks bundle deploy --target=prod
    env:
      DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }}
    
  • Pomocí proměnných můžete například ${var.warehouse_id}parametrizovat konfigurace, jako jsou SQL Warehouse nebo zdroje dat, a zajistit tak bezproblémové nasazení napříč vývojovými, přípravovými a produkčními prostředími.

  • bundle generate --watch Pomocí této možnosti můžete průběžně synchronizovat soubory JSON místního řídicího panelu se změnami provedenými v uživatelském rozhraní Databricks. Pokud dojde k nesrovnalostem, pomocí flagu --force během nasazení přepište vzdálené řídicí panely místními verzemi.

Informace o řídicích panelech v balíčcích naleznete v dashboard resource. Podrobnosti o příkazech sady najdete bundle ve skupině příkazů.