Vipps, så satt vi på T-banen til byen for å besøke folka bak en liten app, med 3.260.000 brukere. Altså omtrent 75 prosent av Norges befolkning.
Et intervju om koden bak betalingsappen Vipps har stått på blokka til kode24 helt siden vi starta opp. Faktisk var den skisset inn på de originale mockupene vi presenterte før kode24 engang eksisterte.
Så hva er det konkret som pirrer med Vipps?
Den enorme populariteten til appen er én ting. Ikke minst hvordan i huleste man skrur sammen et stort utviklingsteam rundt noe så konkret som én enkelt app, og hvordan man håndtere skalering av over en halv million daglige transaksjoner.
«Men Vipps er også et produkt med en viss kontrovers knyttet til seg.»
Men Vipps er også et teknologiprodukt med en viss kontrovers knyttet til seg. Tidligere har Arbeidstilsynet vært koblet inn rundt arbeidsforholdet til indiske IT-konsulenter, og det skapte furore da appen gikk ned for telling for tre år siden.
I tillegg har Vipps historisk vært forbundet med DNB, og bankbransjen generelt. Som jo ikke akkurat er kjent for lekne løsninger; heller Java 8, striglede folk i dress, og kanskje en liten FORTRAN-applikasjon kjørende i kjelleren.
Derfor var vi nysgjerrige; hvordan bygges egentlig en av Norges største apper i 2019?
Flytta ut fra DNB
Oppmøteadressen midt i bankområdet i Oslo, Barcode-området, gjør oss ikke mindre skeptiske. Men så leder plutselig Google Maps oss tvers over gata. Opp en lang trapp, midt mellom halvveis utførte byggearbeider, ligger nemlig Vipps sine nye, og ikke minst egne lokaler. Nære, men likevel med avstand til, banknæringen de sprang ut fra.
- Vi har bare vært her i tre uker, forteller kommunikasjonssjef Hanne Kjærnes.
Den korte avstanden til bankene gjør tydeligvis underverker, for vipps; så er det ikke en eneste dresskledd person å se. På veien gjennom de nye lokalene passerer vi heller shuffleboard, lekerom for barn, og tungt befolkede kaffemaskiner. Miljøet virker ungt, og føles mer som en episode av Silicon Valley, enn Suits-episoden vi så for oss.
- Du får snakke med Elisabeth, hun er jo veteran her, ler Hanne.
Hun snakker om produktutviklings-ansvarlig Elisabeth Barrie, som vi får vite har jobbet i Vipps i hele halvannet år - visstnok veteran i Vipps-sammenheng. For Vipps er ikke lenger Vipps fra DNB. I 2017 ble de eget selskap.
«Jeg hadde aldri sett en sånn type fossefall i praksis før jeg begynte her.»
Fått egne utviklere
Samtidig bestemte Vipps seg for at alt skulle utvikles internt, i Vipps sitt eget nyoppstartede tek-miljø. Og selv om det fortsatt er noen innleide konsulenter er det intern kompetanse som er i fokus.
- Det var et helt annet opplegg før, en del utvikling ble gjort gjennom et ekstern selskap og det var få dedikerte ressurser på teknologi, forteller Barrie.
- Det er bedre nå. Nå sitter vi sammen, i stabile og permanente team. Alle blir involvert tidlig, og vi har mye mer prototyper og brukerinvolvering. Det er lite superstore speccer, og vi lager ikke hundrevis av user-stories.
Produktutviklingssjefen forteller at før kunne det gå tre til seks måneder mellom hver store utgivelse av Vipps. Og med det fulgte et rigid testregime, med testperioder på opp til fire uker.
- I starten var det et race for å vinne Norge. Da var hastighet ekstremt viktig, og vi har brukt en del tid på å rydde opp i produktene våre. Men fordelen er at nå tar vi de fleste avgjørelser selv.
Nye apper fra scratch
For drøyt et år siden bestemte de seg til og med for å skrive om appene sine, fra scratch.
- De gamle appene var rigget for vennebetalinger, men Vipps driver jo med alle typer betaling nå, forteller iOS-utvikler Henrik Holmsen til kode24.
Det betød at iOS-appen ble skrevet om i Swift, og Android-appen i det nye språket Kotlin, noe som har gitt avkastning ifølge gjengen.
- Swift har gjort mye med stabiliteten, forteller Holmsen.
- Ikke bare er det et sikrere språk, men vi har kunnet kutte mange kodelinjer. Jeg tror vi gikk fra rundt 300.000 kodelinjer til rundt 80.000.
«Vipps er jo bare på app, da bør vi rendyrke platformene.»
Android-utvikler og tech lead Lasse Bjørknes Magnussen forteller at på Android-siden startet de å utvikle den nye appen i Java. Faktisk var 80 prosent skrevet, men etter mye diskusjoner om rammeverk gikk de for å skrive om appen i Kotlin, og bruke Architecture Components-bibliotekene.
Hanne skriver Vipps på nytt med Kotlin
- Det har gitt oss blant annet bedre databaseintegrasjon, navigasjonhåndtering og mye mer, som reactive datastreams, forteller Magnussen.
Hybridrammeverk som React Native er ikke gjengen spesielt gira på.
- Nå er intervjuet over! flirer Android-utvikler Magnussen.
- Jeg har hørt om mye dårlig erfaring med React Native-rammeverket. Folk tenker gjerne at «nå kan vi gjenbruke mye», men så gjør man ikke det i praksis. Vipps er jo bare på app, da bør vi rendyrke platformene, forteller han.
- Det er forfriskende at vi kjører vanilla Android. Vi kunne jo prøvd å skrive businesslogikkken i Kotlin og kompilere til Swift, smiler Magnussen og skuler bort på iOS-utvikler Holmsen.
- Jeg vet riktignok ikke om plattformen er like godt utviklet, forteller han og kommer med et nytt flir.
Det er tydelig at det er mye sunn konkurranse mellom apputviklerne på de to plattformen i Vipps.
Interaksjons-design, tjenestedesign, UX – hvorfor trenger vi alle begrepene?
Fra grønn til oransje
Gjengen forteller at selv om funksjonaliteten i appene er like på tvers av plattformene, er de veldig opptatt av å følge brukeropplevelse-konvensjonene for begge platformer. Og at noen i gruppa er eksperter på UX i iOS, mens andre er eksperter på Android.
- Vi har gjort mye på UX-siden. Vi bruker et verktøy som heter Figma, som er åpent for alle i Vipps. Der kan alle følge med på hva som skjer i design og utviklerne kan hente skjermbilder og finne ut hva de trenger å jobbe med videre, forteller UI- og UX-designer, Kimia Dayvary.
- På regningsskanneren i Vipps har jeg satt opp iOS-varianten, mens en UX-designer som kan Android har «tweaket» skissene for Android.
Dayvary forteller at det ikke alltid er like lett å jobbe med UX i en app som brukes av nesten hele Norges befolkning. Ta for eksempel når Vipps endret fargen på appen fra grønn til oransje.
«Noen folk kontaktet oss og var i harnisk fordi ikonet var oransje og ikke passet inn på «launch screen.»
- Da vi gikk fra grønn til oransje endret vi en rekke ting. Noen folk kontaktet oss og var i harnisk fordi ikonet var oransje, og ikke lenger passet inn på hjemskjermen, smiler Dayvary.
- Så gikk det noen måneder, og så var alle tilbakemeldinger av typen «oi, dette er fantastisk».
Ett av områdene de fikk seg en a-ha opplevelse i, er oppgjørsmodulen. En avansert funksjonalitet hvor brukere kan registrere utlegg over lengre tid, for eksempel på en ferie, og så fordele utgiftene.
Stor guide: «Alle har glede av universell utforming!»
- Beregningene der ble rett og slett så komplekse at folk ikke trodde på at resultatet om hvem som skulle betale hva ble riktig. Så der rullet vi tilbake til at man bare delte på likt, forteller hun.
- Men da fikk vi beskjed om at brukerne ville ha tilbake ujevn fordeling!
- I Android-appen var det også en feil som gjorde at folk kunne betale i øre. Vi fikset feilen, men da fikk vi beskjed om at folk ville ha ørene tilbake.
«Go er bedre for vedlikehold, dessuten gir det bedre lesbarhet og er raskt.»
Fra Java til Go
Men Vipps-appene lever ikke helt alene. De er nemlig del av et økosystem som består av nesten 50 mikrotjenester. Hele sulamitten kjører på Microsoft Azure, forteller backendutvikler og tech lead Audun Follegg.
Hvorfor akkurat Microsoft Azure ble valgt er han ikke helt sikker på, og henviser til at det er en historisk avgjørelse som ble tatt i DNB. Han synes likevel at Azure fungerer godt til formålet. I Azure bruker gjengen en tjeneste som heter Microsoft Azure API Management (APIM) til å konsolidere API-ene til alle mikrotjenestene sine.
- APIM funker bra, og man kan til og med legge på endepunkt-dokumentasjon i tjenesten, forteller Follegg.
Bak APIM-laget i Vipps sitter mikrotjenestene i Kubernetes-containere. Follegg forteller at en typisk mikrotjeneste håndterer for eksempel betaling. En tjeneste som i utgangspunktet ikke høres kompleks ut, men når man skal håndtere ruting til en drøss forskjellige banker blir det fort mer komplisert.
Her lagres Norge
Bli med innenfor porten til Basefarms datasenter, midt i skogen i Lørenskog.
Follegg forteller at de fleste av mikrotjenestene er skrevet i Java og rammeverket Spring, med Microsoft SQL som database i bakkant, men for nyutvikling har de valgt et annet språk.
- Det meste nye skriver vi i Go. Vi synes det er bedre for vedlikehold, dessuten gir det bedre lesbarhet og er raskt. Det er ikke noe i veien med Java, men vi føler det er mindre latens i Go. Og API-koden blir mye mindre! forteller Follegg til kode24.
På database-siden går de mer og mer over til NoSQL-databasen Azure Cosmos DB. Gjengen i Vipps har til og med skrevet en åpen SDK for databasen.
Å jobbe med bankenes API-er beskriver Follegg som uproblematisk.
- Banker som Sparebank1 er langt fremme på JSON og REST, forteller han.
- Det kan godt stemme at det er mye gammel og kronglete kode lenger ned i systemene, men den ser ikke vi.
Mer open source
Å dele mer med andre utviklere er noe Vipps-gjengen planlegger å fokusere på i fremtiden.
- Vi tenker ikke å være lukket. På sikt skal vi åpne mer av Vipps-platformen, forteller produktutviklings-ansvarlig Barrie.
- Utviklere liker open source fordi det gir bedre kode!
Fra før av har Vipps et netthandels-API, og Barrie forteller at de ser på andre typer API-er. Et eksempel er en ny regningsskanner Vipps utvikler, med mål om å ta livet av KID-nummer-inntasting.
- Det kan godt hende vi åpner for å dele regningskanner-API-et med andre i fremtiden.
- Og nå har vi jo ikke engang lagt på noe maskinlæring. I fremtiden kan dette bli et veldig bra verktøy, skyter iOS-utvikler Holmsen inn.
- Det er ikke alt vi skal gjøre selv, i fremtiden vil vi gjerne samarbeide mer, avslutter Barrie.