Viktigheten av skalerbarhet i tech startups
I en verden av teknologiske startups, ditt første mål er vanligvis å lage en Minimalt levedyktig produkt (MVP) basert på entreprenørens visjon, og deretter tiltrekke seg kunder. Etter dette lærer du, itererer og forbedrer MVP.
Som vist av forfatterne i [1], var det mest populære teknologifeltet for nystartede selskaper i 2021 fintech, Dintero-feltet tilhører. De viser også at 9 av 10 startups ikke overlever. 30% av startups går ut av drift innen to år, og 50% har stengt butikken innen fem. Med andre ord går en stor del av de svake oppstartene ut av virksomheten, selv etter å ha overlevd den innledende fasen.
Så hva er grunnen til at bare 10% av startups overlever de neste par årene?
Fra [1] ser vi årsaken til at fiasko er distribuert, der de vanligvis ikke inkluderer noe markedsbehov, går tom for kontanter, feil lag- eller lagsammensetning, konkurranse og priser.
Det kan være utallige problemer bak noen av disse, og enda flere løsninger for å løse dem.
I denne artikkelen vil vi imidlertid fokusere på et konkret aspekt som vi hevder påvirker dem alle, og det er evnen til skala.
Når ordet «skala» brukes i denne innstillingen, brukes det ofte synonymt med vekst, og innen startups skjer skalering langs mange forskjellige dimensjoner, for eksempel inntekter, finansiering, kunder, ansatte, markedsandeler osv.
Vekst gjennom alle disse dimensjonene er svært viktig for langsiktig oppstart, og dermed bruk av metoder, teknologier og strategier som muliggjør Skalerbarhet er avgjørende.
Skalerbarheten er imidlertid ikke lett, som Elon Musk så berømt sa:
«Den ekstreme vanskeligheten med å skalere produksjonen av ny teknologi er ikke godt forstått. Det er 1000% til 10.000% mindre enn å lage noen få prototyper. Maskinen som lagrer maskinen er langt mindre enn selve maskinen. - Elon Musk, Twitter, 22. september 2020.
Skalering er ikke bare vanskelig når du skalerer produksjonen av elektriske kjøretøy, det er også vanskelig når du skalerer programvareløsninger som tidlig i utviklingsprosessen ofte dikterer skalerbarheten til produktet i fremtiden.
Bevæpnet med denne innsikten, skalerbarhet vil alltid være et sentralt aspekt av alle tekniske aspekter hos Dintero.
I resten av denne artikkelen beskriver vi kort noen av de tekniske beslutningene vi har tatt for å gjøre det mulig for oss å skalere fremover.
Infrastruktur som kode
Blant flere positive aspekter ved å definere infrastrukturen din som kode, forbedrer du muligheten til å skalere tjenestene dine til nye geografiske områder uten mye friksjon og arbeid.
Hos Dintero bruker vi AWS skyinformasjon [2] for å definere infrastrukturen vår som kjører som AWS skytjenester. I tillegg til skalerbarhet gir definisjonen av infrastrukturen din som koder deg muligheten til å flytte alle tjenester til en ny region i tilfeller der strømmen ikke er tilgjengelig, noe som bare krever en liten mengde arbeid og tid.
Mikrotjenestearkitektur
Alle Dinteros-funksjoner er delt mellom tjenester i den kjente mikrotjenestearkitekturen, der hver tjeneste opprettholder en høy kohesjon og koblingen mellom dem holdes lav.
Denne typen programvarearkitektur forbedrer vår evne til å legge til nye funksjoner uten å påvirke eksisterende. Det gjør jobben med å endre eksisterende funksjoner mye enklere, siden funksjonene er atskilt fra hverandre. I tillegg gir det oss muligheten til å skalere gjennomstrømningen bare der det er nødvendig.
Serverløs databehandling
Selv om det å definere infrastrukturen som kode og bruke en mikrotjenestearkitektur forbedrer skalerbarheten, er det fortsatt en tid- og personalkostnad knyttet til skalering av maskinvaren som brukes av infrastrukturen. En fremtredende løsning på dette er å bruke det som kalles serverløs databehandling.
I serverløs databehandling utføres deling av maskinressurser av skyleverandøren [3].
Dermed skaleres ressursene som er tilgjengelige for tjenestene dine basert på etterspørselen, noe som reduserer kostnadene i perioder med lav etterspørsel, samtidig som du opprettholder høy tilgjengelighet under toppbelastninger og bursty scenarier.
Hos Dintero bruker vi serverløse tjenester levert av AWS [3], blant dem bruker vi lambda, fargate, dynamodb, SQS, SNS og mer. I et fremtidig blogginnlegg vil vi vise frem spesifikke brukstilfeller der disse tjenestene har blitt brukt for å forbedre skalerbarheten til tjenestene våre.
Ren kode og lesbarhet
Den siste strategien vi ønsker å berøre, som også støtter skalerbarhet i stor grad, er brukervennlighet av kodebasen. I startups, som tidligere nevnt, er det opprinnelige målet å skape en solid MVP. Og så å vokse og forbedre denne første iterasjonen av produktet i høyt tempo. MVP er, som navnet antyder, en midlertidig, funksjonelt begrenset versjon av produktet, dvs. bare de viktigste funksjonene i produktet er implementert. Konsekvensen av dette er at produktet mest sannsynlig vil gjennomgå store endringer i fremtiden.
Som alle erfarne utviklere vet, å gjøre endringer i eksisterende kode kan være både en herlig og en fryktelig opplevelse. Dette kommer ofte ned på brukervennlighet av kodebasen. Her refererer brukeren til utvikleren som jobber med kodebasen. Alle de nevnte skalerbarhetsstrategiene hjelper også når det gjelder brukervennlighet, for eksempel ved bruk av en mikrotjenestearkitektur.
Det er imidlertid også viktig å sørge for at koden innenfor hver tjeneste er riktig modulert, der hver modul har høy kohesjon og koblingen mellom modulene er lav. I tillegg hevder vi at lesbarheten til selve koden er av største betydning.
Når oppstarten skaleres, legges nye funksjoner raskt til, eldre funksjoner blir drastisk endret og nye utviklere ansettes. En kodebase som er lett å forstå og bruke er avgjørende for skalerbarhet av produktet.
[1] https://firstsiteguide.com/startup-stats/
[2]: https://aws.amazon.com/cloudformation/
[3]: https://aws.amazon.com/serverless/