Slik takla Confrere 100 ganger trafikk

Norske videosamtaler tok av under korona. - Det dukka opp interessante problemer, forteller utvikleren som sjonglerer WebRTC, Amazon, Node og React.

Confreres Dag-Inge Aas, medgründer og teknologisjef, Ida Aalen, medgründer og produktsjef, Svein Willassen, gründer og daglig leder, og Ingvild Indrebø, seniorutvikler, fikk nok å henge fingra i da den norske legestanden plutselig måtte lære seg videokonferanser. 📸: Confrere
Confreres Dag-Inge Aas, medgründer og teknologisjef, Ida Aalen, medgründer og produktsjef, Svein Willassen, gründer og daglig leder, og Ingvild Indrebø, seniorutvikler, fikk nok å henge fingra i da den norske legestanden plutselig måtte lære seg videokonferanser. 📸: Confrere Vis mer

- Vi var den eneste tjenesten på den tida hvor du kunne komme i gang på bare fem minutter, og hvor alle kravene var oppfylt, forteller seniorutvikler Nikolai Norman Andersen i norske Confrere til kode24.

Han snakker om tida da koronapandemien kom til Norge, i mars i år, og alle landets fastleger plutselig fikk beskjed om å møte pasientene sine over video.

Og da alle legene skulle finne ut nøyaktig hvordan, stod Confrere der - klappet og klar, med et videokonferansesystem skreddersydd for å la helsepersonell møte pasienter over nettet.

- Etter det vokste brukermassen vår enormt, på bare få dager. I løpet av to uker hadde vi 100 ganger mer trafikk på tjenesten enn uken før, mimrer Andersen.

Det bød på utfordringer.

Seniorutvikler Nikolai Norman Andersen forteller hvordan Confrere takla koronatrafikken. 📸: Privat
Seniorutvikler Nikolai Norman Andersen forteller hvordan Confrere takla koronatrafikken. 📸: Privat Vis mer

Tusenvis av leger

Heispitchen til Confrere er noe sånt som "videosamtaler for helsesektoren", med fokus på brukervennlighet, sikkerhet og personvern.

Kort fortalt at blant annet fastleger enkelt og raskt kan gjennomføre en sikker videosamtale med pasientene sine, som ikke krever mer enn en nettleser på hver side av samtalen.

Confrere skal i år ha gått fra å ha rundt seks prosent av norske fastleger som kunder, til rundt 70 prosent - det utgjør så langt vi kan forstå rundt 3.400 norske leger. Og den lille, norske startupen opplevde altså rundt 100 ganger mer trafikk.

- Samtidig satt det tusenvis av leger som nå hadde spørsmål om hvordan de best kunne strukturere hverdagen sin, og vi var jo de mest kvalifiserte til å hjelpe med det, akkurat da, forteller Andersen.

How are Confrere video calls different? Let us show you. Vis mer Vis mer Vis mer

Utviklerne måtte supportere

I første omgang tok utviklerne på seg support-hatten, og bidro så godt de kunne.

- Det var flere dager vi som utviklere, sammen med alle de andre ansatte ,satt hele arbeidsdagen som førstelinje support. Uansett hvor godt designet tjenesten var på forhånd, var det fortsatt interessante problemer som dukket opp når allmuen tok videokonsultasjoner i bruk, mange for første gang, sier Andersen til kode24.

«Vi kastet oss rundt og rekrutterte supportere på rekordtid.»

Men med bare 12 ansatte som nå måtte både supportere og utvikle plattformen, ble det fort for mye på for få folk. Confrere trengte en egen support-avdeling.

- Vi kastet oss rundt og rekrutterte supportere på rekordtid. Mange dyktige mennesker satt nå uten jobb på kort varsel, og kunne dermed starte nærmest på dagen. Vi doblet antall mennesker på teamet over to uker, forteller seniorutvikleren.

Amazon ingen problem

Én ting er å skalere opp organisasjonen, noe annet det rent tekniske. Heldigvis skal dette ha vært en langt enklere utfordring.

- Confrere er bygget for å kjøre i skyen og skalerer automatisk, så vi hadde ikke så mange tekniske utfordringer som man kanskje kunne tenke seg, forteller Andersen.

Confrere kjører fra Amazon Web Services (AWS), og Andersen humrer at han "ikke tror de merka noe". Heller ikke økonomisk skal trafikken ha vært noe problem - Confrere betaler bare for det de faktisk bruker.

- Vi så kanskje mer at funksjonalitet vi hadde utsatt førte til flere support-saker. Enkle ting, som å bytte epost på brukeren sin, var ting vi hadde utsatt å lage brukergrensesnitt for, og som de som jobbet med support trenger utvikler-assistanse for å løse, sier Confrere-utvikleren.

Og da de nye support-folka kom på plass, kunne utviklerne endelig få satt seg ned for å kode den slags.

«Det er enkelt å koble to nettlesere sammen med WebRTC, men det er veldig krevende å håndtere alt som kan gå galt.»

React og WebRTC

Confrere sin frontend består av en React-applikasjon med Redux og Redux Saga, som kommuniserer gjennom Google sitt WebRTC-rammeverk.

Det er også WebRTC-klientteknologien som sørger for selve videosamtalene, men det betyr ikke at utviklerne kjeder seg av den grunn.

- Det er enkelt å koble to nettlesere sammen med WebRTC, men det er veldig krevende å håndtere alt som kan gå galt, sukker Andersen.

- Forskjellige enheter og nettlesere, nettverksbrudd, Bluetooth headset som kobler seg inn under samtalen og innkommende telefonsamtaler - lista er lang over ting som kan skape trøbbel.

Har ingen testmiljø

På baksida av Confrere kjører det Node.js-apper gjennom AWS sin Elastic Beanstalk-plattform. Denne tar seg av blant annet utrulling, skalering og eventuelle feil som oppstår.

- Vi har ikke tid til å holde på med problemer som allerede er løst av andre, som Andersen sier.

Confrere sin backend inneholder ellers mye Typescript, Express, Lambda-funksjoner og Amazons Simple Queue Service (SQS) og Simple Notification Service (SNS).

- Vår tanke har vært å bruke "kjedelig" teknologi som vi vet er utprøvd, som for eksempel Elastic Beanstalk. Vårt fokus har vært på å lage en god arkitektur som kan skalere horisontalt og håndteres av en liten gruppe utviklere, forteller seniorutvikleren til kode24.

«Vår tanke har vært å bruke "kjedelig" teknologi som vi vet er utprøvd.»

Confrere har heller ikke noe eget testmiljø, men lar all kode som sys inn gå rett i produksjon. Dog i et eget miljø, hvor hver pull request blant annet testes og rulles tilbake automatisk om feilraten øker.

- En ting vi står for er at "Vi klarer aldri å gjenskape data og bruksmønster fra produksjon i et testmiljø", så da er det bedre å ha gode automatiske tester og gode prosesser for problemløsning i produksjon, mener Andersen, som dessuten går "on-call" sammen med de andre utviklerne.

Utfordringer med brannmurer

Confrere gjorde altså ikke store endringer for å takle den nye trafikken. Men på ett punkt måtte de gjøre drastiske tiltak.

- Leger og sykehus sitter jo ofte bak ganske heftige brannmurer, og krever ofte spesifikke åpninger for at ting skal fungere. Vi hadde en TURN-server med statisk IP som håndterte mesteparten av denne trafikken. Denne gikk for full maskin når trafikken mangedoblet seg, og vi så behovet for å finne en løsning som skalerte bedre, forteller Andersen.

TURN står for Traversal Using Relay NAT, og er en server som vanligvis står mellom klientene i en WebRTC-applikasjon som Confrere.

- Siden vi hadde såpass mye å gjøre, endte vi opp med å få hjelp av Bradley T. Hughes fra Miles, smiler Confrere-utvikleren.

- I løpet av kort tid hadde han fikset en TURN-infrastruktur som autoskalerer og kan nås via statiske IP-adresser.