Databricksin resurssipaketeilla hallitut siirtymät ympäristöstä toiseen

Databricksin sovellusten infrastruktuuri koodina.

Mikä on Databricksin resurssipaketti?

Databricksin resurssipaketit, virallisesti **Declarative Automation Bundles** (aiemmin Databricks Asset Bundles, DABs), ovat Databricksin infrastruktuuri koodina -mekanismi. Niiden avulla tiimit voivat määritellä kaikki Databricks-resurssit — jobit, Spark Declarative Pipelines, ML-mallit, dashboardit, Unity Catalog -skeemoja ja paljon muuta — YAML-konfiguraatiotiedostoina, versioida ne Gitissä ja ottaa ne käyttöön johdonmukaisesti dev-, staging- ja tuotantoympäristöissä.

Ajattele niitä kuin Terraformia, mutta Databricksille räätälöitynä: määrittelet mitä resursseja haluat, ja Databricksin CLI hoitaa loput.

Resurssipaketin ydinperiaatteet

PeriaateMitä se tarkoittaa
DeklaratiivinenKuvaat mitä pitäisi olla olemassa, et miten se luodaan. CLI sovittaa nykyisen tilan haluttuun tilaan.
YmpäristötietoinenYksi konfiguraatio tukee useita kohdealustoja (dev, staging, prod) ympäristökohtaisilla muuttujaohiteilla.
Git-natiiviKaikki konfiguraatiot elävät repositoriossa lähdekoodin rinnalla. Haarat, PR:t ja koodikatselmoinnit toimivat normaalisti.
IdempotenttiSaman paketin käyttöönotto kahdesti tuottaa saman lopputuloksen — ei duplikaatteja, ei ajautumista.

Miksi resurssipaketit ratkaisevat oikean ongelman?

Ilman resurssipaketit datatiimit ajautuvat tuttuihin ansoihin:

  • Manuaaliset käyttöönotot — joku klikkaa käyttöliittymässä jobin tuotantoon. Ei auditraileja, ei toistettavuutta.
  • Ympäristöajautuminen — dev, test ja prod eriytyvät, kun muutoksia tehdään ad hoc. Pipeline toimii devissä mutta hajoaa tuotannossa.
  • Hauraita skriptejä — tiimit kirjoittavat REST API -käyttöönottoskriptejä, jotka kasvavat hauraiksi ja ovat yhden insinöörin varassa.
  • Ei paluutietä — kun käyttöönotto menee pieleen, ei ole selkeää tapaa palata edelliseen tilaan.

Resurssipaketit ratkaisevat kaikki nämä tekemällä infrastruktuurista toistettavaa, katselmoitavaa ja palautettavaa.

Mitä resursseja paketti voi hallita?

ResurssityyppiMitä se ottaa käyttöönTyypillinen käyttötarkoitus
JobsAikataulutetut tai laukaistavat työnkulutETL-pipelinet, datan laadunvalvonta, ML-koulutusajot
PipelinesSpark Declarative Pipelines (SDP)Medallion-arkkitehtuurin transformaatiot, streaming
Model Serving EndpointsReaaliaikaiset ML-mallin inferenssiendpointitEnnusteiden tarjoaminen REST API:n kautta
SchemasUnity Catalog -skeemojaTaulujen organisointi ympäristökohtaisesti
DashboardsDatabricks AI/BI -dashboarditOperatiivinen monitorointi, liiketoimintaraportointi
Quality MonitorsDatan laadunvalvontasäännötAutomaattinen datan validointi
AppsDatabricks AppsSovelluskehitysalusta erilaisia kehyksiä käyttäen

Miten resurssipaketti toimii?

Kansiorakenne

Tyypillinen resurssipakettiprojekti näyttää tältä:

```bash
my-project/
├── databricks.yml           # Juurikonfiguraatio
├── resources/
│   ├── jobs.yml              # Jobin määrittelyt
│   ├── pipelines.yml         # Spark Declarative Pipeline -määrittelyt
│   └── model-serving.yml     # ML-mallin tarjoiluendpointit
├── src/
│   ├── notebooks/            # Notebook-lähdekoodit
│   ├── python/               # Python-pyörä- tai skriptilähteet
│   └── sql/                  # SQL-kyselytiedostot
└── tests/
    └── integration/          # Integraatiotestit
```

