Microservices-tutorial: wat is, Architectie en voorbeeld

Wat zijn microservices?

Microservices is een service-georiënteerd architectuurpatroon waarbij applicaties worden gebouwd als een verzameling van verschillende kleinste onafhankelijke service-eenheden. Het is een software engineering benadering die zich richt op het ontleden van een applicatie in modules met één functie en goed gedefinieerde interfaces. Deze modules kunnen onafhankelijk worden geïmplementeerd en bediend door kleine teams die eigenaar zijn van de volledige levenscyclus van de service.

De term ‘micro’ verwijst naar de omvang van een microservice die beheersbaar moet zijn door één enkel ontwikkelteam (5 tot 10 ontwikkelaars). In deze methodologie worden grote applicaties opgedeeld in kleinste onafhankelijke eenheden.

Wat is monolithisch Archistructuur?

Simpel gezegd kun je zeggen dat monolithische architectuur een grote container is waarin alle softwarecomponenten van een applicatie in één pakket zijn samengevoegd.

Laten we een voorbeeld van een e-commercewinkel bespreken in de context van een monolithische architectuur.

monolitisch Architectuur
monolitisch Archistructuur van e-commerce-applicatie

In elke e-commercetoepassing zijn er enkele standaardfuncties zoals Zoeken, Revoverzicht & beoordelingen en betalingen. Deze functies zijn toegankelijk voor klanten via hun browser of apps. Wanneer de ontwikkelaar van de e-commercesite de applicatie implementeert, is het één monolithische eenheid. De code voor verschillende functies zoals Zoeken, Review & Ratings en Betalingen bevinden zich op dezelfde server. Om de applicatie te schalen, moet u meerdere exemplaren (servers) van deze applicaties uitvoeren.

Wat is Microservice Archistructuur?

Microservice Architectuur is een architecturale ontwikkelingsstijl die het mogelijk maakt om applicaties te bouwen als een verzameling kleine autonome services die zijn ontwikkeld voor een bedrijfsdomein. Het is een variant van de structurele stijlarchitectuur die helpt om applicaties te ordenen als een losjes gekoppelde servicecollectie. De Microservice Architecture bevat fijnmazige services en lichtgewicht protocollen.

Laten we een voorbeeld nemen van een e-commerce-applicatie die is ontwikkeld met microservicearchitectuur. In dit voorbeeld van microservicearchitectuur is elke microservice gericht op één bedrijfsmogelijkheid. Zoeken, beoordelen en Review en Payment hebben elk hun instance (server) en communiceren met elkaar.

Microservices Architectuur
Microservices Architectuur

In het Monolithicum Archistructuur komen alle componenten samen in één module. Maar in microservices Archistructuur zijn ze verspreid in individuele modules (microservice) die met elkaar communiceren, zoals weergegeven in het bovenstaande Microservices-voorbeeld.

De communicatie tussen microservices is een staatloze communicatie waarbij elk paar verzoeken en antwoorden onafhankelijk is. Daarom kunnen Microservices moeiteloos communiceren. In de Microservice Archituur, de gegevens zijn federatief. Elke Microservice heeft zijn afzonderlijke gegevensopslag. Volgende hierin Java Microservices-zelfstudie: we leren over het verschil tussen microservices en monolithische architectuur.

Microservices versus monolithisch Architectuur

Microservices monolitisch Architectuur
Elke eenheid van de gehele applicatie moet de kleinste zijn en één specifiek bedrijfsdoel moeten kunnen verwezenlijken. Eén enkele codebasis voor alle bedrijfsdoelen
Het opstarten van de service gaat relatief snel Het opstarten van de service kost meer tijd
Foutisolatie is eenvoudig. Zelfs als één dienst uitvalt, kunnen andere blijven functioneren. Foutisolatie is lastig. Als een specifieke functie niet werkt, gaat het hele systeem down. Om dit probleem op te lossen, moet de applicatie opnieuw worden gebouwd, opnieuw worden getest en opnieuw worden geïmplementeerd.
Alle microservices moeten losjes aan elkaar gekoppeld zijn, zodat wijzigingen in de ene microservice geen invloed hebben op de andere. Monolithische architectuur is nauw gekoppeld. Veranderingen in de ene module van de code hebben invloed op de andere
Bedrijven kunnen meer middelen inzetten voor diensten die een hogere ROI genereren Omdat diensten niet geïsoleerd zijn, is individuele toewijzing van middelen niet mogelijk
Er kunnen meer hardwarebronnen worden toegewezen aan de dienst die vaak wordt gebruikt. In het e-commercevoorbeeld hierboven controleren meer gebruikers de productvermelding en zoekopdrachten dan bij betalingen. Er kunnen dus meer middelen worden toegewezen aan de microservice voor zoeken en productvermeldingen. Het opschalen van applicaties is zowel uitdagend als verspillend.
Microservices blijft altijd consistent en continu beschikbaar. Ontwikkeltools raken overbelast omdat het proces helemaal opnieuw moet beginnen.
Gegevens zijn federatief. Hierdoor kan individuele Microservice een datamodel gebruiken dat het beste bij zijn behoeften past. Gegevens zijn gecentraliseerd.
Kleine, gefocuste teams. Parallelle en snellere ontwikkeling Er zijn een groot team en aanzienlijke teammanagementinspanningen vereist
Wijziging in het datamodel van de ene Microservice heeft geen invloed op andere Microservices. Verandering in het datamodel heeft invloed op de gehele database
Werkt samen met andere microservices door gebruik te maken van goed gedefinieerde interfaces Niet van toepassing
Microservices werken volgens het principe dat zich richt op producten, niet op projecten Leg de nadruk op het hele project
Geen onderlinge afhankelijkheden tussen codebases. U kunt verschillende technologieën gebruiken voor verschillende Microservices. Eén functie of programma is afhankelijk van andere.

Microservice-uitdagingen

  • MicroServices zijn van elkaar afhankelijk en zullen met elkaar moeten communiceren.
  • Vergeleken met monolithische systemen zijn er meer services om te monitoren, die met behulp van verschillende services zijn ontwikkeld programmeertalen.
  • Omdat het een gedistribueerd systeem is, is het een inherent complex model.
  • Verschillende services zullen hun eigen mechanisme hebben, wat resulteert in een grote hoeveelheid geheugen voor ongestructureerde gegevens.
  • Effectief management en teamwerk zijn nodig om een ​​opeenstapeling van problemen te voorkomen
  • Het reproduceren van een probleem zal een moeilijke taak zijn als het in één versie verdwenen is, en terugkomt in de nieuwste versie.
  • Onafhankelijke implementatie is ingewikkeld met Microservices.
  • Microservicesarchitectuur brengt veel operationele overhead met zich mee.
  • Het is moeilijk om applicaties te beheren wanneer nieuwe services aan het systeem worden toegevoegd
  • Er is een breed scala aan vaardige professionals nodig om heterogeen verspreide microservices te ondersteunen
  • Microservice is kostbaar, omdat u verschillende serverruimte nodig heeft voor verschillende bedrijfstaken.

SOA versus microservices

SOA-diensten worden in de organisatie onderhouden door een register dat fungeert als directorylijst. Toepassingen moeten de services in het register opzoeken en de service aanroepen.

In een andere wereld, SOA is net als een orkest waarbij elke artiest optreedt met zijn/haar instrument terwijl de muziekdirecteur iedereen instructies geeft.

Microservices zijn een vorm van servicegerichte architectuur waarbij applicaties worden gebouwd als een verzameling van verschillende, kleinere services in plaats van één softwareprogramma of applicatie.

Microservices is net als een gezelschap waarbij elke danser onafhankelijk is en weet wat hij moet doen. Dus als ze een paar stappen missen, weten ze hoe ze weer in de juiste volgorde kunnen komen. In deze tutorial over Microservices-architectuur leren we over het verschil tussen SOA en Microservices.

Hier is een gedetailleerde vergelijking tussen SOA en Microservices

