Hopp til innhald
Fagartikkel

Mikrotenester

Mikrotenester (microservices) er ein tenestearkitektur der deltenestene som inngår i større system, køyrer i separate konteinarar og samarbeider via nettverk og API. Strukturen gir stor grad av fleksibilitet og styring, men han kan vere uoversiktleg og ta tid å bli vand til å bruke.

Monolittisk struktur

Tidlegare var det vanleg at ei fysisk servermaskin køyrde alle enkelttenestene som trongst for å drifte eit bestemt system. Dette kallar vi i dag ein monolittisk struktur (mono betyr "åleine", "einaste" eller "eine").

Tenk deg ei nettside, brukaren av nettsida opplever det som eit samanhengande system. I verkelegheita er det sett saman av ei rekkje mindre tenester, til dømes webserverprogram, database, PHP-skripting, biletteneste, forumteneste, nettbutikkteneste med fleire. Alle tenestene er naudsynte for at nettsida skal fungere, og i eit monolittisk oppsett køyrer alle på den same fysiske (eller virtuelle) maskina.

Monolittiske oppsett er oversiktlege, men upraktiske ved behov for skalering. Kritiske feil hos ei teneste kan forstyrre andre tenester, og maskinvarefeil kan ta ned heile systemet. Dette gir låg feiltoleranse.

Mikrotenestestruktur

Med innføring av serverkonteinarar har ein ny tenestestruktur vorte vanleg, nemleg mikrotenester. Mikrotenester fungerer ved at enkelttenestene i eit system blir plasserte i kvar sine konteinarar. Kvar konteinar kan bruke ulike rammeverk og programmeringsspråk, noko som aukar fleksibiliteten for utviklarar. Konteinarane blir konfigurerte til å arbeide saman over nettverk med ulike API. Fordi konteinarane berre kommuniserer gjennom oppsette kanalar, blir sikkerheita auka (òg når mikrotenester blir sett opp som ein enkelt fysisk server).

Dei største fordelane med mikrotenester oppstår når vi bruker systemet på kryss av fleire serverar. Kvar konteinar inneheld naudsynte ressursar for å drifte tenesta si. Dei kan dermed enkelt flyttast mellom fysiske serverar og fleire kopiar (instances) kan setjast opp til å køyre samtidig. Dette gjer at tenestene som har størst belastning til kvar tid kan få meir ressursar frå fleire serverar. Dette opnar for ei effektiv skalering.

Ein konteinarkontrollar (conteinar orchestration system), som til dømes Kubernetes, blir ofte brukt for å styre mikrotenestesystemet. Kontrollaren held oversikt over tilgjengelege serverressursar og bestemmer kva konteinarar som skal køyre kvar, og kor mange kopiar av kvar konteinar som skal køyrast.

Mikrotenester er ideelle for bruk i skytenester då skyleverandørane kan ha tilnærma uavgrensa serverkapasitet og tek betalt etter mengda ressursar som til kvar tid blir brukte.

Det er nokre ulemper med mikrotenester òg. Sidan oppsetta har eit ekstra abstraksjonsnivå med virtualisering, er dei meir kompliserte og potensielt meir uoversiktlege enn dei monolittiske søskena sine. Dette gjer òg at kravet til kompetanse for å setje opp slike system er høgare.

I YouTube-videoen med Sai Vennam frå IBM kan du lære litt meir om mikrotenester og konteinerkontrollarar (conteinar orchestration systems).

Relatert innhald