Esimerkki: Monivaihteinen ETL-job YAML:lla

```yaml
resources:
  jobs:
    daily_etl:
      name: "Daily Customer ETL — ${var.catalog}"
      schedule:
        quartz_cron_expression: "0 0 6 * * ?"
        timezone_id: "Europe/Helsinki"
      job_clusters:
        - job_cluster_key: etl_cluster
          new_cluster: ${var.default_cluster}
      tasks:
        - task_key: ingest_raw
          job_cluster_key: etl_cluster
          notebook_task:
            notebook_path: ../src/notebooks/01_ingest_raw.py
        - task_key: transform_silver
          depends_on:
            - task_key: ingest_raw
          job_cluster_key: etl_cluster
          notebook_task:
            notebook_path: ../src/notebooks/02_transform_silver.py
        - task_key: aggregate_gold
          depends_on:
            - task_key: transform_silver
          job_cluster_key: etl_cluster
          notebook_task:
            notebook_path: ../src/notebooks/03_aggregate_gold.py
```

Monien ympäristöjen hallinta

Resurssipaketit loistavat erityisesti monien ympäristöjen hallinnassa. Yksi `databricks.yml`-konfiguraatio voi kohdistua dev-, staging- ja tuotantoympäristöihin ympäristökohtaisilla ohiteilla.

Dev-tila vs. tuotantotila

Dev-tilassa (`mode: development`) CLI automaattisesti:

  • Lisää resurssien nimiin etuliitteen `[dev <käyttäjänimi>]` törmäysten välttämiseksi, kun useampi insinööri kehittää samanaikaisesti
  • Asettaa klusterit yksisoluisiksi kustannustehokkuuden vuoksi
  • Keskeyttää ajoitetut triggerit, jotta dev-jobit eivät aja tuotantoaikataululla

Tuotantotilassa (`mode: production`):

  • Resurssien nimet otetaan käyttöön täsmälleen määriteltyinä — ei etuliitteitä
  • Käyttöönotto vaatii `run_as`-palvelutilimäärityksen (ei henkilökohtaisia tunnuksia tuotannossa)
  • Aikataulut ja triggerit ovat aktiivisina

CI/CD-integraatio

Resurssipaketit on suunniteltu toimimaan CI/CD-putkien kanssa. Tyypillinen käyttöönotto Azure DevOps pipelineja käyttäen voisi näyttää tältä:

```yaml
# Specify the trigger event to start the build pipeline.
trigger:
  - main

parameters:
  - name: bundle
    type: string
    default: 'bundles/bundle_A'
    values:
      - 'bundles/bundle_A'
      - 'bundles/bundle_B'

stages:
  - stage: Dev
    displayName: 'Deploy to Dev Environment'
    variables:
      - group: 'db-devops-dev'
    jobs:
      - template: ../templates/validate-deploy-job.yml
        parameters:
          environment: 'dev'
          databricks_host: $(DATABRICKS_HOST)
          databricks_client_id: $(DATABRICKS_CLIENT_ID)
          databricks_client_secret: $(DATABRICKS_CLIENT_SECRET)
          bundle: ${{ parameters.bundle }}

  - stage: Test
    displayName: 'Deploy to Test Environment'
    dependsOn: Dev
    variables:
      - group: 'db-devops-test'
    jobs:
      - template: ../templates/validate-deploy-job.yml
        parameters:
          environment: 'test'
          databricks_host: $(DATABRICKS_HOST)
          databricks_client_id: $(DATABRICKS_CLIENT_ID)
          databricks_client_secret: $(DATABRICKS_CLIENT_SECRET)
          bundle: ${{ parameters.bundle }}

  - stage: Prod
    displayName: 'Deploy to Prod Environment'
    dependsOn: Test
    variables:
      - group: 'db-devops-prod'
    jobs:
      - template: ../templates/validate-deploy-job.yml
        parameters:
          environment: 'prod'
          databricks_host: $(DATABRICKS_HOST)
          databricks_client_id: $(DATABRICKS_CLIENT_ID)
          databricks_client_secret: $(DATABRICKS_CLIENT_SECRET)
          bundle: ${{ parameters.bundle }}
```

