Per essere un microservice: Come piccole parti di grandi applicazioni potrebbe rifarlo

0
130

Zero

martin-fowler-oreilly-conference-2015.jpg

Martin Fowler.

(Immagine: O’Reilly OSCON 2015)

“Se stai cercando di pensare al vostro software di sistema, e ciò che la sua architettura è”, ha spiegato Martin Fowler, il software di progettazione consulente accreditato con la creazione di una maggioranza di microservices ideale, “la prima cosa che devi fare è capire, ‘che Cosa è importante? Che cosa facciamo noi, come la leadership tecnica di un progetto, ritengono essere le cose più importanti? . . . Qual è la cosa che nel codice di base che devo tenere in cima alla mia testa quando sto lavorando su di esso?'”

Fowler, parlando con un O’Reilly conferenza nel 2015, è stata la definizione di “architettura” parte di “microservices architettura”, nel tentativo di rendere più facile per lui per definire la parte anteriore di quella frase. Anche per il suo creatore, che è ancora la parte più difficile.

Che cos’è il top-of-mente per microservices architetti?

Ci sono numerose interpretazioni di microservices, così come ci sono molte indicazioni che “impressionismo” può prendere in pittura. Ciò che queste interpretazioni hanno in comune è la comprensione di software come parti intercambiabili piuttosto che assemblati insiemi. Se si dovesse accettare una tale comprensione di se stessi, in qualsiasi forma che si potrebbe prendere, si potrebbe trovare te stesso di pensare in uno dei seguenti modi:

Piuttosto che continuare a costruire il vostro core funziona come una colossale applicazioni che devi aggiornare ogni pochi anni un massiccio esodo-come sconvolgimenti (abbastanza grande da giustificare la fatica, abbastanza piccolo da rimanere fattibile), si pensa di software della vostra azienda in termini di parti smontate. Una piccola squadra può essere responsabile per il mantenimento, la manutenzione e l’evoluzione di una o più parti. Il ciclo di produzione per l’aggiornamento o, quando necessario, la sostituzione di ogni parte può essere molto più breve e facile per accelerare. Ma l’evoluzione della domanda essi, congiuntamente, costituiscono in realtà può procedere alla stessa velocità, non necessariamente più veloce, solo in piccoli passi sono raggiungibili con meno sforzo, e (si spera) meno costoso.

Perché nemmeno la briga con microservices?

I vantaggi di microservices architettura non sono auto-esplicative. Forse hai avuto un membro della famiglia che ha desiderato la capacità, i mezzi, o il tempo di costruire un intero paesaggio con i Lego, e per favore, oh, per favore, non lasciare che il suo? Oltre a divertirsi, ci sono altri benefici per microservices in un mondo reale, la “produzione” ambiente, forse il vostro proprio? Per ora la risposta-come la risposta all’appello per un miliardo di Legos — suona come un genitore di stallo il suo bambino per il tempo: “Forse. Staremo a vedere.”

Inoltre: 8 modi per assicurarsi che si ha realmente bisogno microservices

Il motivo microservices architettura dovrebbe essere di vostro interesse, comunque anche se non sei uno sviluppatore di software o dell’operatore, è perché risiede all’epicentro della più importante dibattito globale che interessano i reparti IT di oggi: Qual è il più conveniente e pratico per un’organizzazione per distribuire le sue applicazioni ai suoi utenti?

Hai visto dove questo dibattito è iniziato. Sapete come infrastruttura cloud pubblica funziona, almeno in generale. Si può avere affittato un server virtuale di se stessi da un public cloud provider come Microsoft, Amazon o Google. Che potrebbe essere opportuno per l’esecuzione di un sito web su un server Apache o NGINX server installato su una macchina virtuale (VM). Ma se il vostro lavoro include la gestione di una piattaforma software per la produzione, la progettazione, la ricerca, o la divisione marketing, si sa ha bisogno di più di un processore. Leasing molte Vm come avete bisogno di processori, non è costo-efficace.

Containerizzazione fornisce una soluzione a questo dilemma, ma avete visto che è già troppo. Sai che è possibile remake di un’applicazione in modo che possa essere eseguito su un cluster di server. E si potrebbe sapere, o appena imparato a conoscere, serverless modelli di distribuzione. Serverless rende fattibile per la vostra organizzazione per il pagamento del servizio l’applicazione fornisce, piuttosto che l’infrastruttura che supporta.

