Microservices Tutorial: Hvad er, Architecture og eksempel

โšก Smart opsummering

Mikroservices er et serviceorienteret arkitekturmรธnster, hvor en applikation er bygget som en samling af smรฅ, uafhรฆngige serviceenheder. Denne ressource forklarer monolitisk versus mikroservicearkitektur, deres forskelle, udfordringer, SOA-sammenligning, populรฆre vรฆrktรธjer og bedste praksis.

  • ๐Ÿงฉ Kernekoncept: Mikroservices opdeler en applikation i enkeltfunktionelle, uafhรฆngigt implementerede moduler, der hver ejes af et lille team pรฅ 5 til 10 udviklere.
  • ๐Ÿ“ฆ Monolitisk kontrast: En monolitisk applikation samler alle funktioner i รฉn pakke pรฅ รฉn server, sรฅ skalering betyder at kรธre flere fulde kopier.
  • ๐Ÿ—๏ธ Mikroservice Archilรฆre: Hver tjeneste hรฅndterer รฉn forretningsfunktion, kรธrer pรฅ sin egen instans og kommunikerer via lette, statslรธse protokoller.
  • ๐Ÿ—„๏ธ Fรธdererede data: Hver mikrotjeneste ejer sit eget datalager, sรฅ en รฆndring af รฉn tjenestes datamodel pรฅvirker ikke de andre.
  • ๐Ÿ› ๏ธ Vรฆrktรธjer og praksis: Vรฆrktรธjer som WireMock, Docker og Hystrix understรธtter test, implementering og fejltolerance; hold hver tjeneste statslรธs med sin egen build.

Tutorial til mikrotjenester

Hvad er mikrotjenester?

Microservices er et serviceorienteret arkitekturmรธnster, hvor applikationer er bygget som en samling af forskellige mindste uafhรฆngige serviceenheder. Det er en software Engineering tilgang, der fokuserer pรฅ at dekomponere en applikation i enkeltfunktionsmoduler med veldefinerede grรฆnseflader. Disse moduler kan implementeres uafhรฆngigt og drives af smรฅ teams, der ejer hele tjenestens livscyklus.

Udtrykket "mikro" refererer til stรธrrelsen af โ€‹โ€‹en mikroservice, som skal kunne hรฅndteres af et enkelt udviklingsteam (5 til 10 udviklere). I denne metode opdeles store applikationer i de mindste uafhรฆngige enheder.

Hvad er monolitisk Archilรฆre?

Enkelt fortalt kan man sige, at monolitisk arkitektur er som en stor container, hvor alle softwarekomponenterne i en applikation er samlet i en enkelt pakke. Lad os diskutere et eksempel pรฅ en e-handelsbutik i konteksten af โ€‹โ€‹en monolitisk arkitektur.

Monolithic Architecture of eCommerce Application

Monolithic Architecture of eCommerce Application

I enhver e-handelsapplikation er der nogle standardfunktioner som sรธgning, RevVisninger og vurderinger samt betalinger. Disse funktioner er tilgรฆngelige for kunder ved hjรฆlp af deres browser eller apps. Nรฅr udvikleren af โ€‹โ€‹e-handelswebstedet implementerer applikationen, er det en enkelt monolitisk enhed. Koden til forskellige funktioner som sรธgning, RevVisninger og vurderinger samt betalinger er pรฅ den samme server. For at skalere applikationen skal du kรธre flere instanser (servere) af disse applikationer.

Hvad er Microservice Archilรฆre?

Mikroservice Architecture er en arkitektonisk udviklingsstil, der gรธr det muligt at bygge applikationer som en samling af smรฅ autonome tjenester udviklet til et forretningsdomรฆne. Det er en variant af strukturel stilarkitektur, der hjรฆlper med at arrangere applikationer som en lรธst koblet servicesamling. Mikrotjenesten Architecture indeholder finkornede tjenester og lette protokoller.

Lad os tage et eksempel pรฅ en e-handelsapplikation udviklet med mikroservicearkitektur. I dette eksempel pรฅ en mikroservicearkitektur fokuserer hver mikroservice pรฅ en enkelt forretningsfunktion. Sรธgning, vurdering og Review og Payment har hver deres instans (server) og kommunikerer med hinanden.

Microservices Architecture

Microservices Architecture

I Monolitikum ArchiTektur, alle komponenterne samles i et enkelt modul. Men i Microservices ArchiTekturen spredes i individuelle moduler (mikrotjenester), der kommunikerer med hinanden, som vist i eksemplet med mikrotjenester ovenfor.

