– Spør deg selv: Hva skjer om denne tredjeparts-tjenesten blir utilgjengelig? skriver Simen A. W. Olsen, som slår et slag for å løse mer selv.
Simen A. W. Olsen er daglig leder i Sokkel AS, og ber deg bygge mer motstandsdyktige tjenester.
📸: Privat
✍ leserinnlegg
Dette er et leserinnlegg fra en ekstern skribent, som betyr at innholdet ikke nødvendigvis speiler kode24s meninger. Vil du også bidra? Send oss en epost på [email protected], eller les mer her!
Et tryggere internett, hva betyr det?
Fokuset er ofte på at programmene vi bygger har en viss grad av motstand mot at andre kan bryte seg inn. For å bruke språket i OSI-modellen, så jobbes det med sikkerhet i alle lag av stacken. For oss utviklere, så er det applikasjonslaget vi oftest snakker om å gjøre tryggere.
Vi som utviklere har kanskje blitt for vant til at ting bare fungerer. At DNS alltid løser seg, at CDN-er alltid er tilgjengelige, at API-kall til tredjepart aldri feiler.
Men hva om de ikke gjør det?
De siste 30 årene har elektronisk kommunikasjon blitt en forutsetning for at alle deler av samfunnet skal fungere. Jeg møtte nylig Mattis Karlsson som er CTO i Netnod, han fortalte om at i Karlstad i Sverige har de et prosjekt, «Robust region», hvor de utforsker det å etablere lokal drift av internett, uten ekstern tilkobling, for å øke regionens digitale beredskap.
Det fikk meg til å tenke: Hvordan kan vi lage tjenester som kan kjøre innenfor Norge? Om ikke hele, så deler av løsningen?
Edge Computing som løsning?
Et verktøy vi kan ta i bruk for å levere tjenestene våre, selv om vi skulle miste ekstern tilkobling, er det som ofte kalles edge computing. I praksis betyr at vi kjører koden flere steder og nærmere brukerne.
Nå finnes det stadig flere verktøy og tjenester, som både er kommersielle og åpen kildekode, som kan gjør det mulig å levere en del av tjenesten ute i kanten.
En av disse er Turso. Turso sier selv de er neste evolusjon av SQLite. SQLite er verdens mest brukte database, den har tradisjonelt vært kun på disk og brukt i prosjekter som Chrome o.l. Turso er en videreutvikling som gjør det mulig å bruke SQLite over nettverk.
Verktøy som Turso kan bidra til mer motstandsdyktighet siden det er enkelt å drifte, men også bygget for å være distribuert. Du kan kjøre SQLite lokalt på serveren (f.eks. gjennom edge computing), og den synkroniserer med en sentral database. Man kan tenke seg at man kan støtte en fullverdig applikasjon, samtidig som man tillate at hele eller deler fungerer fullt ut selv om den ikke har kontakt med den sentrale databasen.
Distribuerte tjenester kommer dessverre ikke uten kompleksitet og utfordringer.
Du må velge
Distribuerte tjenester kommer dessverre ikke uten kompleksitet og utfordringer.
I database-teori har blant annet Forskeren Eric Brewer utviklet CAP theorem, I praksis betyr CAP theorem at når nettverket svikter, må du velge:
- Skal systemet fortsette å fungere, men kanskje vise utdatert informasjon?
- Eller skal det stoppe helt til alt er synkronisert igjen?
For en nettbutikk kunne det bety: Skal appen fortsette å ta imot bestillinger lokalt når hovedserveren er nede (risiko for at man selger mer enn man har), eller skal den stenge helt ned (bedre for lagerbalansen)?
Min oppfatning er at de færreste tar i bruk distribuerte systemer i den formen vi snakker om her, og om de gjør det så er det for å oppnå høyere hastighet.
Jeg mistenker at grunnen er at det er for utilgjengelig og lite kommunisert.
Ber deg med på dugnad for å løsrive oss fra USA
Sånn kan vi med Solid-standarden konkurrere mot «de plutselig litt mer skumle gigantene».
Hvor starter vi?
Jeg tror vi kan starte enkelt.
Neste gang du designer en tjeneste, still deg selv noen spørsmål: Hva skjer om denne tredjeparts-tjenesten blir utilgjengelig? Kan brukerne mine fortsatt gjøre det viktigste?
Ta i bruk verktøy som edge computing, distribuerte databaser som Turso og tjenester som gjør det enklere å bygge motstandsdyktige tjenester.
Tenk på å bygge motstandsdyktighet inn i arkitekturen fra starten av.
Det er på tide at vi som koder internett tar mer ansvar for å gjøre det robust!
Hva tenker du? Er digital beredskap noe dere jobber aktivt med, eller er det fortsatt noe som «noen andre» tar seg av? Hvilke utfordringer ser dere med distribuerte systemer?
Magnus’ metode: Sånn vurderer du en USA-exit
Med arkitekt Magnus Eldens metode, kan du vurdere en USA-exit etter kritikalitetsnivå. – Den har vist seg særlig nyttig i dagens landskap.