Microservices
I den digitale verden er microservices blevet en populær tilgang til at udvikle komplekse løsninger. Ved at opdele større systemer i mindre, selvstændige dele, giver det udviklere mulighed for at arbejde på forskellige services uafhængigt af hinanden. Dette skaber høj fleksibilitet og mulighed for at udvikle og teste forskellige services parallelt. Men selvom microservices kan være en løsning for mange, er det ikke den rette tilgang for alle, og der er visse udfordringer, der skal overvejes.
Microservice arkitektur er en modulær tilgang til digitale løsninger. Her splitter man en større løsning op i mindre selvstændige dele, der løser en opgaver hver især. Disse selvstændige dele vil samlet set fungere som en samlet løsning, der orkestreres gennem en eller flere frontend applikationer. Hver enkelt service kan nu udvikles og testes uafhængigt af de andre services. Dette skaber høj fleksibilitet, da forskellige grupper af udviklere kan arbejde på hver deres microservice selvstændigt. I større virksomheder kan teams på tværs af organisationen arbejde på services, hvor netop de har domæneviden.
Microservices er dog ikke en løsning på alt og skaber en anden form for kompleksitet. Det kræver, at en organisation har en vis modenhed og kultur inden for DevOps og automatisering. Virksomheder, der har succes med microservices, laver CI/CD hvor alle kodeændringer integreres med den eksisterende kodebase, hvor koden testes automatisk og kan udgives hurtigt uden nedetid.
Fra monolith til microservices
For mange virksomheder kan det være dyrt og forbundet med risici at omskrive deres systemer for at overgå til microservices. Det er ofte ikke den foretrukne fremgangsmåde at lave en big-bang implementering, hvor man omskriver alle softwaremoduler på en gang. Hvis I har et stort, ældre system, kan I forvente at leve i noget tid med en hybrid løsning for at sikre, at systemet fortsat fungerer som helhed. Med denne fremgangsmåde er det vigtigt at analysere hvilke moduler, der er isolerede og hvilke moduler, der har en høj grad af kobling. Det er en fordel at starte med moduler, der har en lav kobling, høj samhørighed og er ikke-forretningskritiske.
Microservices kan være en kraftfuld tilgang til at opbygge digitale løsninger, men det kræver en vis modenhed og kultur inden for DevOps og automatisering for at maksimere fordelene. For virksomheder med store, ældre systemer, er en hybrid tilgang en god måde at implementere microservices gradvist og minimere risici. Det er vigtigt at analysere systemet og identificere moduler med lav kobling og høj samhørighed, og starte med at implementere disse først. På denne måde kan man gradvist overføre systemet til en microservices arkitektur, der maksimerer fordelene og minimerer risiciene.
Kobling (coupling) og samhøringhed (cohesion)
I softwaresystemer opererer man med begrebet kobling til at beskrive i hvor høj grad et softwaremodul er forbundet med andre softwaremoduler. Sammenhørighed beskriver i hvor høj grad de enkelte komponenter i et modul relaterer til hinanden.
Som udgangspunk vil man have lav kobling og høj sammenhørighed, men i realiteten kan det være svært at opnå altid.