O'Reilly Software Architecture Conference i London

Microservices

Microservices, microservices, microservices!

Microservices är i hetluften just nu, och det märktes tydligt på konferensen, O’Reilly Software Architecture Conference i London, att många vill veta mer om hur det fungerar och hur man ska förhålla sig till dem.

Vad är microservices?

Microservices, eller mikrotjänster som man också kan kalla dem på svenska, är ett arkitektoniskt begrepp som till skillnad från det klassiska sättet att bygga en stor applikation som gör allt, i stället använder små komponenter som gör delar av en större process.

Traditionellt sett har man en stor kodbas med en stor applikation som gör allt i hela processen, en så kallad monolitisk applikation. Denna har oftast flera lager - ett UI-lager, ett affärslogikslager och ett databaslager, som alla samverkar inom applikationen, och som utvecklas och underhålls av flera olika roller inom ett företag. Till exempel kan ett företag ha en grupp gränssnittsexperter som fokuserar på UI-lagret, och en grupp databasexperter som riktar in sig på databaslagret. Detta kan leda till olyckliga missförstånd, då grupperna blir för fokuserade på just sitt område, och kan därför ha svårt att samarbeta - ett slags "vi mot dem"-tänk.

I microservices-tänket ska områdesexperterna ha ett nära samarbete kring de uppdelade komponenterna. Grupperna får då bättre förståelse för varandras behov och kommer känna ett större ansvar för att lösa sina delar på ett optimalt sätt. Microservices tvingar dessutom de olika grupperna att använda och tänka på hur APIer utformas och används under hela produktens livscykel, vilket gör att tjänsterna får ett mer naturligt och lättanvänt gränssnitt.

Fördelar med microservices

Eftersom microservices är tänkta att göra en eller ett fåtal saker, så blir det lätt att resonera kring enskilda tjänsters logik. Tanken är också att olika tjänster har olika behov och krav - man ska till exempel inte vara låst till att alltid använda samma databas, något som är mycket vanligt i monolitiska applikationer. Om en SQL Server-databas inte behövs för att göra jobbet som tjänsten kräver, ska i stället något mer lämpligt användas.

Att ändra i de mänskliga grupperingarna kring olika microservices blir lättare i och med att tjänsternas logik inte är stor och komplex. Det kan till exempel handla om omstruktureringar av olika slag inom ett företag, eller helt enkelt när en nyanställd ska sätta sig in i sitt arbete.

En annan fördel med microservices är att installationer (deploy) blir lättare. Man behöver inte bygga om och installera hela applikationen på alla relevanta servrar för att en liten del i applikationen har ändrats. Det räcker att ersätta microservicen som hanterar ändringen i fråga, och därmed blir installationsförfarandet betydligt enklare och säkrare.

Nackdelar med microservices

I och med uppdelningen från en monolitisk applikation till microservices introducerar man också en annan typ av kommunikation än vad applikationer normalt använder sig av internt. I stället för denna interna kommunikation, går man över till en extern kommunikation. Detta kan medföra problem som man normalt inte behöver ta hänsyn till vid intern kommunikation, till exempel nätverkslatens och olika typer av problem som kan uppstå vid parallell eller asynkron kommunikation.

Det kan vara svårt att få en överblick över hela systemet om systemet är utspritt över flera tjänster och servrar. Felsökning och testning kan bli problem om man inte tänker igenom sin lösning ordentligt, eller om man saknar rätt verktyg för att hantera tjänsterna och loggdata som de genererar.

En ytterligare svårighet är också att man i omställningen från monolitisk applikation till microservices måste räkna med den mänskliga faktorn. Att ändra en gruppering kan vara en stor omställning för ett företag, men man får inte glömma att det är också en stor omställning för människorna som utgör grupperna. Det blir ett nytt sätt att kommunicera och ett nytt sätt att hantera sitt arbete. Från att jobba med ett projekt till att jobba med en produkt (dvs microservicen).

Framtiden

Hur pass användbart det är att gå över till microservices beror mycket på vilken typ av arbete man ska utföra. Vissa typer av arbeten och tjänster lämpar sig så klart bättre än andra för microservices. Det är i vanlig ordning de stora företagen så som Netflix och Google som driver på den här trenden med mikrotjänster, vilket kan betyda att de som tjänar mest på att använda sig av dem är just större företag.

Tiden får utvisa om det är fördelaktigt med microservices även för mindre företag och applikationer.

Ralf Lindberg

Ralf Lindberg Lösningsarkitekt