Serverless compute¶
Dataplattformen bruker serverless-tjenester i AWS for å kjøre kode som henter data fra eksterne API-er og skriver til landing zone. Denne siden forklarer de tilgjengelige compute-alternativene, hvordan de fungerer, og bakgrunnen for hvert mønster.
Hvorfor serverless?¶
Databricks håndterer planlagte jobber og transformasjoner godt, men kan ikke selv nå ut til eksterne API-er. For pull-basert datainnlasting — der plattformen henter data i stedet for å motta dem — trengs et lett compute-lag utenfor Databricks.
Serverless passer godt fordi:
- Ingen infrastruktur å drifte. AWS provisjonerer og skalerer compute automatisk.
- Betal per bruk. Du betaler bare for tiden koden kjører, ikke for ledige servere.
- Hendelsesstyrt. Funksjoner kan trigges av tidsplaner (EventBridge), hendelser eller manuell kjøring.
- Kortlevd av natur. De fleste API-kall fullføres på sekunder, noe som gjør serverless kostnadseffektivt.
Lambda vs. Fargate¶
Plattformen støtter to serverless compute-tjenester:
AWS Lambda¶
Lambda kjører en funksjon som respons på en hendelse. Funksjonen starter, gjør jobben sin, og avsluttes. Lambda er ideelt for korte, fokuserte oppgaver som å hente data fra et API.
Egenskaper:
- Maks kjøretid: 15 minutter
- Maks minne: 10 GB
- Maks deploy-pakke: 250 MB (zip) eller 10 GB (container image)
- Faktureres per millisekund kjøretid
- Cold starts: typisk 100–500 ms (zip), 1–3 sekunder (container)
Amazon ECS Fargate¶
Fargate kjører en Docker-container som en ECS-task. Det er ingen tidsbegrensning, og tjenesten støtter vesentlig mer minne og CPU. Bruk Fargate når Lambdas begrensninger er for stramme.
Egenskaper:
- Maks kjøretid: ubegrenset (ingen timeout)
- Maks minne: 30 GB
- Maks CPU: 4 vCPU
- Ingen grense for deploy-størrelse (Docker image)
- Faktureres per sekund kjøretid (minimum 1 minutt)
- Oppstartstid: typisk 30–60 sekunder
Når bruke hva¶
| Faktor | Lambda | Fargate |
|---|---|---|
| Jobbvarighet | Under 15 minutter | Vilkårlig varighet |
| Avhengighetsstørrelse | Under 250 MB (zip) eller 10 GB (container) | Ubegrenset |
| Oppstartsfart | Rask (under et sekund til noen sekunder) | Tregere (30–60 sekunder) |
| Kostnad for korte jobber | Svært lav | Høyere (1 min minimum fakturering) |
| Kompleksitet | Enkel template | Flere ressurser å konfigurere |
Tommelfingerregel: Bruk Lambda med mindre du har en konkret grunn til å ikke gjøre det. De fleste API-innhentingsjobber fullføres på sekunder og har få avhengigheter — Lambda er det naturlige valget.
Pakkealternativer for Lambda¶
Lambda støtter to pakkeformater som bestemmer hvordan koden og avhengighetene dine leveres:
Zip-pakking¶
Standard. SAM pakker src/-mappen din og requirements.txt til en zip-fil, laster opp til S3, og peker Lambda-funksjonen dit.
- Enkelt og raskt å deploye
- Begrenset til 250 MB utpakket (inkludert avhengigheter)
- Bruker den AWS-administrerte Lambda-runtimen (Python 3.12 på ARM64)
Container image-pakking¶
For funksjoner som trenger store avhengigheter (pandas, numpy, scikit-learn osv.) pakker du funksjonen som et Docker-image. SAM bygger imaget og pusher det til ECR.
- Støtter opptil 10 GB image-størrelse
- Bruker det offisielle AWS Lambda Python-base-imaget (
public.ecr.aws/lambda/python:*) - Handler-grensesnittet er det samme — bare pakkeformatet er annerledes
- Noe lengre cold starts sammenlignet med zip
Statisk IP (VPC-integrasjon)¶
Noen eksterne API-er krever IP-hvitelisting (white listing) — de godtar bare forespørsler fra et kjent sett IP-adresser. Plattformen har en delt VPC med NAT Gateway som gir en fast utgående Elastic IP for alle serverless-funksjoner.
VPC-arkitekturen¶
Plattformteamet provisjonerer en delt VPC på kontonivå via Terraform (padda-iac). Denne VPC-en deles mellom alle workspaces i kontoen:
flowchart TD
subgraph VPC["Delt VPC"]
subgraph Public["Offentlig subnett"]
NAT[NAT Gateway\nStatisk Elastic IP]
end
subgraph WS1["Workspace-subnett (per workspace)"]
LS[Lambda-subnett\nAZ-a + AZ-b]
ES[ECS-subnett\nAZ-a + AZ-b]
end
end
LS -->|all utgående trafikk| NAT
ES -->|all utgående trafikk| NAT
NAT --> Internet[Internett / eksterne API-er]
Hvert workspace får dedikerte subnett:
- Lambda-subnett — to private subnett (ett per tilgjengelighetssone) for Lambda-funksjoner
- ECS-subnett — to private subnett (ett per tilgjengelighetssone) for Fargate-tasks
Subnett-IDer og sikkerhetsgruppe lagres i SSM Parameter Store og kan refereres direkte i SAM-templater.
Fargate — statisk IP automatisk¶
Fargate-tasks kjører alltid i VPC-ens ECS-subnett. All utgående trafikk rutes automatisk gjennom NAT Gateway. Du trenger ikke gjøre noe ekstra — statisk IP er inkludert.
Lambda — statisk IP som tillegg¶
Lambda kjører som standard utenfor VPC-en og har ikke en fast IP-adresse. For å få statisk IP legger du til en VpcConfig-blokk i SAM-templaten som plasserer funksjonen i Lambda-subnettene. Dette fungerer for både zip- og container-baserte Lambdaer.
Avveininger for Lambda i VPC:
- Legger til cold start-latens (1–2 sekunder ekstra) fordi Lambda må opprette et nettverksgrensesnitt (ENI) i VPC-en
- Lambdaen kan ikke nå det offentlige internett uten NAT Gateway
- Krever
AWSLambdaVPCAccessExecutionRolei tillegg til standard execution role
Se Hente data via API — Legg til statisk IP for steg-for-steg-instruksjoner.
Fargate-roller¶
En Fargate-task trenger tre IAM-roller, hver med et tydelig formål:
| Rolle | Principal | Formål |
|---|---|---|
| TaskExecutionRole | ecs-tasks.amazonaws.com |
Lar ECS hente Docker-imaget fra ECR og skrive logger til CloudWatch. Bruker managed policy AmazonECSTaskExecutionRolePolicy. |
| TaskRole | ecs-tasks.amazonaws.com |
Rollen applikasjonskoden din kjører med. Gi den tilgangene tasken trenger (f.eks. S3-skriving, SSM-lesing). |
| EventBridgeRole | events.amazonaws.com |
Lar EventBridge trigge ecs:RunTask og sende videre execution/task-rollene. Trengs bare hvis du bruker en tidsplan. |
Alle roller krever workspace sin permission boundary.
SAM og CloudFormation¶
Alle serverless-ressurser defineres med AWS Serverless Application Model (SAM), som er en utvidelse av CloudFormation. SAM forenkler Lambda- og API Gateway-definisjoner med kortform-syntaks (AWS::Serverless::Function) samtidig som den støtter rå CloudFormation-ressurser for ting som ECS-clustere og IAM-roller.
Deploy-pipelinen bruker SAM CLI til å bygge og deploye hver funksjon som en uavhengig CloudFormation-stack. Det betyr at hver funksjon kan deployes, oppdateres og rulles tilbake uavhengig.
Se SAM-deploy for teknisk referanse om navnekonvensjoner, tilganger og CI/CD-konfigurasjon.