Mikrotjänster

Som så många nya teknikområden inom systemutveckling som slår igenom snabbt så lider även mikrotjänster (microservices) av att alla definitioner ännu inte satt sig. Det leder till en del missförstånd, vilket i värsta fall leder till att den fulla potentialen för mikrotjänster inte realiseras. Här är sex exempel.

1. En mikrotjänst är alltid liten
Nej. En mikrotjänst kan vara stor, med mycket kod och mycket data. Men den ska utföra en uppgift och den ska utföra den uppgiften på ett bra sätt. Det som är litet är omfattningen av funktionalitet (scope).

Läs också: Han är Sveriges bästa utvecklare

2. Mikrotjänster är till för att dra nytta av specifika ramverk
Nej och åter nej. En grundsten i tankarna om mikrotjänster är att de inte ska vara kopplade till specifika ramverk eller andra tekniker. Man kan säga att användning av mikrotjänster är ett sätt att minska den komplexitet som följer av att applikationer och tjänster utnyttjar en massa olika komponenter. Idealt ska en mikrotjänst kunna användas av kod skriven i vilket språk, på vilken plattform, som helst.

3. Man ska välja en leverantörs implementation av mikrotjänster
Absolut nej. Om det är något som genomsyrar användning av mikrotjänster så är det att de ska vara autonoma. Hur en mikrotjänst ser ut och fungerar internt ska inte påverka hur den hänger ihop med andra mikrotjänster i en applikation.

4. Mikrotjänster är ett annat namn på soa
Nej, nej, nej. En vanligt mål med att anamma soa (tjänsteorienterade arkitekturer) för tio år sedan var att skapa generella tjänstebibliotek från vilka man skulle kunna plocka ihop olika typer av applikationer genom att kombinera existerande tjänster. Användning av mikrotjänster är mer ett sätt att organisera arkitekturen för en applikation eller tjänst som byggs just nu. Dessutom, ett problem med tjänster enligt soa-tänket var, och är, att de var tvungna att vara generella för att passa många olika typer av applikationer, vilket gjorde att de ofta inte passade bra för någon applikation. En mikrotjänst ska utföra en väl definierad uppgift utan kompromisser.

5. Mikrotjänster är inte soa
Nej, det kan man inte heller påstå. Både mikrotjänster och soa bygger på det urgamla behovet av att undvika att skapa monolitiska applikationer genom att modularisera dem på smarta sätt. Även om mikrotjänster och soa inte är samma sak så är det mer som länkar samman dem än som skiljer dem åt. En tänkbar definition av mikrotjänster kanske kan vara ”löst kopplad tjänsteorienterad arkitektur”, en annan ”soa på rätt sätt”.

Läs också: Öppen källkod glödhett bland it-jättarna – här är 10 produkter som blivit open source

6. Mikrotjänster minskar komplexitet med automatik
Nej, så är det inte. Tvärtom ibland. Det går åt både tankeverksamhet och kod för att bygga och hantera mikrotjänster. Om inte omfattningen för en mikrotjänst är optimal finns risken för ökad komplexitet, vilket ofelbart leder till problem. Dessutom kan det vara svårt att testa och refaktorera (bygga om) applikationer som baseras på mikrotjänster. Men rätt utförd leder användningen av mikrotjänster till att olika team som ansvarar för olika mikrotjänster blir autonoma och kan optimera sitt eget arbete, eftersom mikrotjänster blir utbytbara.