En mikrotjenestearkitektur er et system der en stor applikasjon består av små tjenester som fungerer og kommuniserer med hverandre ved hjelp av APIer.
Disse tjenestene er svært uavhengige og løst koblet. Dette gjør dem enkle å teste og vedlikeholde, noe som igjen fremskynder utviklingsprosessen.
Hvordan mikrotjenester fungerer
Før mikrotjenester var standardmåten for å utvikle applikasjoner å bruke en monolitisk arkitektur. Slike søknader var enkeltstående, uavhengige enheter. Komponentene deres – som brukergrensesnittet, forretningslogikken og datalagringen – ble skrevet i én enkelt kodebase.
Selv om monolitt-apper er enkle å designe og utvikle, kan den resulterende koden være vanskelig å forstå, skalere og vedlikeholde.
I en mikrotjenestearkitektur bryter du ned en stor applikasjon i mindre, autonome tjenester. Hver tjeneste er ansvarlig for en enkelt søknadsoppgave og kommuniserer med de andre ved hjelp av APIer.
Hver tjeneste inneholder også alle nødvendige avhengigheter, og du trenger ikke koble den til eksterne ressurser.
Mikrotjenester er gode for applikasjoner utviklet av store organisasjoner. Ett team kan jobbe med en tjeneste mens et andre team jobber med en annen. Du kan deretter teste og distribuere disse tjenestene separat.
Et eksempel på et mikroservicesystem er en e-handelsapplikasjon med separate tjenester for å håndtere brukergrensesnittet, handlekurven, inventar og bestillinger.
Fordeler med en Microservices-arkitektur
Fleksibilitet og skalerbarhet
Siden hver mikrotjeneste er uavhengig av resten, kan du utvikle og distribuere dem separat. Hvis en bestemt tjeneste blir treg, kan du kjøre den på kraftigere maskinvare eller legge til flere prosessorer til serverne som kjører den.
Du kan også kjøre to forekomster av en mikrotjeneste parallelt.
Enkelt vedlikehold og oppdateringer
Hvis du bygger en applikasjon etter mikrotjenester-arkitekturen, kan du oppgradere den i etapper. Du kan gjøre endringer i en tjeneste og oppdatere den uten å påvirke andre deler av applikasjonen.
Potensial for raskere utvikling og distribusjon
Små team jobber sammen for å utvikle hver mikrotjeneste. Siden mikrotjenesten utfører en spesifikk oppgave, kan medlemmer av et team fokusere på den oppgaven alene.
I tillegg er koordinering og beslutningstaking på tvers av et lite team raskere enn i et stort team. Dette fører til en raskere utviklingssyklus.
Uavhengige teknologivalg
Du kan velge å utvikle en mikrotjeneste i et annet programmeringsspråk enn de andre mikrotjenestene. Du kan for eksempel bruke Python til å utvikle en mikrotjeneste og JavaScript for en annen. Du kan også bruke forskjellige databasebehandlingstjenester for hver. Til syvende og sist ender du opp med å bygge tjenester med den mest passende teknologien eller verktøyet.
Utfordringer ved å implementere en mikrotjenestearkitektur
Kompleksiteten ved å koordinere ulike tjenester
En applikasjon kan bestå av mange tjenester som har behov for å kommunisere med hverandre. Disse kommunikasjonskanalene må være sikre og robuste for at applikasjonen skal fungere etter hensikten.
Feilsøkings- og testproblemer
Feil som du kan isolere til en enkelt tjeneste er lettere å løse. Men når disse feilene spenner over flere tjenester, blir feilsøking mer av en utfordring. Like måte, skrive integrasjonstester for flere tjenester kan være vanskelig.
Potensial for økt overhead
Hver tjeneste er som nevnt uavhengig av de andre og har sine egne ressurser. Dette kan bli dyrt siden hver tjeneste krever dedikert infrastruktur bestående av blant annet servere, kontinuerlige integreringsverktøy og databaser.
Når skal du bruke en mikroservicearkitektur
Mikrotjenester-arkitekturen er ikke egnet for alle applikasjoner. Det kan være dyrt å bygge og administrere.
Før du bestemmer deg for å bruke en mikrotjenestearkitektur, bør du vurdere størrelsen og kompleksiteten til applikasjonen din. Du vil se større fordeler ved å dele opp en stor applikasjon i håndterbare ressurser enn en liten applikasjon. Med en liten nok størrelse kan det være sløsing med ressurser totalt.
Men hvis du har et stort team av utviklere som trenger å forstå en kodebase raskt, eller ønsker å bruke forskjellige teknologier, kan en mikrotjenestearkitektur være veien å gå.