Composable Data Stack voor data engineers

Wat het is

CDS is een compiler en CLI voor declaratieve data stacks. Je beschrijft de stack in YAML. CDS valideert die, lost de koppelingen op en rendert er één Docker Compose-model of een Kubernetes-target van. CDS draait zelf geen containers. Voor  cds up  roept het de echte  docker compose  aan.

Bouwstenen

  • Modules ( modules///module.yaml ) zijn herbruikbare definities. Ze bevatten:
  • een gesloten JSON-Schema- configSchema  met defaults,
  • de contracten die ze leveren ( provides ) en gebruiken ( consumes ),
  • een inline Docker Compose-template.
  • Profielen ( profiles/ ) kiezen module-instanties en de topologie.
  • Contracten ( shared/contracts/ ) beschrijven de interfaces tussen modules. Voorbeelden zijn een database-verbinding, een lineage-sink en een identity provider.

Een module kent de servicenaam van een andere module niet. Een provider biedt een benoemd contract aan. De consumer koppelt het via mappedFrom, en het profiel legt de binding met contractRef: .. Zo wissel je Postgres voor een ander warehouse zonder de rest aan te passen.

De compile-pipeline

  1. Validate: controleert de vorm van profiel en modules, de modulepaden, de dependency-graph, secrets en contractcompatibiliteit.
  2. Plan: past schema-defaults toe en lost contracten op tot een  cds/v1alpha1 -Plan.
  3. Render: expandeert  ${config.} ,  ${bindings.}  en  ${service.host}  en levert één Compose-model op.

Fouten komen terug als gestructureerde diagnostics met een stabiele code, een melding en een exact datapad. Bij foutmeldingen stopt CDS vóór de volgende stap.

Beveiliging

  • Secret-waarden komen nooit in plannen of gerenderde Compose-bestanden. Profielen mappen aliassen naar  CDS_* -omgevingsvariabelen, en Docker Compose lost die pas bij runtime op.
  •  cds test  draait validate, de security-regels, plan en render. De regels staan als data in  rule-set.json , dus je kunt ze uitbreiden zonder Python te schrijven.
  • Imagehardening (non-root, read-only root, dropped capabilities) en hash-locked dependencies zijn onderdeel van de baseline.

Snel starten

Een eigen module toevoegen

  1. Maak  modules/<categorie>/<naam>/module.yaml  met  apiVersion: cds/v1alpha1  en  kind: Module .
  2. Definieer  configSchema  met defaults en de  provides / consumes -contracten.
  3. Schrijf de Compose-template onder  spec.implementation .
  4. Verwijs ernaar vanuit een profiel en draai  cds validate .

Waarom dit voor je werkt

  • Reproduceerbare stacks: dezelfde YAML levert dezelfde uitkomst.
  • Fouten ontdek je vroeg, niet pas bij deploy.
  • Geen vendor lock-in door contractgebaseerde koppelingen.
  • Tests draaien zonder Docker ( unittest ,  unittest.mock ).

Ook uitgelegd voor

Terug naar Composable Data Stack (CDS) · Broncode op GitHub · Contact

Scroll naar boven