Skip to main content

Bygge pipelines

En pipeline er en prosess der data flyter fra ett sted via et eller flere steg til et annet sted. Dette kan for eksempel være ren innhenting av rådata, transformering av data fra en form til en annen eller sammenstilling av flere datakilder.

Når man bygger pipelines med flere "transformasjonssteg" er det fort gjort å miste oversikten. For å unngå dette bør man ta i bruk en strukturert løsning for å koble transformasjoner sammen. Denne prosessen kalles orkestrering. En orkestreringsløsning har tre hovedfunksjoner:

  • Samlende funksjon – samle alle pipelines på ett sted
  • Beskrivende funksjon – pipelinen kan visualiseres som en graf av steg som skal kjøres
  • Kjøre stegene på riktig måte til riktig tid - løsningen tar seg av tidsplanlegging, rekkefølge, omprøving, o.l.

Saga tilbyr en ferdig oppsatt orkestreringstjeneste basert på Cloud Composer, som er GCP sin tjeneste for Apache Airflow. Bildet under viser hvordan en orkestreringspipeline kan se ut.

Et eksempel på en pipeline i Airflow Figur: Eksempel på hvordan en pipeline visualiseres i Airflow

Når bør du ikke bruke Airflow?

I utgangspunktet bør Airflow være standardvalget når du skal lage pipelines i Saga. Men det finnes noen tilfeller hvor den ikke er godt egnet.

Pipelines som må kjøre kontinuerlig eller veldig ofte

Dersom din pipeline skal prosessere data i sanntid (streaming) skal du ikke bruke Airflow. Det samme gjelder dersom pipelinen må kjøre oftere enn cirka hvert 10. minutt.

Pipelines som ikke tåler forsinkelser eller nedetid

Vi har erfart at Airflow av og til kan gå ned. Når dette skjer kan det ta flere dager før det er oppe igjen. Derfor bør man ikke bruke Airflow for pipelines hvor det er kritisk at pipelinen kjøres på et nøyaktig tidspunkt. Merk at man uansett bør prøve så langt det lar seg gjøre å unngå å bygge pipelines som er sensitive for når de kjøres.

I tillegg bør man ikke bruke Airflow til pipelines som ikke tåler noen dagers nedetid, av samme årsak som over. Det kan være greit å vite at Airflow har innebygde mekanismer som gjør at den kan hente seg inn igjen etter at den har vært nede. Blant annet vil den kunne oppdage dersom det mangler kjøringer av pipelines i forhold til hva som var planlagt. Den kan da kjøre disse i etterkant. Dette fungerer best dersom du bygger pipelines som alltid prosesserer data for en gitt tidsperiode. Da kan den prosessere data fra disse tidsperiodene når Airflow er oppe igjen.

Når Airflow ikke passer

Dersom du har konkludert med at du ikke kan bruke Airflow til din pipeline kan du vurdere om andre typer pipelines passer bedre. Om du er usikker på om du bør bruke Airflow eller ei kan du spørre Yggdrasil på #saga-support på Slack.

Tilbakemeldinger

Si fra på #saga-support på Slack hvis noe er uklart eller mangler, så skal vi forsøke utvide dokumentasjonen så snart vi kan.