- Vi har i år laget en type valgomat som aldri har vært laget i Norge før, hvor vi samler svar fra så mange enkeltkandidater som mulig. Alle tekniske utfordringer blekner i forhold til arbeidet med å få over 7.000 kandidater til å svare! forteller redaksjonell utvikler Jari Bakken i VG til kode24.
- Vi har hentet inn påstander på dugnad fra alle distriktskontorene, og har hatt to politiske journalister sittende i utviklingsteamet i en periode, forteller produktutviklingssjef Kristin Breivik i NRK.
Med andre ord: Å lage valgomatene før årets lokalvalg har vært mye jobb for mange. Men vi er mest nysgjerrig på det rent tekniske.
For selv om det varierer nøyaktig hvordan valgomatene er lagt opp, er de teknisk sett ganske like: En single-page application (SPA) i front, med en backend i bånn, som begge må takle mye trafikk.
Dermed har utviklerne et hav av muligheter, i alt fra frontend-rammeverk til hosting-løsninger. I alle fall i prinsippet - for det viser seg at legacy preger hverdagen også i mediebransjen.
kode24 har bedt utviklerne i VG, NRK, TV 2 og Dagbladet fortelle oss nøyaktig hvordan hvordan årets valgomater er kodet.
Backend-valgene
Slik oppgir nettavisene å ha laget backend-en til valgomatene sine:
- VG: Node / Hapi, Elasticsearch, MySQL
- Dagbladet: PHP7 / Slim
- TV 2: Java
- NRK: Node / Express
«Om vi skulle skrive den på nytt nå, ville vi såklart valgt Go.»
- Dette var enkle valg. Vi hadde allerede brukt Hapi til å utvikle VGs tipsportal, og Elasticsearch har jeg hatt et utelukkende hyggelig bekjentskap med i flere år, forteller Jari Bakken i VG.
Han kunne tenkt seg å bruke PostgreSQL som database, men fordi VG i mange år har driftet MySQL, ble det slik denne gangen også. Hos Dagbladet er hele valgomaten i stor grad gjenbruk, og derfor ble det også i år PHP7 og Slim.
- Om vi skulle skrive den på nytt nå, ville vi såklart valgt Go, sier Dagbladet/Aller Media-utvikler Paul A. Stølen med et smil.
Også hos TV 2 ble backend-valget tatt på grunn av "legacy"; løsningen ble egentlig laget til stortingsvalget i 2017, og valget av et REST-API i Java ble tatt av den opprinnelige utvikleren.
Frontend-valgene
Her er hva frontend-ene til valgomatene er laget med:
- VG: React / Next.js
- Dagbladet: Ren JavaScript, jQuery
- TV 2: React
- NRK: Preact X, med Server-Side Rendering (SSR)
«Koden er overraskende lesbar fremdeles.»
Preact, som NRK bruker i årets valgomat, beskrives som et lettvektsutgave av React-rammeverket, som blant annet skal gi bedre ytelse.
- Preact X var i tidlig alpha da vi startet utviklingen. Derfor kom vi over flere bugs, men disse ble alltid fikset raskt av Preact-teamet, forteller utvikler Stian Lund Johansen i NRK til kode24.
VG, på sin side, er godt fornøyd med valget av React sammen med next.js.
- I redaksjonell utvikling i VG jobber vi med veldig mange ulike prosjekter, noen store og noen små. Å kunne kombinere eksport av statiske sider, server-side-rendering og API-er i samme rammeverk er veldig behagelig i denne konteksten, forteller Bakken.
jQuery brukes overalt: -Tabu!
React og Angular blir slått av 12 år gamle jQuery.
Også TV 2 gikk for React. Dagbladet kan ikke slenge like hippe rammeverk på bordet; her går det i ren JavaScript og gode, gamle jQuery. Igjen fordi mye av valgomaten deres er iterasjoner av gamle løsninger - fra 2013.
- Resultatet er en snappy og responsiv løsning, som bare funker, og koden er overraskende lesbar fremdeles, sier Stølen i Aller Media.
Hosting-valgene
Dette oppgis som løsningene for hosting, bygging og caching:
- VG: Backend bygges med Docker og kjører i VGs Marathon / Mesos-sky, caches med Varnish
- Dagbladet: Kubernetes Engine (GKE), caches med Varnish, bygges via CircleCI
- TV 2: Interne servere i Bergen, caches med Varnish
- NRK: Kubernetes, caches med Akamai
«Serverne har håndtert 2,92 millioner treff.»
- Valgomaten vår har fullført over én million ganger til nå. Serverne har håndtert 2,92 millioner treff. Vi bruker flere Kubernetes-clustere fra forskjellige skyleverandører, som gjør at vi tåler normal høy trafikk godt, forteller Johansen i NRK.
- Da ordet "valgomat" ble nevnt i starten av den første partilederdebatten fra Arendalsuka, var vi oppe i over 8.000 sidevisninger per minutt, sier Bakken i VG, men rapporterer at Varnish fikser biffen.
Når det kommer til valgene av hosting, dreier det seg nok en gang mye om hva mediehusene er vant til, og bruker til andre løsninger på huset.
- Å holde styr på godt over 100 apper, med hver sin backend, er mange størrelsesordener enklere når alle går via samme deploy-system, og bor i samme skyløsning, forteller Stølen i Aller Media.
Matte, ikke AI
Det er ikke akkurat kunstig intelligens og maskinlæring som sørger for at du får vite hvilket parti du bør vurdere å stemme.
- Valgomaten baserer seg på en matematisk modell, forklarer NRK-utvikler Stian Veum Møllersen, som var med å skrive en lang artikkel om hvordan den fungerer på NRKbeta.
Slik lager de TV 2 Sumo
Med 73.000 loggmeldinger i sekundet, fra 16 ulike plattformer, kan ikke bergenserne bare stole på magefølelsen.
- Det nærmest vi kommer noe avansert matematikk i valgomaten, er litt ansiktsgjenkjenning for å beskjære bildene av kandidatene, forteller Bakken i VG, som mottok over 6.000 bilder av kandidater til den massive valgomaten deres.
- Vår eminente valg-orakel, Kjetil Løset, formulerer spørsmålene til testen og angir så vektingsverdier for hvert parti under svaralternativene, forklarer utvikler og tech lead Eivind Eriksen i TV 2.
- Korrekt vekting av svar, for å få resultater som er presise for hver enkelt bruker, er det vi bruker mest tid på. For det er det absolutt viktigste for de som gjennomfører en valgomat, forteller designsjef Audun Aas i Aller Media.
Klar for å faktisk prøve valgomatene? Her finner du dem:
- VG: Valgomat 2019
- TV 2: Partitesten 2019
- NRK: NRK Valgomat
- Dagbladet: Valgomat 2019
(For ordens skyld: kode24 er en del av Scandinavia Online, som igjen er en del av Aller Media, noe også Dagbladet er. 😅)
I NRK har de et eget mobb-rom
Heidi Mork i NRK har mobb-programmering så ofte hun kan. - Alle vet hva som skjer, alle kjenner koden!