Microservices är en riktig snackis i e-handelsvärlden just nu. Men vilka är fördelarna och nackdelarna? Vår Head of Technology, Andreas Wellén, reder ut det viktigaste.
Först; Vad är microservices?
Låt oss inleda med det grundläggande, vad är egentligen microservices? Jo, en arkitekturprincip med syftet att bygga självständiga (små) tjänster som specialiseras till enskilda uppgifter. Kommunikationen med andra tjänster sker via standardprotokoll (http, meddelandeköer) via API:er såsom REST där kommunikationen är kontraktbaserad. En huvud-enabler till principen är hela molnrörelsen men mängder av verktyg från olika leverantörer (AWS, Azure, Docker etc.) som möjliggör att köra enskilda tjänster utan att en dedikerad server.
Man förespråkar även med detta en förändring av hur man organiserar sig kring utveckling. Genom att arbeta med microservices förespråkas korsfunktionella team som arbetar med enskilda tjänster med egna backlogs och produktägare.
Inom e-handelsområdet är Zalando pionjärer då de valde att, istället för att köpa ett monolitiskt system, bygga eget från grunden baserad på en microservice-arkitektur. (Läs mer om detta i denna bloggpost).
Vilka är fördelarna och nackdelarna?
Jag skulle helt klart kunna skriva en avhandling om detta, men för detta inlägg har jag valt ut ett axplock av det jag tycker är viktigast.
Fördelar
+ Flexiblare då enskilda tjänster kan optimeras och publiceras oberoende av de andra tjänsterna så länge som kontraktet dem emellan inte ändras.
+ Teknologiagnostisk då tjänsterna kan baseras på vilken teknik (lagring, ramverk, programmeringsspråk) som passar bäst givet det som skall utföras.
+ Minskar den tekniska risken då enskilda tjänster kan gå ner utan att helheten går under. Man kan även skala enskilda tjänster vilket torde spara pengar på sikt.
+ / - Enklare att testa enskilda tjänster men svårare att testa helheten.
Nackdelar
- Distribuerade system driver komplexitet och gör det svårt att överblicka, kräver service-register som håller koll på alla tjänster. Även separat loggning och övervakning för enskilda tjänster driver komplexitet i operations.
- Risk för att man bygger en monolit av microservices.
- Utmaningar i hur man håller nere svarstider på grund av nätverkslatens samt den overhead som kommer med http och serializering. Tjänster-på-tjänst-på-tjänste-anrop tenderar att driva risken för långa svarstider så man behöver ha en klar strategi kring cachening och liknande.
Hur påverkar microservices företags digitala strategier framöver?
Jag ser två primära områden där detta kommer ha stort genomslag:
- Företag måste ställa om sin mentalitet till en API-approach och business application design. Lyfta blicken och sluta fokusera på dataleverans mellan punkt A och B från system X och Y och istället fokusera på affärsfokuserade komponenter.
- Innovationstakten kommer att accelerera, vilket innebär att man kommer kunna svara på sina kunders önskemål och behov i en mycket högre grad jämfört med vad man gör idag.
Som alltid finns det både fördelar och nackdelar, detta gäller även microservices. Huruvida det är rätt för ditt företag är baserat på en rad faktorer som affärsmodell, organisation och er digitala innovationskraft. Det mest spännande med microservices är helt klart att det sätter affär framför teknik och främjar snabbrörlighet och innovation
Vad är dina tankar kring microservices? Dela gärna med dig av tankar och erfarenheter i kommentarsfältet längre ner.