Microservices Tutorial: Hvad er, Architecture og eksempel

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 mikrotjeneste, som skal kunne administreres af et enkelt udviklingsteam (5 til 10 udviklere). I denne metode er store applikationer opdelt i mindste uafhรฆngige enheder.

Hvad er monolitisk Archilรฆre?

I lรฆgmandstermer kan man sige, at monolitisk arkitektur er som en stor beholder, hvor alle softwarekomponenterne i en applikation er samlet i en enkelt pakke.

Lad os diskutere et eksempel pรฅ en e-handelsbutik i sammenhรฆng med en monolitisk arkitektur.

Monolithic Architecture
Monolithic Architecture of eCommerce Application

I enhver e-handelsapplikation er der nogle standardfunktioner som sรธgning, Review & vurderinger og betalinger. Disse funktioner er tilgรฆngelige for kunder, der bruger deres browser eller apps. Nรฅr udvikleren af โ€‹โ€‹e-handelssiden implementerer applikationen, er det en enkelt monolitisk enhed. Koden til forskellige funktioner som Sรธg, Review & vurderinger og betalinger er pรฅ samme server. For at skalere applikationen skal du kรธre flere forekomster (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รฅ e-handelsapplikation udviklet med mikroservicearkitektur. I dette Microservices-arkitektureksempel er hver mikroservice fokuseret pรฅ enkelt virksomhedskapacitet. Sรธg, bedรธmme og Review og Payment har hver deres instans (server) og kommunikerer med hinanden.

Microservices Architecture
Microservices Architecture

I Monolitikum Architecture, smelter alle komponenterne sammen til et enkelt modul. Men i Microservices Archide er spredt i individuelle moduler (microservice), som kommunikerer med hinanden som vist i Microservices-eksemplet 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 mikrotjenesten Architecture, er dataene fรธdereret. Hver mikroservice har sit separate datalager. Nรฆste i dette Java Microservices tutorial, vi vil lรฆre om forskellen mellem Microservices og monolitisk arkitektur.

Microservices vs. Monolithic Architecture

Microservices Monolithic Architecture
Hver enhed i hele applikationen skal vรฆre den mindste, og den skal kunne levere รฉt specifikt forretningsmรฅl. En enkelt kodebase for alle forretningsmรฅl
Servicestart er relativt hurtig Servicestart tager lรฆngere tid
Fejlisolering er let. Selvom en tjeneste gรฅr ned, kan en anden fortsรฆtte med at fungere. Fejlisolering er vanskelig. Hvis en bestemt funktion ikke virker, gรฅr hele systemet ned. For at hรฅndtere dette problem skal applikationen genopbygges, gentestes og ogsรฅ geninstalleres.
Alle mikrotjenester bรธr vรฆre lรธst koblet, sรฅ รฆndringer foretaget i den ene ikke pรฅvirker den anden. Monolitisk arkitektur er tรฆt forbundet. ร†ndringer i et kodemodul pรฅvirker det andet
Virksomheder kan implementere flere ressourcer til tjenester, der genererer hรธjere ROI Da tjenester ikke er isolerede, er individuel ressourceallokering ikke mulig
Flere hardwareressourcer kunne allokeres til den tjeneste, der ofte bruges. I e-handelseksemplet ovenfor tjekker flere brugere produktlisten og sรธger sammenlignet med betalinger. Sรฅ der kunne allokeres flere ressourcer til sรธge- og produktlistemikrotjenesten. Ansรธgningsskalering er udfordrende sรฅvel som spild.
Mikrotjenester forbliver altid konsekvente og konstant tilgรฆngelige. Udviklingsvรฆrktรธjer bliver overbebyrdede, da processen skal starte fra bunden.
Data er fรธdereret. Dette giver den enkelte Microservice mulighed for at vedtage en datamodel, der passer bedst til dens behov. Data er centraliseret.
Smรฅ fokuserede teams. Parallel og hurtigere udvikling Et stort team og en betydelig teamledelsesindsats er pรฅkrรฆvet
ร†ndring i datamodellen for รฉn mikrotjeneste pรฅvirker ikke andre mikrotjenester. ร†ndring i datamodel pรฅvirker hele databasen
Interagerer med andre mikrotjenester ved at bruge veldefinerede grรฆnseflader Ikke relevant
Microservices arbejder efter princippet, der fokuserer pรฅ produkter, ikke projekter Lรฆg 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

  • MicroServices 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 sin separate mekanisme, hvilket resulterer i en stor mรฆngde hukommelse til ustrukturerede data.
  • Effektiv ledelse og teamwork krรฆves for at forhindre cascading problemer
  • At gengive et problem vil vรฆre en vanskelig opgave, nรฅr det er vรฆk i รฉn version og kommer tilbage i den seneste version.
  • Uafhรฆngig implementering er kompliceret med Microservices.
  • Mikroservicearkitektur bringer masser af operationer overhead.
  • Det er svรฆrt at administrere applikationen, nรฅr nye tjenester tilfรธjes til systemet
  • En bred vifte af dygtige fagfolk er pรฅkrรฆvet 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 adresseliste. Ansรธgninger skal slรฅ tjenesterne op i registreringsdatabasen og pรฅberรฅbe sig tjenesten.

I en anden verden, SOA er ligesom et orkester, hvor hver kunstner optrรฆder med sit instrument, mens musiklederen giver instruktioner til alle.

Pรฅ den anden ende er Microservices en form for serviceorienteret arkitekturstil, hvor applikationer er bygget som en samling af forskellige mindre tjenester i stedet for en software eller applikation.

Microservices er ligesom en trup, hvor hver danser er uafhรฆngig og ved, hvad de skal gรธre. Sรฅ hvis de gรฅr glip af nogle trin, ved de, hvordan de kommer tilbage til den rigtige rรฆkkefรธlge. Lad os nu i denne Microservices arkitektur tutorial lรฆre om forskellen mellem SOA og Microservices.

Her er en detaljeret sammenligning mellem SOA og Microservices

Parameter SOA Microservices
Design type I 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รฆngighed Forretningsenheder er afhรฆngige. De er uafhรฆngige af hinanden.
Softwarens stรธrrelse Softwarestรธrrelsen er stรธrre end nogen konventionel software Softwarens stรธrrelse er altid lille i Microservices
Teknologi stak Teknologistakken er lavere sammenlignet med Microservice. Mikroserviceteknologistak kan vรฆre meget stor
Ansรธgningens art Monolitisk i naturen Fuld stabel i naturen
Selvstรฆndig og fokus SOA-applikationer er bygget til at udfรธre flere forretningsopgaver. De er bygget til at udfรธre en enkelt forretningsopgave.
Deployment Implementeringsprocessen er tidskrรฆvende. Implementeringen er ligetil og mindre tidskrรฆvende.
Omkostninger โ€“ effektivitet Mere omkostningseffektiv. Less omkostningseffektiv.
Skalerbarhed Less sammenlignet med Microservices. Meget skalerbar.
Forretningslogik Forretningslogikkomponenter gemmes inde i et enkelt tjenestedomรฆne Simple wire-protokoller (HTTP med XML JSON) API drives med SDK'er/klienter Forretningslogik kan leve pรฅ tvรฆrs af domรฆner, Enterprise Service Bus-lignende lag mellem tjenester, Middleware

Mikroservicevรฆrktรธjer

1) Wiremock: Test af mikrotjenester