Ma a un certo punto lungo la strada, che sia oggi o tre anni da ora, ci sarà tempo per l’organizzazione, la progettazione di nuovi e altamente funzionale di applicazioni specificamente per, e probabilmente all’interno di questi nuovi modelli operativi. Qual è il modello di progettazione che di domanda, e dovrebbe lavoratori IT di essere addestrati a lavorare con esso in questo momento?

Microservices architettura non può essere la risposta completa. Ma è chiedere tutte le domande giuste, al momento giusto.

Che cosa fa un microservice fare?

Sviluppo Software argomenti sono spesso astratti, il che rende difficile vendere a un pubblico generico senza prima architettare un’interessante metafora. Un popolare libro sui microservices architettura di un importante editore trattati ai lettori 62-pagina preludio prima di avvicinarsi alla semplice domanda di cosa sia un microservice. E poi, il libro, si è proceduto con quasi una scusa per spiegare perché è così difficile da spiegare.

Piuttosto che chiedere scusa qui, andiamo a dare un colpo.

Fare bene una cosa

Supponiamo di avere un’applicazione di e-commerce. Una funzione all’interno di tale applicazione potrebbe essere quello di esaminare gli articoli nel carrello, e di aggiornare i propri profili, con i relativi prezzi e dati per la spedizione, soprattutto per quei clienti che tendono ad accumulare oggetti nel carrello e fare acquisti ogni volta che ne hanno voglia. Un aggiornamento di routine come questo sarebbe probabilmente già espresso in un modulo di codice riutilizzabile.

Un microservice che svolge la funzione di questo riutilizzabili modulo può essere un programma separato, scritti nella stessa lingua, come il resto dell’applicazione o uno completamente diverso. Non è compilata come parte dell’applicazione, né installato con lo stesso server o macchina virtuale. Invece, si è mantenuto come unità separata (per Mobile, un contenitore separato) e attivato attraverso la rete-meccanismo azionato, quali la manutenzione ordinaria HTTP.

Inoltre: Come pianificare una microservice attuazione TechRepublic

In questo modo, microservice diventa una sorta di modello per la funzionalità. L’orchestratore può nemmeno chiamare un esempio di questo modello in esistenza fino a che non sia assolutamente necessario, anche se una tale strategia potrebbe introdurre latenza. Preferibilmente, un numero standard di istanze sono impostati per andare on demand. Ogni volta che l’utente della domanda a livello sale oltre un certo livello, l’orchestratore può scegliere di replicare il microservices, chiamando molti di più istanze.

Verso una più sostanziale definizione per microservices

Che il non ufficiale, tech giornalista definizione di “microservices.” La più attendibile definizione formale tra gli sviluppatori di software effettivamente stati, abbastanza esplicitamente, che non deve essere trattata come una definizione formale. Martin Fowler e James Lewis avanzato l’idea che microservices:

Rappresentare i processi aziendali singolarmente Sono destinati a correre insieme come una suite, Sono progettati per essere distribuiti automaticallyCommunicate uno con l’altro, con un “leggero” meccanismo di come HTTP per operazioni sincrone (che si svolgono in sequenza), o ragionevolmente leggero coda di messaggi come APMQ per le operazioni asincrone (che può avvenire in parallelo) non Può necessariamente utilizzare lo stesso linguaggio di programmazione o di framework come un altro, per lavorare insieme

Josh Evans è stato un ingegnere senior con Netflix, l’organizzazione che ha sperimentato la progettazione e la realizzazione di microservices in produzione. Come testimone della nascita del modello, e ora senior director di dati tecnici su GitHub, Evans ha offerto alcuni ulteriori elementi di Fowler e Lewis’ modello, nel corso di una presentazione a una conferenza di sviluppatori a fine 2016:

Un microservice richiede un minimo e, preferibilmente, no, il coordinamento con le altre componenti di codice per essere completamente funzionale. Che è, dovrebbe essere auto-guida, in grado di determinare il suo scopo al momento è distribuito (“istanziato”). Piuttosto che replicare un intero server per aggiungere potenza di un’applicazione, orchestratore deve essere in grado di creare tante copie di un microservice come l’applicazione può richiedere (“scaling”). Cosa c’è di più, diversi contemporaneamente in esecuzione istanze della stessa microservice possono avere diverse funzioni a seconda dei dati che sono stati dati o puntato, o il database a cui erano collegati. Come piccolo manuale di vigilanza deve essere investito in microservices ambienti possibili, soprattutto dal momento che l’orchestratore può essere dato libertà a come scalare le istanze e dove, risultante in un sistema in cui la forma e la portata, in qualsiasi momento, può essere un po ‘ sconosciuto a osservatori umani.

