- Mikrotjenester giver dig mulighed for at udvikle modulære og skalerbare applikationer ved at opdele funktioner i uafhængige tjenester.
- De tilbyder smidighed og hastighed i udviklingen, hvilket letter integrationen af ændringer.
- Dens implementering forbedrer systemets robusthed, da en fejl i én tjeneste ikke påvirker andre.
- De bruger heterogene teknologier, der giver teams mulighed for at vælge det bedste værktøj til hver specifik opgave.
Hvorfor er mikrotjenester vigtige?
En kort historie om mikrotjenester
Hvad er mikrotjenester?
1. Definition af mikrotjenester
2. Nøglefunktioner ved mikrotjenester
- Afkobling:Hver mikroservice er uafhængig og kan udvikles, implementeres og skaleres selvstændigt uden at påvirke andre tjenester.
- Et enkelt ansvar: Hver mikroservice er ansvarlig for en specifik opgave eller funktionalitet, efter princippet om et enkelt ansvar.
- Heterogene teknologier: Mikrotjenester kan udvikles i forskellige programmeringssprog og teknologier, så du kan vælge det bedste værktøj til hver opgave.
- elasticitet: Fordi de er afkoblet, påvirker en fejl i én mikrotjeneste ikke hele systemet, hvilket forbedrer den overordnede modstandsdygtighed.
- Skalerbarhed: Mikrotjenester kan skaleres uafhængigt efter behov, hvilket optimerer ressourceforbruget.
Link til Wikipedia om mikrotjenester
Mikroservices arkitektur
1. Komponenter i mikroservicearkitektur
- Mikrotjenester: Hovedkomponenterne i arkitekturen, hver ansvarlig for en specifik opgave eller funktionalitet.
- API-gateway: Et centraliseret indgangspunkt, der dirigerer anmodninger til de relevante mikrotjenester og administrerer sikkerhed, godkendelse og routing.
- Servicejournal: En komponent, der opretholder en ajourført registrering af alle tilgængelige mikrotjenester og deres placeringer.
- Overvågning og registrering: Værktøjer til at overvåge mikrotjenesters ydeevne, sundhed og logfiler.
- Kommunikation mellem tjenester: Mekanismer for mikrotjenester til at kommunikere sikkert og effektivt, såsom HTTP/REST, meddelelser eller hændelsesstreaming.
2. Kommunikationsmønstre mellem mikrotjenester
- Anmodning/svar: En mikrotjeneste sender en anmodning til en anden og venter på et svar, normalt ved hjælp af HTTP/REST.
- Asynkron beskederMikrotjenester kommunikerer gennem et meddelelsessystem, såsom meddelelseskøer eller hændelsesstreamingsystemer. I denne tilgang sender en mikrotjeneste beskeder til en kø eller et emne, og andre mikrotjenester forbruger disse beskeder asynkront. Dette mønster giver mulighed for større afkobling og skalerbarhed.
- Begivenhedsstreaming: Mikrotjenester udgiver og forbruger kontinuerlige strømme af begivenheder i realtid ved hjælp af hændelsesstreamingsystemer som Apache Kafka eller Amazon Kinesis. Denne tilgang er velegnet til brugssager, der kræver databehandling i realtid og høj skalerbarhed.
- Koreografi af begivenheder: I stedet for direkte kommunikation mellem mikrotjenester, bruges en centraliseret eventbus, hvor mikrotjenester publicerer og lytter efter relevante begivenheder. Hver mikroservice reagerer uafhængigt på begivenheder, hvilket fremmer større afkobling.
- Remote Procedure Calls (RPC)Mikrotjenester kan kommunikere via RPC-protokoller, såsom gRPC, som giver mere effektiv, binær-orienteret kommunikation sammenlignet med HTTP/REST.
- Delte databaseforespørgslerI nogle tilfælde kan mikrotjenester få adgang til og forespørge i delte databaser efter relevante data, selvom denne tilgang kan introducere øget kobling og bør håndteres forsigtigt.
Fordele ved mikrotjenester
1. Agilitet og udviklingshastighed
2. Skalerbarhed og robusthed
3. Let vedligeholdelse
4. Indførelse af nye teknologier
5. Udfordringer ved mikrotjenester
6. Ledelseskompleksitet
7. Distribueret overvågning og logning
8. Test og implementering
9. Sikkerhed og overholdelse
Mikrotjenester vs. Monolitisk arkitektur
Sammenligning af tilgange
- Monolitisk arkitektur: En applikation er bygget som en enkelt enhed, hvor alle komponenter er tæt koblet og implementeret som en enkelt pakke.
- Mikroservices arkitektur: Applikationen er opdelt i mindre, uafhængige tjenester, der hver især fokuserer på en specifik opgave eller funktionalitet og implementeres individuelt.
Hvornår skal man vælge mikrotjenester?
Microservices use cases
1. Elektronisk handel
2. Finansielle tjenesteydelser
3. Lægehjælp
4. Underholdning og medier
Populære værktøjer og rammer
1. Containerstyring (Docker, Kubernetes)
2. Serviceorkestrering
3. API-gateways
4. Overvågning og optagelse
Bedste praksis for implementering af mikrotjenester
1. Sammenhængende servicedesign
2. Infrastrukturautomatisering
3. Proaktiv overvågning
4. Distribueret datahåndtering
Fremtiden for mikrotjenester
Tendenser og fremskridt inden for mikrotjenester
- Hændelsesdrevne mikrotjenesterHændelsesdrevne kommunikationsmønstre såsom hændelsesstreaming og asynkron meddelelse forventes at vinde mere popularitet i mikroservicearkitekturer.
- Serverløse tjenester: Kombinationen af mikrotjenester og serverløse tjenester vinder frem, hvilket giver mulighed for større skalerbarhed og effektivitet i ressourceforbruget.
- Kunstig intelligens og maskinlæringInkorporering af AI og Machine Learning-kapaciteter i mikrotjenester kan muliggøre smartere, mere adaptive applikationer.
- Service MeshTjenestenet, såsom Istio og Linkerd, gør det nemt at administrere og overvåge mikrotjenester i komplekse miljøer, hvilket giver funktioner som intelligent routing, trafikstyring og robusthed.