WireMock er et fleksibelt bibliotek til at stoppe og hรฅne webtjenester. Det kan konfigurere svaret, der returneres af HTTP API'en, nรฅr det modtager en specifik anmodning. Det bruges ogsรฅ til at teste mikrotjenester.

Hent link:http://wiremock.org/

2) Docker

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

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

3) Hystrix

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

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

Bedste praksis for mikrotjenester Architecture

  • Separat datalager for hver mikrotjeneste
  • Behold koden pรฅ et lignende modenhedsniveau.
  • Separat build for hver mikrotjeneste.
  • Behandl altid - alvorlig som statslรธs.

Resumรฉ

  • Microservices er et serviceorienteret arkitekturmรธnster, hvor applikationer er bygget som en samling af forskellige mindste uafhรฆngige serviceenheder.
  • Mikroservice Architecture er en arkitektonisk udviklingsstil, der gรธr det muligt at bygge en applikation som en samling af smรฅ autonome tjenester udviklet til et forretningsdomรฆne.
  • Monolitisk arkitektur er som en stor beholder, hvor alle softwarekomponenterne i en applikation er samlet i en enkelt pakke
  • I en mikroservice skal hver enhed af hele applikationen vรฆre den mindste, og den bรธr kunne levere รฉt specifikt forretningsmรฅl
  • I monolitisk arkitektur kan en stor kodebase bremse hele udviklingsprocessen. Nye udgivelser kan tage mรฅneder. Kodevedligeholdelse er vanskelig
  • To typer mikrotjenester er 1) Statslรธse 2) Stateful
  • Mikrotjenester i Java stole pรฅ hinanden, og de bliver nรธdt til at kommunikere med hinanden. Hjรฆlper dig med at lรฆgge vรฆgt pรฅ en specifik funktion og forretningsbehov
  • Serviceorienteret arkitektur kort kendt som SOA er en udvikling af distribueret databehandling baseret pรฅ anmodnings- eller svardesignmodellen til synkrone og asynkrone applikationer
  • I SOA eksponeres softwarekomponenter for den ydre verden til brug i form af tjenester, mens Micro Service er en del af SOA. Det er en implementering af SOA
  • Wiremock, Docker og Hystrix er nogle populรฆre Microservices-vรฆrktรธjer

Opsummer dette indlรฆg med: