Een microservice: Hoe kleiner delen van grotere toepassingen kan een remake van HET

0
167

Nul

martin-fowler-oreilly-conference-2015.jpg

Martin Fowler.

(Afbeelding: O ‘ Reilly OSCON 2015)

“Als je probeert na te denken over uw software systeem, en wat de architectuur is,” aldus Martin Fowler, de software design consultant gecrediteerd met het creëren van de meerderheid van de microservices ideaal, “het eerste wat je hoeft te doen is erachter te komen ‘Wat is belangrijk? Wat doen we, als de technische leiding van een project, beschouwen als de meest belangrijke dingen in? . . . Wat is het ding in de basis code die ik moet blijven op de top van mijn hoofd als ik aan?'”

Fowler, spreken een O ‘ reilly conferentie in 2015, was het definiëren van de “architectuur” een deel van “microservices architectuur” in een poging om het makkelijker te maken voor zichzelf te definiëren, het voorste deel van die zin. Zelfs voor zijn schepper, dat is nog steeds het vaste deel.

Wat is top-of-mind voor microservices architecten?

Er zijn tal van interpretaties van microservices, net zoals er zijn veel aanwijzingen dat het “impressionisme” kunnen nemen in de schilderkunst. Wat deze interpretaties gemeen hebben, is een begrip van de software, zoals verwisselbare onderdelen in plaats gemonteerd gehelen. Als je te accepteren zoals ze begrijpen zelf, in een vorm die het zou kunnen aannemen, zou je jezelf het denken in één van de volgende manieren:

Plaats blijven voor het bouwen van uw IT-functies als kolossale toepassingen die u moet upgraden om de paar jaar in enorme, exodus-zoals omwentelingen (groot genoeg om te rechtvaardigen dat uw inspanning, klein genoeg om te blijven haalbaar is), denk je dat van uw bedrijf software in termen van gedemonteerde onderdelen. Een klein team dat verantwoordelijk kan zijn voor de instandhouding, het onderhoud en de evolutie van één of meer onderdelen. De productie cyclus voor het upgraden of, indien noodzakelijk, het vervangen van elk deel kan veel korter en makkelijker te versnellen. Toch is de evolutie van de applicatie die zij vormen samen eigenlijk kan doorgaan in hetzelfde tempo — niet noodzakelijk sneller, alleen in kleinere stappen die haalbaar zijn met minder inspanning, en (hopelijk) minder kosten.

Waarom nog moeite met microservices?

De voordelen van microservices architectuur zijn niet duidelijk. Heeft u misschien een familielid die heeft de vraag naar de mogelijkheid, middelen of tijd om te bouwen van een hele landschap van Lego, en alsjeblieft, oh please, zal u niet laten haar? Naast het hebben van plezier, zijn er andere voordelen te microservices in de echte wereld, de “productie” HET milieu, misschien wel je eigen? Voor nu, het antwoord is simpel: als het antwoord op het pleidooi voor een miljard Lego — klinkt als een ouder stalling haar kind voor de tijd: “Misschien wel. We zullen zien.”

Ook: 8 manieren om te zorgen dat je echt nodig hebt microservices

De reden microservices architectuur moet voor u van belang hoe dan ook, zelfs als je niet een software ontwikkelaar of IT-exploitant, is omdat het zich bevindt in het epicentrum van de belangrijkste mondiale debat invloed zijn op de IT-afdelingen van vandaag: Wat is de meest kosten-efficiënte en praktische manier voor een organisatie om het implementeren van de applicaties aan de gebruikers?

Je hebt gezien waar deze discussie begonnen. Weet u hoe de public cloud-infrastructuur werkt, althans over het algemeen. U kan hebben gehuurd een virtuele server jezelf van een public cloud provider zoals Microsoft, Amazon of Google. Dat kan praktisch zijn voor het runnen van een website op een Apache of NGINX server is geïnstalleerd op een virtuele machine (VM). Maar als het je taak bestaat uit het beheren van een software platform voor uw productie, ontwerp, onderzoek, of de marketing divisie, weet je het moet meer dan één processor. Leasing als vele op VMs als u nodig hebt processors, is niet kosten-effectief is.

Containervervoer biedt een oplossing voor dit dilemma, maar heb je gezien dat ook al. Je weet dat het haalbaar is om een remake van een toepassing, zodat het wordt uitgevoerd op een cluster van servers. En u wellicht bekend is, of net geleerd over, serverloze implementatie modellen. Serverloze maakt het mogelijk voor uw organisatie om te betalen voor de dienst, wordt uw applicatie biedt, in plaats van de infrastructuur die dat ondersteunt.

Maar op een gegeven moment naar beneden de weg, vandaag of drie jaar vanaf nu zal het komen de tijd voor uw organisatie bij het ontwerpen van nieuwe en zeer functionele applicaties die specifiek zijn voor, en waarschijnlijk in deze nieuwe bedrijfsmodellen. Wat is de design pattern dat toepassing moet nemen, en moet uw IT-werknemers worden getraind in het werken met het nu?

Microservices architectuur kan niet helemaal worden het volledige antwoord gewoon nog niet. Maar het is de vraag al van de juiste vragen, op het juiste moment.

Wat doet een microservice doen?

Software-ontwikkeling onderwerpen zijn vaak abstract, waardoor het moeilijk te verkopen aan een breed publiek, zonder eerst te smeden van een aantrekkelijke metafoor. Een populair boek over microservices architectuur van een grote uitgever behandeld lezers om een 62-pagina prelude voor het naderen van de eenvoudige vraag wat een microservice is. En dan, het boek ging met bijna een verontschuldiging voor waarom het zo moeilijk uit te leggen.

Plaats van excuses hier, let ‘ s give it a shot.

Doe één ding goed

Stel, u heeft een e-commerce toepassing. Een functie binnen die toepassing zou kunnen zijn om te onderzoeken of de items in een door de klant winkelwagen, en hun profiel bijwerken met de huidige prijzen en de verzending van gegevens, vooral voor klanten die hebben de neiging om voorraad items in hun karren en aankopen doen wanneer ze daar zin in heeft. Een update routine, zoals deze zou waarschijnlijk al zijn uitgedrukt als een herbruikbare code module.

Een microservice voert de functie van deze herbruikbare module kan een apart programma, geschreven in dezelfde taal als de rest van de toepassing of een compleet ander. Het is niet samengesteld als onderdeel van de toepassing, noch is geïnstalleerd op dezelfde server of een virtuele machine. In plaats daarvan wordt gehandhaafd als een aparte eenheid (voor Dokwerker, een aparte container) en geactiveerd door middel van een aantal netwerk-aangedreven mechanisme, zoals gewone HTTP -.

Ook: Hoe plan een microservice uitvoering TechRepublic

Deze weg, de microservice wordt het een soort van patroon voor de functionaliteit. De orchestrator kan niet bellen, zelfs één exemplaar van dit patroon bestaan totdat het is absoluut niet nodig, hoewel een dergelijke strategie kan latency te introduceren. Bij voorkeur een standaard aantal exemplaren instellen om te gaan op de vraag. Wanneer de vraag van de gebruiker niveau uitstijgt boven een bepaald niveau, de orchestrator kunnen kiezen voor het repliceren van de microservices, roept veel meer exemplaren.

In de richting van een meer inhoudelijke definitie voor microservices

Dat is de onofficiële, tech journalist definitie van “microservices.” De meest vertrouwde formele definitie onder software-ontwikkelaars eigenlijk staten, heel expliciet, dat het moet niet worden beschouwd als een formele definitie. Martin Fowler en James Lewis geavanceerde het idee dat microservices:

Vertegenwoordigen van bedrijfsprocessen individueel bedoeld Zijn om samen als een suite Zijn ontworpen om te worden geïmplementeerd automaticallyCommunicate met elkaar met een “lichtgewicht mechanisme” zoals HTTP voor synchrone bewerkingen (in volgorde), of een redelijk lichtgewicht bericht in de wachtrij, zoals APMQ voor asynchrone bewerkingen (dat kan in parallel) niet noodzakelijkerwijs gebruik maken van dezelfde programmeertaal of kaders met elkaar, om samen te werken

Josh Evans was een senior engineer met Netflix, de organisatie die een pionier was in het ontwerp en de uitvoering van microservices in de productie. Als een getuige van de geboorte van het model, en nu senior director van data service engineering op GitHub, Evans aangeboden een aantal extra elementen aan Fowler en Lewis’ model, tijdens een presentatie aan een ontwikkelaars-conferentie eind 2016:

Een microservice vereist een minimale, en bij voorkeur niet, de coördinatie met andere code onderdelen volledig functioneel zijn. Dat is, het moet zelf rijden, in staat is te bepalen doel het moment dat deze is geïmplementeerd (“gemaakt”). In plaats repliceren van een volledige server macht toevoegen aan een toepassing, een orchestrator moet in staat zijn om het instantiëren van zoveel exemplaren van een microservice als de applicatie kan vereisen (“scaling out”). Wat meer is, het aantal gelijktijdig actieve exemplaren van dezelfde microservice kan verschillende functies hebben, afhankelijk van de gegevens die ze kregen of wees, of de databases waarmee ze zijn verbonden. Als kleine handleiding toezicht moet worden geïnvesteerd in microservices omgevingen mogelijk, vooral omdat de orchestrator kan worden gegeven vrijheden waarop schaal exemplaren en waar, wat resulteert in een systeem waarvan de vorm en omvang op elk moment kan worden wat onbekend voor de menselijke waarnemers.

Ook: Microservices en containers in dienst netten betekenen dat er minder chaos

josh-evans-netflix-qcon-sf-2016.jpg
(Afbeelding: De QCon San Francisco 2016)

“Gaat terug op het thema van de biologie, kunt u denken aan microservices als organen in een orgaan systeem,” aldus Evans. “Deze systemen vormen samen het totale organisme” Te helpen om zijn punt te maken, liet hij zijn publiek een geanimeerde afbeelding van Netflix’ microservices organisme, waarin het bedrijf eerder en meer conventioneel design, maar was in wezen ontworpen vanaf de grond opgebouwd voor microservices. Een service proxy fungeert als voordeur voor de toepassing. Het verzendt aanvragen door middel van een routing laag (die Netflix oproepen “Zuul”) die niet alleen het plannen van een enkele bestemming voor de aanvraag, maar de gehele keten van diensten die nodig zijn om dat verzoek te voldoen. De routing laag weet welke diensten en in welke volgorde, zal voldoen aan de vraag, en niet elke aanvraag moet via de volledige diepte van het systeem.

netflix-microservices-diagram.jpg
(Afbeelding: Josh Evans, Netflix)

De twist in het midden van het schema, als een mot te hebben rondgezworven in een spinnenweb, vertegenwoordigt de API — de gemeenschappelijke component met die communicatie plaatsvindt. Let op de microservices niet hebben elk hun eigen Api ‘ s; in plaats daarvan vertrouwen ze op een andere service te bieden communicatie.

Dit is wat een opzettelijke microservices architectuur eruit ziet. Het lijkt te zijn onder de verschillende types van esoterics met die software-ontwikkelaars en politieke filosofen houden van te spelen. Maar hier is de reden waarom al deze zaken: Wanneer een organisatie zich committeert aan een volledige microservices architectuur voor haar, als Netflix heeft, het niet meer bouwt haar toepassing in versie of een gefaseerde releases of semi-jaarlijkse updates. Het evolueert meer continu, biologisch, en in Netflix’ geval in het bijzonder, meer gemakkelijk.

Ook: Microservices en de invasie van de identiteit van entiteiten

Misschien geen ander bedrijf in de wereld heeft het mandaat van Netflix: Te leveren miljoenen gelijktijdige, high-definition, high-fidelity video stromen door middel van de meest wispelturige systeem de mensheid ooit heeft bedacht, het internet. Dus Netflix ervaringen gewoon niet zal zich vertalen in de meeste organisaties, tenzij ze zou zorgen om de overgang weg van, zeg, financiële diensten of de farmaceutische sector en in streaming media levering. Netflix’ ontwikkeling patronen mogen alleen maar van toepassing zijn op Netflix.

Maar in het zoeken naar gemeenschappelijkheid — voor een fragment van de Netflix-ervaring die van toepassing zijn op ondernemingen in groot-er zijn er bepaalde aspecten van de meer complexe, meer formele definitie van microservices dat lijken minder esoterische en meer fundamenteel:

Distributie

In een gedistribueerde software architectuur omvat een aantal servers, of zelfs platformen, tegelijkertijd, de locatie van een functie wordt genoteerd met een soort van het adres, dat kan worden opgelost door middel van een netwerk. Een web service, die je misschien kent, is een dienst die gebruik maakt van HTTP voor het oplossen van dat adres. Een microservice is een fase verder in de trein van de evolutie. Door het ontwerp, het is niet verbonden met de andere herbruikbare componenten het gebruik van (“consumeren” in sommige ontwikkelaars’ lingo) in hetzelfde lichaam van de code. Dus het contact met de andere componenten in het netwerk of in het domein (die, als ze zijn ontworpen zoals de bedoeling is, zal ook worden microservices) met gebruik van dezelfde methode.

Vindbaarheid

Wat meer is, elke microservice in staat moeten zijn zich te herkennen door het proces dat verantwoordelijk is voor het coördineren, plannen en/of het orkestreren van microservices. Door op “detecteerbaar” bedoel ik dat de orchestrator is een middel beschikbaar om het op te lossen op de locatie van een gevraagde microservice en om contact te maken met het. In het verleden moesten de diensten van de vaste locaties en met HTTP-adressen wees naar hen. Vandaag de dag, de vaste bedrading van een dienst naar een adres dat werkt tegen het hele principe van gedistribueerde services. Dus nu, een orchestrator zoals Kubernetes kunnen gebruik maken van een reverse proxy zoals NGINX aan het oplossen van de huidige verblijfplaats van een dienst die is overal in het netwerk, gegeven een meer algemene identifier zoals het HTTP-adres (URI) van de oorsprong van dat onderdeel in de gegevensopslagruimte die oorspronkelijk gedistribueerd. Hier, NGINX nog onderhandelt met een domain name service (DNS) om omhoog te kijken, dat de huidige locatie, maar op deze manier, kan het koppelen van een bekend onderdeel met behulp van een permanente identificatie, met een tijdelijke of kortstondige adres dat zal waarschijnlijk veranderen in een paar seconden tijd.

Ook: Netflix ‘smart ‘ downloads’ in de wachtrij uw volgende offline aflevering CNET

Dit is het service discovery principe — de garantie dat uw programma kan vinden iets dat beweegt een stuk.

Onafhankelijkheid

Wordt gevonden door service discovery maakt een microservice te worden losgekoppeld van de toepassingen, en daarom onafhankelijk beheersbaar. Herbruikbaarheid door incorporatie is niet helemaal nieuw voor code; moderne toepassingen in Windows, Mac OS X of Linux desktop onmogelijk zou zijn zonder. Maar ontkoppeling maakt het mogelijk voor de bindingen tussen de zelfstandige onderdelen van de code in kaart gebracht worden net vóór de code daadwerkelijk wordt uitgevoerd, is geheel verschillend van het concept waarmee we allemaal te maken vandaag, van “installeren” toepassingen in systemen.

Fathoming een overgang naar microservices

Een microservice is om te functioneren als een heel ander soort programma dan een toepassing. In de vroege dagen van de informatica, software is een product dat u zou kunnen shrink-wrap in een doos vol schijven en leg op een plank met een prijskaartje. In die dagen, werd een aanvraag voor een categorie van programma met een veelheid van met elkaar samenhangende functies — een tekstverwerker, een business process modeler, een presentatie-graphics toolset.

SOA is oorspronkelijk gemaakt voor het vergemakkelijken van de software equivalent met een dergelijk doel gebouwde componenten — dingen met een functie, die zichzelf aanpassen aan elke omstandigheid binnen een bepaald bereik. Microservices is inderdaad een vorm van SOA (hoewel sommigen zullen zelfs niet eens met dat). De “micro-deel op rekening van een vroege poging te stellen voor elke van deze onderdelen mensen als mieren in een kolonie. Het hielp mensen het visualiseren van het concept beter als de metafoor vergelijken met deze onderdelen om iets te klein. In de praktijk, echter, is er geen grootte beperking om een microservice. Misschien denk je dat het tegen het hele punt om een grote microservice, en je zou een aantal prominente architecten akkoord met u.

Het is object-georiënteerd programmeren, in het bijzonder door middel van de C++ programmeertaal, die voor het eerst gebracht SOA in bekendheid jaar voor Java. Een organisatie erkend als een autoriteit op SOA, de Open Groep definieert een “dienst” in deze context als “een logische weergave van een herhaalbare business activiteiten die hebben een bepaalde uitkomst.” Merk op hoe zorgvuldig deze definitie werd gemaakt: het is niet de activiteit zelf, dat de dienst oplevert, maar de vertegenwoordiging van de code. Op deze manier, een andere representatie met behulp van een andere code zou worden — terecht — een aparte dienst.

De recepten zijn gemaakt om herhaalbare: Monteer de exacte verhouding van de ingrediënten, het bereiden ze en combineer ze in een bepaalde volgorde, en u bent zeker om te reproduceren wat de chef-kok met de hand in het achterhoofd. Herhaalbare code is een ander beest. Het hangt af van elementen kan veranderen of het omleiden van het werkproces, zoals:

Variabelen staat het veranderen van de opzet van de voorschriften; Een database waarvan de inhoud vertegenwoordigen, onder andere, de staat van het werk van het product (bijv., het huis dat gebouwd wordt, de auto wordt ontworpen, de scheepvaart routes die worden uitgezet);Ontkoppeling van het herhaalde code is van de context van de code roept, of geeft de controle aan, ervoor te zorgen dat de functie die zij vervult kan worden uitgevoerd, misschien op een andere manier, op iets anders.

