Microservices Tutorial: Vad är, Architecture och exempel
Vad är mikrotjänster?
Microservices är ett tjänsteorienterat arkitekturmönster där applikationer byggs som en samling av olika minsta oberoende tjänsteenheter. Det är en mjukvaruutveckling tillvägagångssätt som fokuserar på att sönderdela en applikation i enfunktionsmoduler med väldefinierade gränssnitt. Dessa moduler kan distribueras oberoende av varandra och drivas av små team som äger tjänstens hela livscykel.
Termen "mikro" hänvisar till storleken på en mikrotjänst som måste kunna hanteras av ett enda utvecklingsteam (5 till 10 utvecklare). I denna metodik är stora applikationer uppdelade i minsta oberoende enheter.
Vad är monolitiskt Architecture?
I lekmannatermer kan man säga att monolitisk arkitektur är som en stor behållare där alla programvarukomponenter i en applikation är klubbade i ett enda paket.
Låt oss diskutera ett exempel på en e-handelsbutik i samband med en monolitisk arkitektur.

I alla e-handelsapplikationer finns det några standardfunktioner som sökning, Review & betyg och betalningar. Dessa funktioner är tillgängliga för kunder som använder deras webbläsare eller appar. När utvecklaren av e-handelssidan distribuerar applikationen är det en enda monolitisk enhet. Koden för olika funktioner som Sök, Review & betyg och betalningar finns på samma server. För att skala applikationen måste du köra flera instanser (servrar) av dessa applikationer.
Vad är Microservice Architecture?
Mikrotjänst Architecture är en arkitektonisk utvecklingsstil som tillåter att bygga applikationer som en samling små autonoma tjänster utvecklade för en affärsdomän. Det är en variant av strukturell stilarkitektur som hjälper till att arrangera applikationer som en löst kopplad tjänstekollektion. Mikrotjänsten Architecture innehåller finkorniga tjänster och lätta protokoll.
Låt oss ta ett exempel på e-handelsapplikation utvecklad med mikrotjänstarkitektur. I detta Microservices-arkitekturexempel är varje mikrotjänst fokuserad på enstaka affärsmöjligheter. Sök, betygsätt och Review och Payment har var sin instans (server) och kommunicerar med varandra.

I monolitiken ArchiTecture sammansmälter alla komponenter till en enda modul. Men i Microservices ArchiDe är spridda i individuella moduler (microservice) som kommunicerar med varandra som visas i Microservices-exemplet ovan.
Kommunikationen mellan mikrotjänster är en tillståndslös kommunikation där varje par av begäran och svar är oberoende. Därför kan Microservices kommunicera utan ansträngning. I mikrotjänsten ArchiTecture är data federerad. Varje mikrotjänst har sitt separata datalager. Nästa i detta Java Handledning för mikrotjänster, vi kommer att lära oss om skillnaden mellan mikrotjänster och monolitisk arkitektur.
Microservices vs. Monolithic Architecture
| Microservices | Monolitisk Architecture |
|---|---|
| Varje enhet i hela applikationen bör vara den minsta, och den bör kunna leverera ett specifikt affärsmål. | En enda kodbas för alla affärsmål |
| Servicestarten går relativt snabbt | Servicestart tar längre tid |
| Felisolering är lätt. Även om en tjänst går ner kan den andra fortsätta att fungera. | Felisolering är svårt. Om någon specifik funktion inte fungerar slocknar hela systemet. För att hantera detta problem måste applikationen byggas om, testas om och även distribueras om. |
| Alla mikrotjänster bör vara löst kopplade så att ändringar som görs i den ena inte påverkar den andra. | Monolitisk arkitektur är tätt kopplad. Ändringar i en kodmodul påverkar den andra |
| Företag kan distribuera fler resurser till tjänster som genererar högre ROI | Eftersom tjänster inte är isolerade är individuell resursallokering inte möjlig |
| Mer hårdvaruresurser skulle kunna allokeras till tjänsten som används ofta. I e-handelsexemplet ovan kontrollerar fler användare produktlistan och söker jämfört med betalningar. Så, mer resurser kan allokeras till sök- och produktlistningsmikrotjänsten. | Applikationsskalning är både utmanande och slösaktigt. |
| Mikrotjänster förblir alltid konsekventa och kontinuerligt tillgängliga. | Utvecklingsverktygen blir överbelastade eftersom processen måste börja från början. |
| Data är federerad. Detta gör att individuella Microservice kan anta en datamodell som bäst lämpar sig för dess behov. | Data är centraliserad. |
| Små fokuserade team. Parallell och snabbare utveckling | Stort team och betydande teamledningsinsatser krävs |
| Ändring i datamodellen för en mikrotjänst påverkar inte andra mikrotjänster. | Ändring i datamodell påverkar hela databasen |
| Interagerar med andra mikrotjänster genom att använda väldefinierade gränssnitt | ej tillämplig |
| Microservices arbetar efter principen som fokuserar på produkter, inte projekt | Lägg tonvikt på hela projektet |
| Inga korsberoende mellan kodbaser. Du kan använda olika tekniker för olika mikrotjänster. | En funktion eller ett program beror på andra. |
Microservice utmaningar
- MicroServices förlitar sig på varandra och de kommer att behöva kommunicera med varandra.
- Jämfört med monolitiska system finns det fler tjänster att övervaka som utvecklas med olika programmeringsspråk.
- Eftersom det är ett distribuerat system är det en i sig komplex modell.
- Olika tjänster kommer att ha sin separata mekanism, vilket resulterar i en stor mängd minne för ostrukturerad data.
- Effektiv ledning och lagarbete krävs för att förhindra kaskadproblem
- Att återskapa ett problem kommer att vara en svår uppgift när det är borta i en version och kommer tillbaka i den senaste versionen.
- Oberoende distribution är komplicerat med Microservices.
- Microservice-arkitektur medför massor av operationer.
- Det är svårt att hantera applikationen när nya tjänster läggs till i systemet
- Ett brett utbud av skickliga yrkesmän krävs för att stödja heterogent distribuerade mikrotjänster
- Mikroservice är kostsamt, eftersom du behöver underhålla olika serverutrymmen för olika affärsuppgifter.
SOA vs Microservices
SOA-tjänster underhålls i organisationen av ett register som fungerar som en kataloglista. Applikationer måste slå upp tjänsterna i registret och anropa tjänsten.
I en annan värld, SOA är precis som en orkester där varje artist uppträder med sitt instrument medan musikledaren ger instruktioner till alla.
Å andra sidan är Microservices en form av tjänsteorienterad arkitekturstil där applikationer byggs som en samling av olika mindre tjänster istället för en mjukvara eller applikation.
Microservices är precis som en trupp där varje dansare är oberoende och vet vad de behöver göra. Så om de missar några steg vet de hur de ska komma tillbaka till rätt sekvens. Låt oss nu i denna Microservices-arkitekturhandledning lära oss om skillnaden mellan SOA och Microservices.
Här är en detaljerad jämförelse mellan SOA och Microservices
| Parameter | SOA | Microservices |
|---|---|---|
| Designtyp | I SOA exponeras mjukvarukomponenter mot omvärlden för användning i form av tjänster. | Micro Service är en del av SOA. Det är en implementering av SOA. |
| Dependency | Affärsenheter är beroende. | De är oberoende av varandra. |
| Programvarans storlek | Programstorleken är större än någon konventionell programvara | Storleken på programvaran är alltid liten i Microservices |
| Teknikstack | Teknikstacken är lägre jämfört med Microservice. | Microservice-teknologistack kan vara mycket stor |
| Applikationens art | Monolitisk till sin natur | Full stack i naturen |
| Självständig och fokuserad | SOA-applikationer är byggda för att utföra flera affärsuppgifter. | De är byggda för att utföra en enda affärsuppgift. |
| konfiguration | Implementeringsprocessen är tidskrävande. | Implementeringen är enkel och mindre tidskrävande. |
| Kostnadseffektivitet | Mer kostnadseffektivt. | Less kostnadseffektiv. |
| Skalbarhet | Less jämfört med Microservices. | Mycket skalbar. |
| Företagslogik | Affärslogikkomponenter lagras inuti en enskild tjänstedomän Enkla trådprotokoll (HTTP med XML JSON) API drivs med SDK:er/klienter | Affärslogik kan leva över domäner, företagstjänstbussliknande lager mellan tjänster, Middleware |
Verktyg för mikrotjänster
1) Wiremock: Testa mikrotjänster
WireMock är ett flexibelt bibliotek för att stubba och håna webbtjänster. Den kan konfigurera svaret som returneras av HTTP API när det tar emot en specifik begäran. Det används också för att testa mikrotjänster.
Ladda länk:http://wiremock.org/
2) Hamnarbetare
Docker är ett projekt med öppen källkod som låter oss skapa, distribuera och köra applikationer genom att använda behållare. Genom att använda dessa behållare kan utvecklare köra en applikation som ett enda paket. Det låter dig skicka bibliotek och andra beroenden i ett paket.
Ladda länk:https://www.docker.com/
3) Hystrix
Hystrix är ett feltolerant java-bibliotek. Det här verktyget är utformat för att separera åtkomstpunkter till fjärrtjänster, system och tredjepartsbibliotek i en distribuerad miljö som Microservices. Det förbättrar det övergripande systemet genom att isolera de misslyckade tjänsterna och förhindra kaskadeffekten av fel.
Nedladdningslänk:https://github.com/Netflix/Hystrix
Bästa praxis för mikrotjänster Architecture
- Separat datalager för varje mikrotjänst
- Behåll kod med liknande mognadsnivå.
- Separat build för varje mikrotjänst.
- Behandla alltid – allvarlig som statslös.
Sammanfattning
- Microservices är ett tjänsteorienterat arkitekturmönster där applikationer byggs som en samling av olika minsta oberoende tjänsteenheter.
- Mikrotjänst Architecture är en arkitektonisk utvecklingsstil som gör det möjligt att bygga en applikation som en samling små autonoma tjänster utvecklade för en affärsdomän.
- Monolitisk arkitektur är som en stor behållare där alla programvarukomponenter i en applikation är klubbade i ett enda paket
- I en mikrotjänst bör varje enhet i hela applikationen vara den minsta, och den ska kunna leverera ett specifikt affärsmål
- I monolitisk arkitektur kan stor kodbas sakta ner hela utvecklingsprocessen. Nya releaser kan ta månader. Kod underhåll är svårt
- Två typer av mikrotjänster är 1) Stateless 2) Stateful
- Mikrotjänster i Java lita på varandra, och de kommer att behöva kommunicera med varandra. Hjälper dig att betona en specifik funktion och affärsbehov
- Serviceorienterad arkitektur, kort känd som SOA, är en utveckling av distribuerad datoranvändning baserad på designmodellen för begäran eller svar för synkrona och asynkrona applikationer
- I SOA exponeras mjukvarukomponenter för den yttre världen för användning i form av tjänster medan Micro Service är en del av SOA. Det är en implementering av SOA
- Wiremock, Docker och Hystrix är några populära Microservices-verktyg
