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.
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
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
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
| 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 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.
| 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 | Softwaren er stรธrre end 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 af natur. | Fuld stak 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. |
| Omkostningseffektivitet | Mere omkostningseffektiv. | Less omkostningseffektiv. |
| Skalerbarhed | Less sammenlignet med Microservices. | Meget skalerbar. |
| Forretningslogik | Forretningslogikkomponenter 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.