Parameter SOA Microservices
Ontwerptype Bij SOA worden softwarecomponenten blootgesteld aan de buitenwereld voor gebruik in de vorm van services. MicroService is een onderdeel van SOA. Het is een implementatie van SOA.
Afhankelijkheid Bedrijfseenheden zijn afhankelijk. Ze zijn onafhankelijk van elkaar.
Grootte van de software De softwaregrootte is groter dan welke conventionele software dan ook De omvang van de Software is bij Microservices altijd klein
Technologie stapel De technologiestapel is lager vergeleken met Microservice. De microservice-technologiestack kan erg groot zijn
Aard van de aanvraag Monolithisch van aard Volledige stapel in de natuur
Onafhankelijk en gefocust SOA-applicaties zijn gebouwd om meerdere zakelijke taken uit te voeren. Ze zijn gebouwd om één enkele zakelijke taak uit te voeren.
Deployment Het implementatieproces is tijdrovend. De implementatie is eenvoudig en minder tijdrovend.
Kosten efficiëntie Kosteneffectiever. Less kostenefficiënt.
Schaalbaarheid Less vergeleken met microservices. Zeer schaalbaar.
Bedrijfslogica Bedrijfslogicacomponenten worden opgeslagen in een enkel servicedomein Eenvoudige draadprotocollen (HTTP met XML JSON) API wordt aangestuurd met SDK's/clients Bedrijfslogica kan over domeinen van Enterprise Service Bus heen leven, zoals lagen tussen services Middleware

Hulpmiddelen voor microservices

1) Wiremock: microservices testen

WireMock is een flexibele bibliotheek voor het stubben en spotten van webservices. Het kan het antwoord configureren dat door de HTTP API wordt geretourneerd wanneer het een specifiek verzoek ontvangt. Het wordt ook gebruikt voor het testen van Microservices.

Download link:http://wiremock.org/

2) Dokwerker

Docker is een open source-project waarmee we applicaties kunnen maken, implementeren en uitvoeren met behulp van containers. Door deze containers te gebruiken, kunnen ontwikkelaars een applicatie als één pakket uitvoeren. Hiermee kunt u bibliotheken en andere afhankelijkheden in één pakket verzenden.

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

3) Hystrix

Hystrix is ​​een Java-bibliotheek met fouttolerantie. Deze tool is ontworpen om toegangspunten tot externe services, systemen en bibliotheken van derden te scheiden in een gedistribueerde omgeving zoals Microservices. Het verbetert het algehele systeem door de falende services te isoleren en het trapsgewijze effect van storingen te voorkomen.

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

Best practices van microservices Architectuur

  • Aparte dataopslag voor elke Microservice
  • Houd code van een vergelijkbaar volwassenheidsniveau.
  • Afzonderlijke build voor elke Micro-service.
  • Behandel – ernstig altijd als staatloos.

Samenvatting

  • Microservices zijn een servicegerichte architectuur waarbij applicaties worden gebouwd als een verzameling van verschillende, kleinste, onafhankelijke service-eenheden.
  • Microservice ArchiTecture is een architecturale ontwikkelstijl waarmee een applicatie kan worden gebouwd als een verzameling kleine autonome services die zijn ontwikkeld voor een bedrijfsdomein.
  • Monolithische architectuur is als een grote container waarin alle softwarecomponenten van een applicatie in één pakket zijn samengevoegd
  • In een Microservice moet elke eenheid van de gehele applicatie de kleinste zijn en één specifiek bedrijfsdoel moeten kunnen realiseren
  • In monolithische architectuur kan een grote codebase het hele ontwikkelingsproces vertragen. Nieuwe releases kunnen maanden duren. Codeonderhoud is moeilijk
  • Er zijn twee typen microservices: 1) staatloos en 2) stateful
  • Microservices in Java zijn op elkaar aangewezen en zullen met elkaar moeten communiceren. Helpt u de nadruk te leggen op een specifieke functie en zakelijke behoeften
  • Servicegerichte architectuur, kortweg SOA genoemd, is een evolutie van gedistribueerd computergebruik op basis van het aanvraag- of antwoordontwerpmodel voor synchrone en asynchrone toepassingen.
  • Bij SOA worden softwarecomponenten blootgesteld aan de buitenwereld voor gebruik in de vorm van services, terwijl Micro Service een onderdeel is van SOA. Het is een implementatie van SOA
  • Wiremock, Docker en Hystrix zijn enkele populaire microservices-tools