In de praktijk, functionele onafhankelijkheid is het moeilijkste aspect van de microservices ideaal te bereiken. Het bedenken van een onafhankelijk onderdeel dat, met minimale instructie, in wezen kan voeden zich van zijn eigen doel, het uitvoeren van een taak op grond van dat doel feilloos, en vervolgens te beëindigen zelf. Een dergelijke component zou relatief eenvoudig te automatiseren, in de context van een systeem om de andere component gewerkt op precies dezelfde manier.

Ook: op Deze site maken het surfen op Netflix eenvoudig weer CNET

Denk aan een robot wiens enige doel is te hameren op een spijker. Geef je de hoek van de armatuur, de lengte van de nagel, het percentage van de lengte uitstrekt boven de basis-raad, en het relatieve niveau van de grondplaat waar het kan hameren. Hij leert haar operationele voorwaarden bij de “geboorte”. Het voert zijn eigen functie, en stopt dan.

Een functionele montage van dergelijke robots zou net als de meeste iedere sci-fi film ooit gemaakt: opkloppen van u weg naar een utopische wereld van de toekomstige sociale orders, zonder betaling van een geest in de doubtful waarschijnlijkheid van de volgorde van de gebeurtenissen, die een dergelijke order over. Misschien is dat niet belangrijk is voor een film, maar geen enkel bedrijf heeft ooit met succes gewijzigd haar operationele beginselen zonder een plan.

Elke technologie sinds de eerste upgrade naar het wiel heeft die nodig zijn begonnen met het plannen van een periode van overgang. Geen enkele organisatie is in staat zal zijn om het aannemen van een microservices-georiënteerde strategie zonder tekenen van een cursus voor hoe de IT-afdelingen — zowel de code en de mensen — kan de methodologische transitie van de plek waar ze nu zijn.

Wat microservices zou veranderen

Als een enterprise software platform beweert te schakelen microservices, de opdracht moet zijn om te maximaliseren van het bedrag van de hefboom die kan worden verkregen door het hergebruik en verspreiding van kleine stukken code. Het maken van deze modules functionele als ze eventueel kunnen worden, rechtstreeks van invloed zijn op drie onderdelen van HET bredere ecosysteem:

De werkpatronen van de ontwikkelaars van de software, waardoor ze sneller bouwen modules en toepassingen die gebruik maken van het werk dat zij en anderen hebben het al gedaan;De strategieën voor het beheer van operators, die kunnen nu services te implementeren op meerdere platforms, terwijl het houden van geïntegreerde toepassingen tussen deze platforms, het maximaliseren van de bezettingsgraad en het is denkbaar dat het rijden van echte, fysieke kosten-met inbegrip van de koeling.De economische voordelen van cloud-gebaseerde implementatie, waarmee organisaties zich richten op kleinere, meer flexibele, meer overzichtelijke facturatie onderdelen die rijden efficiëntie tijdens het rijden van de operationele kosten.

Toch is er een onderliggende veronderstelling met betrekking tot een organisatie die voor het aannemen van een microservices model, hetzij op een bedrag ineens of in fasen: Dat de ontwikkelaars en de IT-personeel in staat zal zijn te bedenken, te plannen en dan het produceren van diensten als onderdelen van de applicaties om te komen — als onderdeel van een later machine. Zet een andere manier, microservice ontwikkelaars moeten zien hun werkzaamheden onafhankelijk van de context waarin zij zou later in gebruik worden genomen.

Dit is een niet-natuurlijke manier van denken-een beetje zoals een kunstenaar het produceren van een aangewezen deel van een schilderij zonder verband met de rest van het doek. En dit is waar de microservices debat staat nu: Hoe kan een organisatie leren de mensen om abstract te denken, in dienst van een doel dat alleen verklaard kan worden abstract en gerealiseerd in het abstracte, terwijl op hetzelfde moment veelbelovende voordelen die zowel meetbaar en concreet?

Lees Meer — Van de CBS-Interactief Netwerk

Microservices en de invasie van de identiteit entiteiten door Scott M. Fulton, III, ZDNet ScaleMicroservices: eerste breken monolithisch denken, dan monolithische applicaties door Joe McKendrick, Service OrientedMicrosoft open bronnen zijn Service Stof microservices platform door Mary Jo Foley, Alles Over Microsoft

Elders

Context: Wat Doen De ‘Normale Microservices’ Eruit? [podcast] door Scott M. Fulton, III, Het Nieuwe StackContext: Hoe Zal Iedereen Veilig Microservices? [podcast] door Scott M. Fulton, III, Het Nieuwe StackHow de Vaststelling van Kubernetes Invloed CI/CD-Eisen voor DevOps Teams — interview met Laura, Frank, directeur engineering, Codeship

Verwante Onderwerpen:

Servers

Enterprise Software

Open Source

Mobiele OS

0