Sam Newman’s principper for microservices fokuserer på at skabe en arkitektur, der er fleksibel, skalerbar og robust. Hans tilgang tager udgangspunkt i en række principper, som hjælper med at sikre, at systemer kan tilpasses forretningsbehov og udvikles på en effektiv måde.
1. Modelleret ud fra business domain
Microservices bør organiseres omkring forretningsdomæner snarere end tekniske krav. Ved at modellere services omkring forretningskapaciteter, kan teams fokusere på specifikke domæner som kunde-, ordre- eller produktstyring.
Systemet bliver mere fleksibelt og let at vedligeholde, fordi hvert domæne kan udvikles og ændres uafhængigt. Denne tilgang fremmer også domain-driven design (DDD), som hjælper med at sikre, at teknologien understøtter forretningsmålene direkte.
2. En automatiseringskultur
Automatisering er afgørende i en microservices-arkitektur, især når det kommer til test, deployment og overvågning. En stærk CI/CD-pipeline (Continuous Integration/Continuous Deployment) gør det muligt at implementere ændringer hurtigt og pålideligt.
Risikoen for menneskelige fejl bliver reduceret og sikrer, at nye versioner af en service kan distribueres hyppigt. Automatiseringen skal også inkludere overvågning, fejlhåndtering og skalering, så tjenester kan reagere automatisk på ændringer i belastningen eller fejl.
3. Gem implementeringsdetaljerne
Hver microservice skal være isoleret, hvilket betyder, at de skjuler deres interne implementeringsdetaljer fra resten af systemet. Dette koncept kaldes også encapsulation.
Andre services bør kun interagere med en given service gennem veldefinerede API’er. Ved at skjule implementeringen kan den interne logik ændres eller optimeres uden at påvirke andre dele af systemet.
Det giver fleksibilitet i forhold til teknologi, da forskellige services kan bruge forskellige programmeringssprog, databaser eller andre teknologier, uden at det påvirker hele systemet.
4. Decentralisér alt
Decentralisering er kernen i microservices-arkitekturen. I stedet for en centraliseret database eller governance, har hver service kontrol over sine egne data og sin egen teknologi.
Beslutninger træffes lokalt, hvilket øger fleksibiliteten og gør det muligt at vælge den bedste løsning for hver enkelt service. Samtidig kan forskellige teams arbejde selvstændigt, hvilket reducerer behovet for koordination og forbedrer udviklingshastigheden.
5. Deploy enkeltvis
En af de største fordele ved microservices er muligheden for at implementere hver service separat. Når en enkelt service skal opdateres eller skaleres, kan dette gøres uden at påvirke andre services i systemet.
Denne uafhængighed muliggør hurtigere implementeringscyklusser, færre fejl ved deployment, og en generel højere grad af fleksibilitet. Det kræver dog, at infrastrukturen understøtter denne form for selvstændig implementering gennem automatiserede deployments, test og overvågning.
6. Isolér fejl
Fejlisolering er et afgørende aspekt af en microservices-arkitektur. Ved at sikre, at fejl i en service ikke spreder sig til andre dele af systemet, forbedres systemets robusthed.
Teknologier som circuit breakers og retries kan bruges til at beskytte mod kaskadefejl. Hvis en service fejler, bør systemet stadig kunne fungere delvist, måske med reduceret funktionalitet.
7. Observér alt
Microservices-arkitekturer kan være komplekse, og derfor er omfattende overvågning afgørende. Dette indebærer at have synlighed i hver enkelt service, inklusive dens ydeevne, fejl, afhængigheder og brugerinteraktioner. Ved at observere alt kan teams hurtigt opdage problemer og reagere proaktivt.
Top comments (0)