Anche: Microservices e contenitori in servizio in maglie, il che significa meno caos

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

“Tornando al tema di biologia, si può pensare di microservices come organi di un sistema di organi”, spiega Evans. “Questi sistemi si uniscono a formare il complessivo organismo” Per contribuire a rendere il suo punto, ha mostrato al suo pubblico animato da un diagramma di Netflix’ microservices organismo, che comprende le società di prima e in modo più convenzionale, di design, ma essenzialmente è stata progettata da zero per microservices. Un servizio di proxy agisce come la porta d’ingresso per l’applicazione. Invia le richieste attraverso un routing layer (che Netflix chiama “Zuul”) che non solo pianificare una singola destinazione per la richiesta, ma l’intera catena di servizi necessari a soddisfare tale richiesta. Il routing layer sa che di servizi, e in quale sequenza, soddisfare la domanda, e non ogni richiesta dovrà attraversare tutta la profondità del sistema.

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

La torsione al centro di questo schema, come una falena, dopo aver vagato in una tela di ragno, rappresenta l’API — elemento comune con il quale avviene la comunicazione. Notare il microservices non hanno ciascuna il loro Api, invece, fanno affidamento su un altro servizio per la comunicazione.

Questo è ciò che un intenzionale microservices architettura assomiglia. Potrebbe sembrare includere vari tipi di esoterics con cui gli sviluppatori di software e filosofi politici amano giocare. Ma ecco il perché di tutto questo importa: Quando un’organizzazione si impegna al pieno microservices architettura per la sua, come Netflix ha fatto, non ha più costruisce la sua applicazione nelle versioni in versioni o aggiornamenti semestrali. Si evolve più continuamente, in modo organico, e Netflix’ caso, in particolare, sono più facilmente.

Anche: Microservices e l’invasione dell’identità entità

Forse nessun’altra azienda al mondo ha il mandato di Netflix: offrire milioni di simultanea, ad alta definizione, ad alta fedeltà flussi video attraverso la più volubile di sistema l’umanità abbia mai concepito, internet. Così Netflix esperienze semplicemente non tradurre per la maggior parte delle organizzazioni, a meno che non ci si cura di transizione, per esempio, i servizi finanziari o di prodotti farmaceutici e di entrare in streaming consegna dei mezzi. Netflix’ modelli di sviluppo, può sempre e solo di applicare a Netflix.

Tuttavia, nella ricerca di una comunanza — per qualsiasi frammento di Netflix esperienza che si possono applicare per aziende di grandi dimensioni-ci sono alcuni aspetti più complessi, definizione più formale di microservices che sembrano essere meno esoterico e più fondamentale:

Distribuzione

In un software distribuito architettura che comprende qualsiasi numero di server, o anche piattaforme, contemporaneamente, la posizione di una funzione è indicata da un qualche tipo di indirizzo che può essere risolto attraverso una rete. Un servizio web con cui si può essere a conoscenza, è un servizio che utilizza il protocollo HTTP per la risoluzione di tale indirizzo. Un microservice è un passo in avanti lungo il treno dell’evoluzione. In base alla progettazione, non è entrato con gli altri componenti riutilizzabili sarà di utilizzare (“consumano” in alcuni sviluppatori’ gergo) nel corpo del codice. Così è a contatto con altri componenti di rete o nel suo dominio (che, se sono state progettate, come previsto, sarà anche microservices) utilizzando lo stesso metodo.

La reperibilità

Cosa c’è di più, ogni microservice deve essere capace di farsi rilevabile dal processo responsabile per il coordinamento, la programmazione e/o di orchestrare microservices. Da “individuabile” voglio dire che l’orchestratore ha un mezzo a sua disposizione, per risolvere la posizione di una richiesta microservice e per entrare in contatto con esso. In passato, i servizi hanno duro percorsi e indirizzi HTTP punta. Oggi, cablaggio di un servizio verso un indirizzo di opere contro il principio di servizi distribuiti. Così ora, orchestratore come Kubernetes può utilizzare un proxy inverso come NGINX per risolvere l’attuale localizzazione del servizio in qualsiasi punto della rete, dato un più generale identificatore come l’indirizzo HTTP (URI) dell’origine di tale componente nel repository che originariamente distribuita. Qui, NGINX ancora negozia con un DNS (domain name service) per cercare che la posizione corrente, ma in questo modo, è possibile collegare un componente noto utilizzando un permanente identificatore di una temporanea o effimera indirizzo che può cambiare in pochi secondi.

Anche: Netflix ” smart download in coda il tuo prossimo offline episodio CNET

Questo è il service discovery linea di principio-la garanzia che il programma può trovare qualcosa che si muove in giro un sacco.

Indipendenza

Essendo individuabili attraverso il servizio di discovery consente un microservice di essere disaccoppiato dalle applicazioni, e quindi in modo indipendente gestibile. Riusabilità attraverso l’integrazione non è nuova a codice; le moderne applicazioni in Windows, Mac OS X o Linux desktop sarebbe impossibile senza di essa. Ma il disaccoppiamento rende fattibile per le associazioni tra componenti indipendenti di codice per essere mappati fuori appena prima del loro codice viene effettivamente eseguito, che è completamente diverso dal concetto che tutti affrontiamo oggi, di “installazione applicazioni” di sistemi.

Scandagliando una transizione di microservices

Per essere un microservice è quello di funzionare come un diverso tipo di programma di un’applicazione. Nei primi giorni dell’informatica, il software è un prodotto che potrebbe termoretraibile in una scatola piena di dischi e mettere su una mensola con un cartellino del prezzo. In quei giorni, un’applicazione che è stata una classe di programma con una miriade di funzioni interrelate — un word processor, un business process modeler, una presentazione grafica di strumenti.

SOA è stato originariamente creato per facilitare il software equivalente di tali componenti speciali — le cose con una funzione, che si adattano a qualsiasi condizione all’interno di un determinato intervallo. Microservices è infatti una forma di SOA (anche se alcuni non saranno d’accordo anche con quello). Il “micro” parte è a causa di un primo sforzo di immaginare ciascuno di questi componenti, come le formiche in una colonia. Aiutava le persone a visualizzare il concetto meglio se la metafora paragonato queste parti con qualcosa di piccolo. In pratica, tuttavia, non vi è alcun limite di dimensione per un microservice. Si potrebbe pensare che sia contro il punto di tutto per avere un grande microservice, e ci sarebbe più importanti architetti d’accordo con te.

Era di programmazione object-oriented, in particolare con il linguaggio di programmazione C++, che per primo ha portato SOA in risalto, anni prima di Java. Una organizzazione riconosciuta come un’autorità in SOA, Open Group, definisce un “servizio”, in questo contesto, come “una rappresentazione logica di un modello ripetibile attività commerciale che ha un determinato risultato.” Nota come pensieroso questa definizione è stata predisposta: non È l’attività in sé che costituisce il servizio, ma la sua rappresentazione come codice. In questo modo, un’altra rappresentazione utilizzando un codice diverso sarebbe — giustamente — servizio separato.

Le ricette sono fatte per essere ripetibile: Assemblare le proporzioni degli ingredienti, preparare loro e li combinano in un ordine specifico, e sei certo che riprodurre ciò che lo chef mano in mente. Ripetibile codice è una bestia diversa. Dipende da elementi in grado di cambiare o reindirizzare il flusso di lavoro, come ad esempio:

Le variabili in grado di alterare l’intento di istruzioni; Un database i cui contenuti rappresentano, tra le altre cose, lo stato dei lavori del prodotto (ad esempio, la casa in costruzione, l’automobile progettata, gli itinerari di spedizione tracciata);il Disaccoppiamento del ripetuto codice del contesto rispetto a quello del codice che chiama o passa il controllo, per garantire che funzione svolge può essere eseguita, forse in un modo diverso, in qualcosa d’altro.

In pratica, l’autonomia funzionale è l’aspetto più difficile del microservices ideale per raggiungere. Significa che l’elaborazione di un componente indipendente che, con l’istruzione minima, può essenzialmente educare stesso come suo proprio scopo, l’esecuzione di un’attività ai sensi dell’tale scopo in modo impeccabile, e quindi terminare. Tale componente dovrebbe essere relativamente facile da automatizzare, nel contesto di un sistema e di ogni altro componente lavorato esattamente allo stesso modo.

