Ett monolitiskt system är enkelt uttryckt byggd baserat på en mjukvaruarkitektur där hela applikation är designad och driftsatt som en enda enhet. Samtliga av mjukvarans komponenter är sammanlänkade med varandra och delar samma kodbas och datahantering. Lite som att alla delar sitter ihop i en stor kloss som inte går att plocka isär. Delarna är beroende av varandra vilket betyder att om det görs en ändring i en komponent kommer övriga påverkas, medvetet eller ej. Detta kan påverka systemet negativt, främst i form av att risken för buggar kan öka samtidigt som hela systemets prestanda riskerar att bli sämre.
De flesta legacy-system idag bygger på en monolitisk arkitektur där alla komponenter är beroende av varandra.
Om en monolitisk applikation behöver skalas, måste hela applikationen dupliceras och efter det köra på flera servrar (efter att tidigare ha körts på en och samma), oavsett skiftande resursbehov för olika delar av systemet.
Microservices, eller mikrotjänster, är en arkitektur där mjukvaran struktureras, designas och byggs som små, självständiga tjänster. Varje sådan här tjänst, eller microservice, är inriktad på en specifik uppgift eller funktion och är alltså helt oberoende av övriga. Microservice som begrepp syftar alltså både på den övergripande arkitekturen men även på de konkreta enheterna inom den.
Att varje del är oberoende av de andra gör att de enskilt kan utvecklas, testas, driftsättas och skalas – utan att de andra delarna av applikationen påverkas. Det gör att det blir enklare att ändra och lägga till funktioner i systemet. Ett utvecklingsteam kan arbeta på olika tjänster samtidigt och släppa olika uppdateringar oberoende av vad de andra jobbar på. De kan dessutom använda sig av olika programmeringsspråk och slipper därmed låsa sig till en viss teknologi.
För att de separata komponenterna ska kunna fungera tillsammans i ett system behöver de integreras med varandra. Detta görs oftast med hjälp av API:er som säkrar ett standardiserat och förutsägbart gränssnitt för integration.
En förutsättning för att uppnå fördelarna med mikrotjänster är att de är löst kopplade. Lös koppling är ett övergripande koncept som minskar beroendet mellan komponenterna i mjukvaran och gör det möjligt för mikrotjänsterna att vara autonoma.
På senare år har en tydlig trend varit att överge monolitiska system till förmån för mikrotjänstarkitektur. Varför den här förändringen har skett beror på flera saker:
Microservices möjliggör för agil utveckling och snabba releasecykler eftersom det går att inför nya funktioner och uppdateringar snabbt utan att hela systemet påverkas.
Det är enkelt att skala ett system med mikrotjänstarkitektur och det går dessutom att göra på ett resurseffektivt sätt då utvecklarna endast behöver fokusera på de tjänster som faktiskt behöver skalas. Resten kan lämnas orörda.
Tack vare tjänsternas oberoende är det betydligt enklare att diagnostisera och isolera fel än i ett monolitiskt system. Om ett fel uppstår i en enskild mikrotjänst, kommer detta inte automatiskt att påverka övriga delar av systemet.
Microservices erbjuder en hög grad av flexibilitet och teknologier kan blandas på ett sätt som inte är möjligt i ett monolitiskt system. På så sätt kan utvecklarna välja den bästa teknologin för en specifik funktion och slippa låsa sig till några få.
Mikrotjänster gör det möjligt att vara anpassningsbar och göra snabba förändringar. Företag kan därför snabbt ställa om efter marknadens behov och de kan även experimentera med olika tillägg och funktioner – funkar det inte är det bara att ta bort.
Underhållet av mikrotjänster är enklare eftersom de är mindre och fokuserar på specifika funktioner. Det gör även att de är enklare att förstå och återanvända.
Många företag håller idag fast vid sina monolitiska legacy-system för att de inte tror de kan klara sig utan det. Det är ofta verksamhetens mest centrala system och innehåller det mesta – även sånt som det inte är anpassat för. Av just den anledningen är det inte längre hållbart att ha det kvar.
Verksamheter gör ofta omfattande anpassningar för att möta sina specifika behov vilket kan leda till att det inte går att lägga till nya funktioner eller uppdatera systemet. Det är också vanligt att prestandan och säkerheten försämras samtidigt som det inte längre går att patcha. Systemet har helt enkelt passerat sitt bäst-före-datum – med råge.
Att överge sitt gamla legacy-system kan kännas som ett stort, nästan ogenomförbart steg, men det kommer vara värt det. Fler och fler företag har upptäckt fördelarna med microservices vilket gör dem beredda att genomföra förändringen, en förändring som bör göras för att kunna förbli konkurrenskraftiga.
Block QuoteTillbaka