En mikrotjänstarkitektur är ett system där en stor applikation består av små tjänster som fungerar och kommunicerar med varandra med hjälp av API: er.
Dessa tjänster är mycket oberoende och löst kopplade. Detta gör dem lätta att testa och underhålla vilket i sin tur snabbar på utvecklingsprocessen.
Hur mikrotjänster fungerar
Innan mikrotjänster var standardsättet att utveckla applikationer att använda en monolitisk arkitektur. Sådana ansökningar var enskilda, oberoende enheter. Deras komponenter – som användargränssnitt, affärslogik och datalagring – skrivs i en enda kodbas.
Även om monolitappar är lätta att designa och utveckla, kan den resulterande koden vara svår att förstå, skala och underhålla.
I en mikrotjänstarkitektur bryter du ner en stor applikation i mindre, autonoma tjänster. Varje tjänst ansvarar för en enda applikationsuppgift och kommunicerar med andra med hjälp av API: er.
Varje tjänst innehåller också alla nödvändiga beroenden och du behöver inte länka den till externa resurser.
Mikrotjänster är bra för applikationer utvecklade av stora organisationer. Ett team kan arbeta på en tjänst medan ett andra team arbetar på en annan. Du kan sedan testa och distribuera dessa tjänster separat.
Ett exempel på ett mikroservicesystem är en e-handelsapplikation med separata tjänster för att hantera användargränssnitt, kundvagn, inventering och beställningar.
Fördelar med en mikroservicearkitektur
Flexibilitet och skalbarhet
Eftersom varje mikrotjänst är oberoende av resten kan du utveckla och distribuera dem separat. Om en viss tjänst blir långsam kan du köra den på kraftfullare hårdvara eller lägga till fler processorer till servrarna som kör den.
Du kan också köra två instanser av en mikrotjänst parallellt.
Enkelt underhåll och uppdateringar
Om du bygger en applikation efter mikrotjänsters arkitektur kan du uppgradera den i etapper. Du kan göra ändringar i en tjänst och uppdatera den utan att påverka andra delar av applikationen.
Potential för snabbare utveckling och implementering
Små team arbetar tillsammans för att utveckla varje mikrotjänst. Eftersom mikrotjänsten utför en specifik uppgift kan medlemmar i ett team fokusera på den uppgiften ensam.
Dessutom är samordning och beslutsfattande i ett litet team snabbare än i ett stort team. Detta leder till en snabbare utvecklingscykel.
Oberoende teknikval
Du kan välja att utveckla en mikrotjänst i ett annat programmeringsspråk än de andra mikrotjänsterna. Du kan till exempel använda Python för att utveckla en mikrotjänst och JavaScript för en annan. Du kan också använda olika databashanteringstjänster för var och en. I slutändan bygger du tjänster med den mest lämpliga tekniken eller verktyget.
Utmaningar med att implementera en mikroservicearkitektur
Komplexiteten i att samordna olika tjänster
En applikation kan bestå av många tjänster som behöver kommunicera med varandra. Dessa kommunikationskanaler måste vara säkra och robusta för att applikationen ska fungera som avsett.
Felsökning och testningsproblem
Fel som du kan isolera till en enda tjänst är lättare att lösa. Men när dessa fel sträcker sig över flera tjänster, blir felsökningen mer av en utmaning. Likaså, skriva integrationstest för flera tjänster kan vara svårt.
Potential för ökade omkostnader
Varje tjänst är som sagt oberoende av de andra och har sina egna resurser. Detta kan bli dyrt eftersom varje tjänst kräver dedikerad infrastruktur bestående av bland annat servrar, kontinuerliga integrationsverktyg och databaser.
När ska man använda en mikroservicearkitektur
Mikrotjänsters arkitektur är inte lämplig för alla applikationer. Det kan bli dyrt att bygga och förvalta.
Innan du bestämmer dig för att använda en mikroservicearkitektur, överväg storleken och komplexiteten på din applikation. Du kommer att se större fördelar av att dela upp en stor applikation i hanterbara resurser än en liten applikation. Med en tillräckligt liten storlek kan det vara ett slöseri med resurser helt och hållet.
Men om du har ett stort team av utvecklare som behöver förstå en kodbas snabbt, eller vill använda olika tekniker, kan en mikroservicearkitektur vara rätt väg att gå.