Tuotantokäyttöönotoissa suositaan palvelutilipohjaista autentikointia henkilökohtaisten käyttöoikeustunnisteiden sijaan.

Kenelle tämä sopii?

  • Data engineerit: Automatisoi pipelinejen ja jobien käyttöönotto — ei enää manuaalista klikkailua.
  • Arkkitehdit ja DevOps - asiantuntijat: Hallitsevat ympäristöjen yhtenäisyyttä ja vähentävät ympäristöjen erilleen ajautumisriskiä.
  • Organisaatiot, jotka haluavat skaalata: Siirtävät ratkaisuja luotettavasti alemmista ympäristöistä tuotantoon toistettavalla prosessilla.

Lue lisää ja ota yhteyttä

Haluatko tietää, miten Databricksin resurssipaketit voivat nopeuttaa ja turvata teidän kehitystyötä? Lue lisää palvelustamme ja varaa keskustelu:

👉 Azure Databricks -palvelu

Lisää ajankohtaisia julkaisuja:

Datasopimus käytännössä — miten data-alustan luotettavuus rakennetaan
Datatiimit käyttävät jopa 40–60 % ajastaan virheiden selvittämiseen, joiden syy on muualla. Sarake vaihtaa nimeä, tyyppi muuttuu, kenttä alkaa tulla tyhjänä — ja loppupään raportit hajoavat ääneti. Datasopimus estää tämän tekemällä odotukset näkyviksi ja valvottaviksi.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys?
Lisää tuottavuutta ohjelmistokehitykseen agenttisella kehityksellä.
Tutustu tarinaan
Tekoälyavusteinen data engineering — mitä se tarkoittaa käytännössä?
Dataputkien rakentaminen käsin on hidasta, virhealtista ja kallista. Tekoälyavusteinen data engineering muuttaa tapaa, jolla dataputkia kehitetään: kielimallit generoivat koodia, koneoppiminen tunnistaa laatuvirheet ja dokumentaatio syntyy automaattisesti. Tässä artikkelissa käymme läpi, mitä se tarkoittaa Azuressa — ja miksi se on olennainen osa modernia data-alustaa.
Tutustu tarinaan
Mitä on process intelligence ja decision intelligence?
Tutustu tarinaan
Mikä on data-agentti?
Tutustu tarinaan

Lisää ajankohtaisia julkaisuja:

Datasopimus käytännössä — miten data-alustan luotettavuus rakennetaan
Datatiimit käyttävät jopa 40–60 % ajastaan virheiden selvittämiseen, joiden syy on muualla. Sarake vaihtaa nimeä, tyyppi muuttuu, kenttä alkaa tulla tyhjänä — ja loppupään raportit hajoavat ääneti. Datasopimus estää tämän tekemällä odotukset näkyviksi ja valvottaviksi.
Tutustu tarinaan
Mitä on tekoälyavustettu sovelluskehitys?
Lisää tuottavuutta ohjelmistokehitykseen agenttisella kehityksellä.
Tutustu tarinaan
Tekoälyavusteinen data engineering — mitä se tarkoittaa käytännössä?
Dataputkien rakentaminen käsin on hidasta, virhealtista ja kallista. Tekoälyavusteinen data engineering muuttaa tapaa, jolla dataputkia kehitetään: kielimallit generoivat koodia, koneoppiminen tunnistaa laatuvirheet ja dokumentaatio syntyy automaattisesti. Tässä artikkelissa käymme läpi, mitä se tarkoittaa Azuressa — ja miksi se on olennainen osa modernia data-alustaa.
Tutustu tarinaan
Mitä on process intelligence ja decision intelligence?
Tutustu tarinaan
Mikä on data-agentti?
Tutustu tarinaan