docs

Det tekniske som møter appen din

Dette er rammene appen din kjører i: kjøretiden, lagringen, nivåforskjellene og nettet. Alt her er kontrakt — det interne maskineriet kan vi bytte uten at noe av dette endrer seg.

alt i Norgekontraktfestede rammer

Kjøretiden

workerd (JS/TS, standard): appen er en ES-modul med en fetch-handler og starter på millisekunder. Semantikken fryses av compatibility_date — oppførselen endrer seg aldri under deg. nodejs_compat-flagget gir node:-API-er, inkludert TCP mot databasen. 128 MB minne som standard, 30 sekunder request-timeout, ingen lokal disk — varige filer hører hjemme i bøtta, varig tilstand i databasen.

Container: din egen Dockerfile når du trenger Python, Go eller et bestemt bibliotek. Appen lytter på en port (standard 3000), får en helsesjekk ved oppstart, og 0,5 vCPU / 512 MiB (stor: 1 vCPU / 1 GiB). Imaget bygges av plattformen fra repoet ditt på git.nysky.no — hele byggeveien er i Norge. release_command kjøres isolert før trafikk flyttes, til migrasjoner.

Begge kjøretidene skalerer til flere parallelle instanser under last ([scaling].max_replicas, standard 4). For container er mer enn én instans en erklæring om at appen er statsløs.

Tre typer lagring

  • PostgreSQL — én database per [[datastores]]-oppføring, provisjonert automatisk. Row-Level Security kan slås på (og håndheves reelt med rls = "enforced", som skiller kjøretidsrollen fra eierrollen). Utvidelser som pgcrypto er tilgjengelige.
  • Nøkkel/verdi[[kv]] gir et eget lite lager med ferdig tabell (k, v jsonb, expires_at) for ting som skal huskes kort.
  • Filer[[buckets]] gir S3-kompatibel objektlagring (SigV4); alle S3-klienter og -biblioteker virker som de pleier.

Alt lagres og sikkerhetskopieres daglig i Norge. Kapasiteten følger nivået (se kvotene på prissiden); bruk måles per app, men prises ikke separat i dag. Appens konsollogg krypteres til en nøkkel bare kontoen din har, og leses med nysky logs.

Hva som teknisk skiller nivåene

Nivået endrer aldri API-et eller manifestet — samme app kan flyttes mellom nivåer uten kodeendring. Det som faktisk varierer:

  • Våkenhet: gratis-appen skaleres ned mellom bruk og vekkes automatisk på noen sekunder ved neste forespørsel (forespørselen holdes og besvares — ingen feil hos brukeren). Betalte apper står alltid klare.
  • Innlogging: på gratis, Personlig og Gruppe legger plattformen nysky ID-innlogging foran appen; gate_stier avgrenser hvilke stier, men gaten kan ikke skrus av. På Fri er den valgfri. Tom delingsliste = kun kontoens utviklere, på alle nivåer.
  • Faste jobber: tettest hver time på Personlig/Gruppe, fri frekvens på Fri og Container. Inntil 4 per app; gratis har ingen.
  • Kapasitet: på Fri stor og Container er kapasiteten appens egen — ingen naboer å dele kraft med, mer CPU og minne, og trafikk ut over kvoten trekkes i stedet for å strupes.
  • Kvoter: database, fillagring og trafikk vokser med nivået — tallene står i priser.json.

Nett, identitet og headere

  • Utgående nett er stengt som standard. egress-listen åpner navngitte vertsnavn over HTTPS. Egne datastores og bøtter nås alltid.
  • App-til-app: [[kall]] åpner intern vei til en annen app på samme konto og gir KALL_<APP>_URL. Kall krysser aldri kontogrenser.
  • Bak gaten: hver forespørsel bærer X-Nysky-Auth-User (e-post) og X-Nysky-Auth-Sub (stabil id). Bruk sub som brukernøkkel — e-post kan endres.
  • Faste jobber: kallet bærer X-Nysky-Cron-Key; sammenlign med appens NYSKY_CRON_KEY-binding før du gjør jobben.
  • Sti-adresser: nås appen via en bedriftskontos sti-adresse, strippes prefikset før appen ser forespørselen, og appen får det i X-Nysky-Base-Path. Apper med egen kapasitet rutes direkte og får ikke headeren — bruk relative lenker, eller den flate adressen.
  • Ingress-atferd styres i manifestet: kropp-størrelse, timeout og SSE ([http]).

Leveransekjeden

  • Deploy er deterministisk og idempotent: samme kilde gir samme bundle, og en deploy uten endringer er en no-op. nysky plan viser diffen først.
  • Push-to-deploy: koble repoet med nysky git deploy enable, så ruller hver push til grenen ut appen.
  • Previews: hver pull request kan få sin egen kjørende utgave på egen adresse, med syntetiske testdata — aldri produksjonsdata eller produksjons-secrets.
  • Plattform-CI: [ci] + nysky ci run kjører testene dine i plattformens byggemiljø (node 22, corepack) — ingen egen runner.
  • Planlagt deploy: promotér et ferdig bygg på et tidspunkt, med automatisk tilbakerulling hvis verifiseringen feiler.

Rammene her er kontrakt — det interne maskineriet kan byttes uten at de endres.

Samme app kan flyttes mellom nivåer uten kodeendring.

Utgående nett er stengt til appen selv åpner det.

Videre