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:

Mitä on Unit Economics -analyysi?
Tiedät liikevaihtosi, katteesi ja tuloksesi — mutta tiedätkö, tuottaako yksittäinen asiakkuus enemmän arvoa kuin sen hankkiminen ja palveleminen maksaa? Unit economics vastaa juuri tähän kysymykseen. Tämä artikkeli avaa, mitä unit economics tarkoittaa, mistä komponenteista se rakentuu ja miten sitä sovelletaan käytännössä — esimerkkinä sopimusperusteinen B2C-liiketoiminta, jossa asiakas voi pitää yhtä aikaa useita voimassaolevia sopimuksia.
Tutustu tarinaan
Millainen on data-alustan kehittämisprojekti?
Organisaation data-alustan rakentaminen tai modernisointi ei ole perinteinen IT-projekti. Se on kehityshanke, jossa teknologia, liiketoiminnan ymmärrys ja tiedonhallinta kietoutuvat yhteen — ja jossa todellinen työ alkaa vasta kun oikea data kohtaa oikean maailman haasteet. Tässä blogissa pureudumme data-alustaprojektin luonteeseen, vaiheisiin, riskeihin ja parhaisiin käytäntöihin. Käymme läpi, miksi data-alustaprojekti on enemmän tutkimusmatka kuin kartta, ja miten tekoäly muuttaa tätä kokonaisuutta.
Tutustu tarinaan
Mitä on henkilöstöanalytiikka
Jokainen organisaatio tekee jatkuvasti päätöksiä ihmisistä — rekrytoinneista, palkankorotuksista, osaamisen kehittämisestä, työvoimasuunnittelusta. Mutta kuinka moni näistä päätöksistä perustuu dataan? Tämä artikkeli avaa, mitä henkilöstöanalytiikka käytännössä tarkoittaa, mitä hyötyjä se tuo ja miten hajallaan oleva HR-data muutetaan päätöksentekoa ohjaavaksi kokonaisuudeksi.
Tutustu tarinaan
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

Lisää ajankohtaisia julkaisuja:

Mitä on Unit Economics -analyysi?
Tiedät liikevaihtosi, katteesi ja tuloksesi — mutta tiedätkö, tuottaako yksittäinen asiakkuus enemmän arvoa kuin sen hankkiminen ja palveleminen maksaa? Unit economics vastaa juuri tähän kysymykseen. Tämä artikkeli avaa, mitä unit economics tarkoittaa, mistä komponenteista se rakentuu ja miten sitä sovelletaan käytännössä — esimerkkinä sopimusperusteinen B2C-liiketoiminta, jossa asiakas voi pitää yhtä aikaa useita voimassaolevia sopimuksia.
Tutustu tarinaan
Millainen on data-alustan kehittämisprojekti?
Organisaation data-alustan rakentaminen tai modernisointi ei ole perinteinen IT-projekti. Se on kehityshanke, jossa teknologia, liiketoiminnan ymmärrys ja tiedonhallinta kietoutuvat yhteen — ja jossa todellinen työ alkaa vasta kun oikea data kohtaa oikean maailman haasteet. Tässä blogissa pureudumme data-alustaprojektin luonteeseen, vaiheisiin, riskeihin ja parhaisiin käytäntöihin. Käymme läpi, miksi data-alustaprojekti on enemmän tutkimusmatka kuin kartta, ja miten tekoäly muuttaa tätä kokonaisuutta.
Tutustu tarinaan
Mitä on henkilöstöanalytiikka
Jokainen organisaatio tekee jatkuvasti päätöksiä ihmisistä — rekrytoinneista, palkankorotuksista, osaamisen kehittämisestä, työvoimasuunnittelusta. Mutta kuinka moni näistä päätöksistä perustuu dataan? Tämä artikkeli avaa, mitä henkilöstöanalytiikka käytännössä tarkoittaa, mitä hyötyjä se tuo ja miten hajallaan oleva HR-data muutetaan päätöksentekoa ohjaavaksi kokonaisuudeksi.
Tutustu tarinaan
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