Inoltre: Questo sito rende la navigazione Netflix semplice nuovamente CNET

Pensare a un robot il cui unico scopo è quello di piantare un chiodo. Si dà l’angolo di armatura, la lunghezza del chiodo, la percentuale di lunghezza che si estende sopra la scheda base, e il relativo livello di base della scheda di cui si può smettere di martellare. Impara le condizioni di funzionamento a “nascita”. Svolge la sua unica funzione, e poi si ferma.

Un funzionale il montaggio di tali robot sarebbe come la maggior parte ogni film di fantascienza mai realizzato: sbattere via a un utopico mondo del futuro ordini sociali, senza pagare nessuna mente a sofferenza probabilità che la sequenza di eventi che avrebbero portato ad un ordine. Forse che non è importante per un film, ma nessuna azienda ha mai cambiato con successo i suoi principi di funzionamento, senza un piano.

Ogni tecnologia dopo il primo aggiornamento per la ruota ha richiesto il suo adottante di pianificare un periodo di transizione. Nessuna organizzazione sarà in grado di adottare un microservices strategia orientata, senza tracciare un percorso per come i suoi reparti, sia il suo codice e la sua gente-in grado di rendere metodologico transizione da dove sono ora.

Cosa microservices vorresti cambiare

Se qualsiasi piattaforma software aziendale intende attivare microservices, il suo compito deve essere quello di massimizzare la quantità di leva finanziaria che può essere acquisita attraverso il riutilizzo e la ridistribuzione dei piccoli pezzi di codice. Rendendo questi moduli funzionali che possono eventualmente essere, influenza direttamente le tre parti del più ampio ecosistema IT:

I modelli di lavoro di sviluppatori di software, consentendo loro di creare più rapidamente i moduli e le applicazioni che utilizzano il lavoro che alcuni di loro hanno già fatto;Le strategie di gestione di operatori, che possono ora implementare i servizi su più piattaforme, mantenendo le applicazioni integrate tra quelle piattaforme, massimizzando l’utilizzo e plausibilmente guidando verso il basso reale, i costi fisici — compreso il raffreddamento.L’economia della distribuzione basata su cloud, consentendo alle aziende di concentrarsi sul più piccolo, più flessibile, più gestibile di fatturazione componenti auto fino efficienza e abbattere i costi operativi.

Ma c’è un’ipotesi rispetto a qualsiasi organizzazione che vorresti adottare un microservices modello, in una somma forfettaria o in più fasi: Che i suoi sviluppatori e di un suo personale sarà in grado di ideare, pianificare, e quindi di produzione di servizi come componenti di applicazioni a venire-come parti di una macchina. Mettere un altro modo, microservice gli sviluppatori hanno bisogno di percepire il loro lavoro indipendentemente dal contesto in cui si sarebbe poi essere messo da utilizzare.

Questo non è un modo naturale di pensare-un po ‘ come un artista che produce un area del segmento di una pittura senza riguardo per il resto della tela. E questo è dove il microservices dibattito attuale: Come può un’organizzazione insegnare la gente a pensare in modo astratto, in servizio di un obiettivo che può essere spiegato solo astrattamente e realizzato in astratto, mentre allo stesso tempo prestazioni promettenti che sono misurabili e concreti?

Scopri di Più — Dalla CBS Interactive Network

Microservices e l’invasione dell’identità entità da Scott M. Fulton, III, ZDNet ScaleMicroservices: suddividere il pensiero monolitico, quindi monolitico applicazioni da Joe McKendrick, Servizio OrientedMicrosoft aprire le sue fonti di Servizio di Tessuto microservices piattaforma da Mary Jo Foley, Tutto Su Microsoft

Altrove

Contesto: Cosa ‘Normale Microservices’? [podcast] da Scott M. Fulton, III, Il Nuovo StackContext: Come Tutti Sicuro Microservices? [podcast] da Scott M. Fulton, III, Il Nuovo StackHow Adozione Kubernetes Interessa CI/CD Requisiti per DevOps Squadre-intervista con Laura Franco, direttore del dipartimento di ingegneria, Codeship

Argomenti Correlati:

Server

Enterprise Software

Open Source

Mobile OS

0