Yr: - Cache er alfa og omega for oss

Slik takler Yr 11 millioner unike brukere på én uke, og enorme datamengder om all verdens vær.

Hils på Sigbjørn Trageton, Tommy Skarateppen og Andreas Thomassen! Trioen er backend-utviklere i Yr. 📸: Pernille Johnsen
Hils på Sigbjørn Trageton, Tommy Skarateppen og Andreas Thomassen! Trioen er backend-utviklere i Yr. 📸: Pernille Johnsen Vis mer

- Nordmenn er langt over snittet værinteresserte. Det er jo det folk prater om, smiler fulltack-utvikler Sigbjørn Trageton i Yr.

De aller fleste nordmenn har et forhold til Yr; for blir det påskesol? Vil det hagle på 17. mai? Yr serverer som regel et presist svar.

Nettstedet og appene gir nordmenn, og overraskende mange i utlandet, værvarsel og annen meterologisk innsikt.

Yr huser værvarsel for én millioner steder i Norge og over elleve millioner steder globalt. Yr er størst i Norge, men trafikken kommer også fra Sverige, Tsjekkia og Sør-Afrika.

Pinsen i 2019 markerte en topp på alle Yrs plattformer, med vanvittige 11 millioner unike brukere på én uke.

- Suksessoppskriften til Yr er at tjenesten er lett å forstå, har et bra design og er en svært omfattende tjeneste, konstaterer backend-utvikler Tommy Skarateppen overfor kode24.

MET + NRK = Yr

Yr er et samarbeidsprosjekt mellom Meteorologisk institutt (MET) og NRK. Disse to pålene i norsk samfunnsstruktur har samarbeidet om været siden 1920-tallet for radio og siden 1960-tallet for TV.

- MET har ansvar for vær- og klimadata og kvaliteten på værvarslene. Yr står for design, presentasjon og redaksjonelt innhold, forteller Trageton.

Utviklerne beskriver samarbeidet som et godt og konstruktivt ''ekteskap'' med to statusmøter i måneden, der de går gjennom hva som jobbes med, hvilke utfordringer de enkelte partene har og løsninger på problemer.

I tillegg er det daglig kontakt via Slack og forskjellige workshops ved større endringer.

Dresscode i Yr er at alle må ha en blånyanse på overkroppen som går i ett med Yr-logoen. Neida. 📸: Pernille Johnsen
Dresscode i Yr er at alle må ha en blånyanse på overkroppen som går i ett med Yr-logoen. Neida. 📸: Pernille Johnsen Vis mer

Azure og .NET Core

Yr har fire tjenester: En gammel desktopversjon (yr.no), den nye responsive webversjonen (yr.no/nb) og to apper for henholdsvis iOS og Android.

I 2016 begynte utviklerne å lage Yrs nye API-er i Azure, med språkene C# og F#. I det siste har de begynt å splitte opp denne mastodonten i mindre komponenter basert på .NET Core.

- Fordelen med dette rammerverket er at det er plattformuavhengig. Det kan for eksempel kjøres fra Linux, og det er en stor styrke, forteller Skarateppen.

All data har også informasjon om hvor lenge de er gyldige, og når brukeren gjør noe, trigger koden på klienten en ny henting av oppdaterte data.

- Nå-varselet har for eksempel en gyldighet på fem minutter. Derfor sørger koden for at disse hentes hvert femte minutt, forteller Thomassen.

Node og React

Yr-utviklerne jobber med å strukturere datamengden fra Met, og bruker den globale servertjenesten Akamai som cacheleverandør.

«Cache er alfa og omega for oss.»

- Cache er alfa og omega for oss, siden vi håndterer så store datamengder og må bremse antall forespørsler til MET. Vårt API bearbeider, forenkler og tilpasser dataen vi får fra METs API. Noe av dataen fra Yrs API må også bearbeides videre i klienten, forteller Thomassen.

- Yr sine nettsider en en single-page-app, basert på Node og React. Klienten laster kun en HTML-side, og blokkene oppdateres dynamisk etter hvordan brukeren klikker rundt. Da unngår vi lasting av hele sida på nytt hver gang brukeren gjør noe, forklarer Trageton til kode24.

Den vanskeligste oppgaven

For å sikre ''mobil først'' er det viktig at innholdet gjør seg kvikt tilgjengelig. Blant hensynene Yr må ta er problemstillingen gamle nettlesere som ikke støtter moderne funksjonalitet.

Med så mange brukere fra hele verden er det svært mange nettleserversjoner og plattformer å ta hensyn til.

- Alt innhold vi lager skal fungere på en mobil nettleser, men på grunn av skjermstørrelse og nettverkskvalitet, er dette det vanskeligste å få til. Derfor starter vi med å få innholdet til å passe dette formatet. Det oppnås ved å bundle koden, altså å sette sammen de Javascript-filene som trengs for innholdet i en gitt fil. Dermed får du kun den koden som trengs for at akkurat den visningen skal fungere, sier Trageton.

For å få bildeoptimaliseringen på stell, prøver utviklerne å lage så små filer som mulig, og komprimerer via JPEG og PNG, men aller helst SVG hvis nettleseren støtter det.

Yr-utviklerne Sigbjørn Trageton, Tommy Skarateppen og Andreas Thomassen jobber i NRK-bygget på Marienlyst. 📸: Pernille Johnsen
Yr-utviklerne Sigbjørn Trageton, Tommy Skarateppen og Andreas Thomassen jobber i NRK-bygget på Marienlyst. 📸: Pernille Johnsen Vis mer

Bedre testing

Testing har blitt viktigere og viktigere for utviklerne i Yr, og i en presentasjon på Oslo Met tidligere i år fortalte Sigbjørn at han selv har sørget for å ta ned hele Yr to ganger.

Den siste gangen ringte VG for å melde fra om at Yr var nede for telling.

- Det var ingen testing av koden som kunne sagt til meg at noe var galt, fortalte han i presentasjonen den gangen.

Nå har det blitt mer kontroll på sysakene, og oppskriften går omtrent slik: Når det utvikles ny kode, skives det enhetstester. Når enhetstestene og integrasjonstestene går gjennom, betyr det grønt lys. Først da blir den nye koden sjekken inn i en ny kodebase på Github.

Slik jobber de i Yr

Det jobber fem personer på backend, tre på frontend, én iOS-utvikler og én Android-utvikler i Yr.

- I tillegg jobber det to UX-designere her, som vi kaller konseptutviklere. De har ansvaret for å gjøre værvarslene lett forståelig for folk flest, og det er en uhyre sentral del av Yrs samfunnsoppdrag, forteller teamleder Anette Svee Wilberg.

På mandagsmøte setter temaet felles mål og setter ukas prioriteringer. Jobber alle med de riktige tinga?

Midt i det åpne landskapet er det en elektronisk tavle med et Kanban Board, der de holder oversikt over konkrete oppgaver og hvem som jobber med hva.

Standup gjennomføres to ganger i uka, og utviklerne kjører en felles demo for interessenter på fredager.

- Her sanker vi innspill fra andre om det som utvikles, sier Trageton til kode24.

- På retro-møtene ser vi tilbake på en periode, vanligvis fem-seks uker, for å finne ut hva som fungerte og hva som kan gjøres bedre.