Kommunikationen mellem mikrotjenester er en statslรธs kommunikation, hvor hvert par af anmodninger og svar er uafhรฆngige. Derfor kan Microservices kommunikere ubesvรฆret. I Microservice ArchiTeknologi, dataene er samlet. Hver mikrotjeneste har sit separate datalager.

Microservices vs. Monolithic Architecture

MicroservicesMonolithic Architecture
Hver enhed i hele applikationen skal vรฆre den mindste, og den skal kunne levere รฉt specifikt forretningsmรฅl.En enkelt kodebase til alle forretningsmรฅl.
Opstart af tjenesten er relativt hurtig.Opstart af tjenesten tager lรฆngere tid.
Fejlisolering er nemt. Selv hvis รฉn tjeneste gรฅr ned, kan andre fortsรฆtte med at fungere.Fejlisolering er vanskelig. Hvis en specifik funktion ikke fungerer, gรฅr hele systemet ned. For at hรฅndtere dette problem skal applikationen genopbygges, testes igen og implementeres igen.
Alle mikrotjenester bรธr vรฆre lรธst koblet sammen, sรฅ รฆndringer foretaget i den ene ikke pรฅvirker den anden.Monolitisk arkitektur er tรฆt forbundet. ร†ndringer i รฉt kodemodul pรฅvirker det andet.
Virksomheder kan anvende flere ressourcer pรฅ tjenester, der genererer et hรธjere investeringsafkast.Da tjenester ikke er isolerede, er individuel ressourceallokering ikke mulig.
Flere hardwareressourcer kunne allokeres til den tjeneste, der ofte bruges. I ovenstรฅende e-handelseksempel tjekker flere brugere produktlisten og sรธger sammenlignet med betalinger, sรฅ flere ressourcer kunne allokeres til mikrotjenesten til sรธgning og produktliste.Ansรธgningsskalering er udfordrende sรฅvel som spild.
Mikrotjenester forbliver altid konsistente og kontinuerligt tilgรฆngelige.Udviklingsvรฆrktรธjer bliver overbelastede, da processen skal starte forfra.
Data er samlet. Dette giver individuelle mikrotjenester mulighed for at anvende en datamodel, der passer bedst til deres behov.Data er centraliseret.
Smรฅ fokuserede teams. Parallel og hurtigere udvikling.Det krรฆver et stort team og en betydelig teamledelsesindsats.
ร†ndring i datamodellen for รฉn mikrotjeneste pรฅvirker ikke andre mikrotjenester.ร†ndringer i datamodellen pรฅvirker hele databasen.
Interagerer med andre mikrotjenester ved hjรฆlp af veldefinerede grรฆnseflader.Ikke anvendelig.
Mikrotjenester fungerer ud fra princippet om at fokusere pรฅ produkter, ikke projekter.Lรฆgger vรฆgt pรฅ hele projektet.
Ingen krydsafhรฆngigheder mellem kodebaser. Du kan bruge forskellige teknologier til forskellige mikrotjenester.En funktion eller et program afhรฆnger af andre.

Microservice udfordringer

  • Mikrotjenester er afhรฆngige af hinanden, og de bliver nรธdt til at kommunikere med hinanden.
  • Sammenlignet med monolitiske systemer er der flere tjenester at overvรฅge, som er udviklet ved hjรฆlp af forskellige programmeringssprog.
  • Da det er et distribueret system, er det en iboende kompleks model.
  • Forskellige tjenester vil have deres separate mekanisme, hvilket resulterer i en stor mรฆngde hukommelse til ustrukturerede data.
  • Effektiv ledelse og teamwork er nรธdvendigt for at forhindre kaskadeproblemer.
  • Det vil vรฆre vanskeligt at reproducere et problem, nรฅr det er vรฆk i รฉn version og kommer tilbage i den nyeste version.
  • Uafhรฆngig implementering er kompliceret med Microservices.
  • Mikroservicearkitektur bringer masser af operationer overhead.
  • Det er vanskeligt at administrere applikationen, nรฅr nye tjenester tilfรธjes til systemet.
  • En bred vifte af dygtige fagfolk er nรธdvendig for at understรธtte heterogent distribuerede mikrotjenester.
  • Microservice er dyrt, da du skal vedligeholde forskellig serverplads til forskellige forretningsopgaver.

SOA vs. Microservices

SOA-tjenester vedligeholdes i organisationen af โ€‹โ€‹et register, der fungerer som en mappeliste. Applikationer skal slรฅ tjenesterne op i registeret og kalde tjenesten. Med andre ord, SOA er ligesom et orkester, hvor hver kunstner optrรฆder med sit instrument, mens musiklederen giver instruktioner til alle.

