NRK.no relanserte seg, men tviler på at noen merka det

- Målet vårt var i utgangspunktet å ikke ha noe caching, forteller NRK-utviklerne, om hvordan de lager NRK.no.

John Arne Skjervold Pedersen, Ingrid Grønlie Guren og Silje Rosvoll er på teamet som lager NRK.no. 📸: NRK
John Arne Skjervold Pedersen, Ingrid Grønlie Guren og Silje Rosvoll er på teamet som lager NRK.no. 📸: NRK Vis mer

NRK.no er med rundt 1,5 millioner daglige brukere Norges nest største nyhetsnettsted.

Produktutviklingssjef Audun Aas i NRK.no forteller til kode24 at nettstedet lages av NRK.no-teamet, som igjen er ett av mange team organisert under publikumsprodukter på nett i NRK.

Aas har fått hjelp av kollegaene John Arne Skjervold Pedersen, Ingrid Grønlie Guren og Silje Rosvoll til å svare på kode24s "Min stack"-spørsmål.

– Hvor mange utviklere jobber med NRK.no?

— Vi er et team på rundt 30 personer fordelt på utviklere, DevOps, design, UX, brukerstøtte, teamledere og produktutviklingssjef. 18 av oss er utviklere, seks av disse jobber i Bodø med ansvar for NRK.no-appen og pushvarsler, resten sitter på Marienlyst i Oslo.

Teamet har ansvaret for forsiden, seksjonssider, artikler og mobilappene til NRK.no. I tillegg lager de publiseringsverktøy som journalistene bruker for å produsere og publisere innhold. Disse verktøyene har rundt 1000 interne brukere fordelt på 50 distriktskontorer, i tillegg til flere redaksjoner på Marienlyst.

– NRK.no er også en plattform hvor andre team i NRK får innhold ut til publikum. Det er for eksempel visuelle moduler, spesialartikler, lyd, video og kart fra andre systemer, avstemning under Stjernekamp og Maskorama eller større prosjekter som valget eller Prevensjonsguiden.

«Vi er åpne for å teste nye rammeverk og programmeringsspråk.»

– Hva bygger dere backenden med?

Vi håndterer et spekter av systemer, og noen av dem begynner å dra på årene. For eksempel er artikkelriggen vår satt opp før 2005 og er for det meste en klassisk Java-stack.

– I bunnen ligger et gammelt CMS – Content Management System – ved navn Polopoly, men det har vi tilpasset såpass mye de siste 15 årene at det nok knapt vil være gjenkjennelig for leverandøren.

– De siste årene har vi også tatt i bruk Sanity, som brukes i kombinasjon med Polopoly. CMS-et for forsiden har vi skrevet selv. Det har Java-basert API i bunnen, men selve CMS-et er egenskrevet i Node.js med React. Nå om dagen bygger vi mest i Node.js og TypeScript, bortsett fra rene backend-tjenester/API-er hvor vi fortsatt bruker Java.

– Kan du si litt om hvorfor dere valgte nettopp disse teknologiene?

– Opprinnelig var teamet bare Java-utviklere, og Java var det åpenbare valget når noe nytt skulle bygges.

– Etter hvert har det skjedd en utskiftning til mer fullstack eller rene webutviklere, som gjør at mye nytt bygges i JavaScript eller TypeScript. Men for hvert nye prosjekt vurderer vi programmeringsspråk/teknologi etter hva systemet skal gjøre, kompetanse i teamet og fagmiljøene i NRK.

– Vi er åpne for å teste nye rammeverk og programmeringsspråk, men gjør det vanligvis for kortlevde eksperimenter eller andre ikke-kritiske komponenter.

– Hvordan har disse valgene fungert for dere?

– I den gamle artikkelriggen brukes JSP til uttegning, noe som var kult i 2005, men veldig gammeldags nå. Der er vi i en prosess med å bytte ut til en ny uttegning som også skal gi oss nye muligheter til personalisering og nye innholdsformater.

– Og frontenden, hvordan lager dere den?

– I web-laget til NRK.no finnes det mange ulike teknologier og rammeverk, men felles for de fleste er JavaScript eller TypeScript. Av rammeverk på NRK.no finnes det alt fra React og Svelte til lit-html, og av styling finner vi alt fra Stylus og Sass til ren CSS.

– Vi relanserte uttegningen av forsiden til NRK.no for et par år siden. Visuelt var den helt lik, så vi tviler på at dere la merke til det. Målet den gangen var å lage en forside som var raskere, lettere og som kunne utnytte klientsidemoduler med for eksempel innlogging til små personlige justeringer.

– Til dette valgte vi en utvidet versjon av lit-html og Custom Elements. Opprinnelig ble forsiden skrevet i JavaScript, men etter hvert tilførte vi TypeScript for mer trygghet og kontroll. Den har Server-side rendering med in memory-caching av enkeltelementer.

– I tillegg har forsiden til NRK.no mulighet til å inkludere mindre innholdselementer fra vårt team eller andre team. Dette gjør det lett for å oss å teste små konsepter eller la andre team utvikle moduler som kan puttes rett på forsiden.

– Akkurat nå tester vi blant annet nyheter fra distriktene, de viktigste nyhetene oppsummert og personaliserte anbefalinger fra NRK Radio og NRK TV for de som er logget inn.

– Hvordan har disse teknologiene fungert for dere?

– For forsiden har det fungert bra. Målet vårt var i utgangspunktet å ikke ha noe caching på forsiden, men siden vi har så mange brukere landet vi på et par sekunder caching likevel. Forsiden er både stabil og lett å videreutvikle, så vi er fornøyde med valget.

«NRK.no har et særskilt beredskapsansvar, noe som gjør at forsiden til NRK.no alltid skal være tilgjengelig.»

– Bruker dere andre verktøy?

– Hele NRK.no er på Kubernetes og i skyen. Vi etterstreber å ha all infrastrukturen i Terraform og Vault slik at vi kan slette og gjenopprette våre Kubernetes-clustre ved behov.

– Vi driver selvsagt med kontinuerlig utrulling med en såpass god testdekning at vi ikke er redd for å prodsette flere av systemene våre uavhengig av nyhetsbildet. Vi har en god blanding av enhetstester og akseptansetester som gir en bra avveining av hurtighet vs. grundighet.

– NRK.no har et særskilt beredskapsansvar, noe som gjør at forsiden til NRK.no alltid skal være tilgjengelig. Derfor er NRK.no på tre datasentre for full redundans, hvorav et i Norge.

– Vi er også leverandøruavhengig og har datasentre hos både Microsoft Azure og Google Cloud.