Plattformen
Racedays Photo er laget for øyeblikket der mange fotografer laster opp samtidig, tusenvis av løpere søker etter bildene sine og alt må fungere på første forsøk. Her er hvordan systemet er bygget — og hvorfor det tåler trykket.
Originalen lagres før noe annet skjer. Resten — lesing av startnummer, ansikter, vannmerke og galleri — kjøres fra en kø som overlever omstarter.
01 · Opplasting
Hver fil lastes opp direkte til objektlagring med en tidsbegrenset, signert adresse. Serverne våre står aldri i veien for selve filoverføringen, så det finnes ingen grense for antall fotografer: én fotograf påvirker aldri en annen, og opplastingen går like fort med 3 som med 30.
Kameraer med FTP sender bildene mens fotografen jobber. Hver fil legges i en egen innlesingskø med nye forsøk, og et sveip hvert andre minutt plukker opp filer som av en eller annen grunn ikke ble behandlet.
Bilder tatt i appen lagres først på telefonen og lastes opp i bakgrunnen. Mister fotografen dekning i skogen, venter bildene trygt og sendes når nettet er tilbake.
Hvert bilde får et SHA-256-fingeravtrykk. Sendes samme fil to ganger — fordi mobilnettet falt midt i et svar — gjenkjennes den, og det blir aldri duplikater i galleriet.
02 · Skalering
Plattformen vet når løpet starter og hvor mange som deltar. Den skalerer opp før trykket kommer, og ned igjen når jobben er gjort — uten at noen må trykke på en knapp.
Antall prosesseringsnoder og databasestørrelse velges ut fra deltakerantallet — fra én node for små løp til 30 noder for løp med over 30 000 deltakere. Full kapasitet settes fra to timer før start.
Kommer det mer enn forventet, øker kapasiteten trinnvis etter hvor mange bilder som venter: fra 2 til 30 noder. Opp går umiddelbart; ned først etter ti rolige minutter.
Databasen endres aldri midt i en kø. Størrelsen settes før opplastingen starter, og antall samtidige prosesser holdes under det databasen tåler — så den aldri blir flaskehalsen.
03 · Ingen tapte bilder
Det verste som kan skje på en løpsdag, er at et bilde forsvinner. Hele kjeden er bygget for at det ikke skal skje — også når noe går galt underveis.
Originalfilen ligger i objektlagring før behandlingen starter. Alt annet — forhåndsvisning, vannmerke, søk — kan lages på nytt fra den.
Jobbene ligger i en varig kø, ikke i minnet til én server. En omstart eller ny versjon midt i løpet betyr bare at en annen node tar over jobben, med automatiske nye forsøk og økende ventetid.
Svarer ikke AI-lesingen av startnummer, publiseres bildet uten nummer og settes på en egen venteliste. Så snart tjenesten svarer igjen, leses bildene på nytt automatisk. Vi bytter aldri til en dårligere leser som gir feil numre.
04 · Oppetid
Det løperne ser og det som behandler bilder, er skilt fra hverandre. En tung kø med bilder gjør ikke galleriet tregere, og en feil i behandlingen tar ikke ned søket.
Nettsiden, galleriet og søket kjører på en globalt distribuert webplattform. Bildebehandlingen kjører på egne noder i en egen tjeneste. Den ene kan ha det travelt uten at den andre merker det.
Feiler en ekstern tjeneste gjentatte ganger, pauses kallene en kort stund i stedet for å hamre løs. Systemet roer seg selv ned og tar seg opp igjen av seg selv.
Ferdige bilder serveres fra et CDN nær løperen, med paginering i galleriet — så ti tusen løpere som åpner galleriet samtidig er et normalt øyeblikk, ikke et unntak.
05 · Søk
Hvert bilde leses av AI for startnummer og ansikter. Løperen søker med startnummer, navn eller en selfie — og får bildene sine fra hele løypa.
Også delvis skjulte nummer leses — men bare når lesingen passer nøyaktig ett nummer i startlisten. Heller ingen tagg enn feil tagg.
Ansikter grupperes per person. Et nummer som er bekreftet på flere bilder, spres til bildene der skiltet er skjult — aldri til et ansikt der det synlige nummeret sier noe annet.
Startlister og resultater hentes automatisk fra Racedays, EQ Timing og Ultimate — hvert kvarter mens løpet pågår — så navn, distanse og sluttid følger bildene.
06 · Økonomi og personvern
Arrangøren er selger av bildene sine. Hvert kjøp splittes automatisk i betalingsløsningen, og persondata behandles i EU.
Betalingen tas gjennom Dintero og splittes per ordrelinje: Racedays tar 10 % av salget, resten er arrangørens og utbetales månedlig. Salget stopper aldri mens avtalen godkjennes.
Arrangøren velger selv: gratis nedlasting (gjerne sponsorert), eller salg med egne priser. Statistikken viser nedlastinger og salg per distanse og klasse.
Ansiktsdata brukes kun til søk innenfor løpet, behandles i EU og slettes når bildene eller løpet slettes.
Over ti fotografer lastet opp 17 842 bilder fra løpet med rundt 4 000 deltakere, mange av dem via FTP rett fra kameraet. Systemet skalerte automatisk på løpsdagen, bildene ble søkbare fortløpende under løpet, og hver person som lastet ned bilder tok i snitt 5,8 bilder. Løpsrapporten ligger på photo.racedays.run/blog/hytteplanmila-2026.
På Hytteplanmila 2026 jobbet over ti fotografer langs løypa — men det finnes ingen øvre grense. Hver fotograf laster opp direkte til lagring, så én fotograf påvirker aldri en annen, og det går like fort uansett hvor mange dere er. Arrangøren kan bruke egne eller lokale fotografer, eller Racedays kan introdusere profesjonelle fotografer. Alle laster opp til det samme løpet; arrangøren inviterer dem i panelet og ser hvem som har lastet opp hva.
Bildene behandles fortløpende mens de lastes opp — også under løpet. Med FTP sendes bildene fra kameraet mens fotografen jobber. Hvert bilde går gjennom en kø som leser startnummer og ansikter; plattformen skalerer antall noder etter køen, så ventetiden holdes kort også når mange laster opp samtidig.
Ja. Kapasiteten settes automatisk ut fra deltakerantallet (opptil 30 parallelle prosesseringsnoder for de største løpene) og øker videre etter hvor mange bilder som venter i køen. I full skala behandles rundt 540 bilder i minuttet, altså over 30 000 i timen. Opplasting går direkte til objektlagring, så det er ingen grense for hvor mange fotografer som laster opp samtidig.
Arrangøren er selger. Betalingen tas gjennom Dintero og splittes automatisk per kjøp: Racedays tar 10 % av salget, og arrangøren får resten utbetalt månedlig. Betalingsgebyret trekkes fra arrangørens andel. I tillegg avtales en bildeavgift per løp. Løpet kan også ha gratis nedlasting, for eksempel sponset.
Originalene lagres før behandlingen starter, og jobbene ligger i en varig kø med automatiske nye forsøk, så en omstart mister ingen bilder. Er AI-lesingen av startnummer nede, publiseres bildene uten nummer og leses automatisk på nytt når tjenesten er tilbake. Galleriet kjører adskilt fra bildebehandlingen og påvirkes ikke av en travel kø.
Fortell oss om deltakere, distanser og fotografer, så setter vi opp kapasiteten før løpsdagen.