I den anden ende er Microservices en form for serviceorienteret arkitektur, hvor applikationer er bygget som en samling af forskellige mindre tjenester i stedet for รฉn software eller applikation. Microservices er ligesom en trup, hvor hver danser er uafhรฆngig og ved, hvad de skal gรธre. Sรฅ hvis de misser nogle trin, ved de, hvordan de kommer tilbage til den rigtige rรฆkkefรธlge. Her er en detaljeret sammenligning mellem SOA og Microservices.

ParameterSOAMicroservices
Design typeI SOA eksponeres softwarekomponenter til den ydre verden til brug i form af tjenester.Micro Service er en del af SOA. Det er en implementering af SOA.
AfhรฆngighedForretningsenheder er afhรฆngige.De er uafhรฆngige af hinanden.
Softwarens stรธrrelseSoftwaren er stรธrre end konventionel software.Softwarens stรธrrelse er altid lille i Microservices.
Teknologi stakTeknologistakken er lavere sammenlignet med Microservice.Mikroserviceteknologistak kan vรฆre meget stor.
Ansรธgningens artMonolitisk af natur.Fuld stak i naturen.
Selvstรฆndig og fokusSOA-applikationer er bygget til at udfรธre flere forretningsopgaver.De er bygget til at udfรธre en enkelt forretningsopgave.
DeploymentImplementeringsprocessen er tidskrรฆvende.Implementeringen er ligetil og mindre tidskrรฆvende.
OmkostningseffektivitetMere omkostningseffektiv.Less omkostningseffektiv.
SkalerbarhedLess sammenlignet med Microservices.Meget skalerbar.
ForretningslogikForretningslogikkomponenter er gemt i et enkelt servicedomรฆne med simple kabelprotokoller (HTTP med XML eller JSON) og API-drevet med SDK'er/klienter.Forretningslogik kan fungere pรฅ tvรฆrs af domรฆner med lag mellem tjenester (Middleware) i stil med enterprise Service Bus.

Mikroservicevรฆrktรธjer

1) Wiremock: Test af mikrotjenester

WireMock er et fleksibelt bibliotek til stubbing og mocking af webtjenester. Det kan konfigurere det svar, der returneres af HTTP API'en, nรฅr den modtager en specifik anmodning. Det bruges ogsรฅ til test af mikrotjenester.

Hent link: http://wiremock.org/

2) Docker

Docker er et open source-projekt, der giver os mulighed for at oprette, implementere og kรธre applikationer ved hjรฆlp af containere. Ved at bruge disse containere kan udviklere kรธre en applikation som en enkelt pakke. Det giver dig mulighed for at levere biblioteker og andre afhรฆngigheder i รฉn pakke.

Hent link: https://www.docker.com/

3) Hystrix

Hystrix er en fejltolerance Java bibliotek. Dette vรฆrktรธj er designet til at adskille adgangspunkter til eksterne tjenester, systemer og tredjepartsbiblioteker i et distribueret miljรธ som Microservices. Det forbedrer det overordnede system ved at isolere de fejlende tjenester og forhindre den kaskadelignende effekt af fejl.

Hent Link: https://github.com/Netflix/Hystrix

Bedste praksis for mikrotjenester Architecture

  • Separat datalager for hver mikrotjeneste.
  • Hold koden pรฅ et lignende modenhedsniveau.
  • Separat build for hver Microservice.
  • Behandl altid hver server som statslรธs.

Ofte Stillede Spรธrgsmรฅl

AI-funktioner pakkes ofte som individuelle mikrotjenester, sรฅ applikationer kan kalde en model via en API uden at integrere den. AI driver ogsรฅ intelligent routing, autoskalering og anomalidetektion pรฅ tvรฆrs af mange tjenester.

Ja. AI-drevne observationsvรฆrktรธjer korrelerer logfiler, metrikker og tracpรฅ tvรฆrs af tjenester for at opdage fejl, forudsige flaskehalse og finde den grundlรฆggende รฅrsag hurtigere end manuel analyse i et stort distribueret system.

Mikrotjenester klassificeres generelt som statslรธse og statslige. Statslรธse mikrotjenester gemmer ikke data mellem anmodninger, mens statslige mikrotjenester vedligeholder data- eller sessionstilstand, ofte bakket op af deres eget dedikerede datalager.

Store teknologivirksomheder som f.eks. Netflix, Amazon, Uber og Spotify Brug mikrotjenester til at skalere uafhรฆngigt og implementere hyppigt. Tilgangen er egnet til cloud-native applikationer med hรธj trafik, der krรฆver hurtige, isolerede udgivelser.

Opsummer dette indlรฆg med: