Tutorial sui microservizi: cos'è ArchiTecnica ed esempio

⚡ Riepilogo intelligente

I microservizi sono un modello di architettura orientata ai servizi (SOA) in cui un'applicazione è costruita come una raccolta di piccole unità di servizio indipendenti. Questa risorsa illustra la differenza tra architettura monolitica e microservizi, le relative problematiche, il confronto con la SOA, gli strumenti più diffusi e le migliori pratiche.

  • 🧩 Concetto principale: I microservizi scompongono un'applicazione in moduli monofunzionali, distribuibili in modo indipendente, ciascuno gestito da un piccolo team di 5-10 sviluppatori.
  • 📦 Contrasto monolitico: Un'applicazione monolitica raggruppa tutte le funzionalità in un unico pacchetto su un singolo server, quindi la scalabilità implica l'esecuzione di più copie complete.
  • ???? ️ Microservizio Architecnologia: Ciascun servizio gestisce una singola funzionalità aziendale, viene eseguito su una propria istanza e comunica tramite protocolli leggeri e senza stato.
  • Dati federati: Ogni microservizio possiede un proprio archivio dati, pertanto una modifica al modello dati di un servizio non influisce sugli altri.
  • Strumenti e procedure: Strumenti come WireMockDocker e Hystrix supportano il testing, il deployment e la tolleranza ai guasti; mantengono ogni servizio stateless con la propria build.

Tutorial sui microservizi

Cosa sono i microservizi?

Microservices è un modello di architettura orientata ai servizi in cui le applicazioni sono costruite come una raccolta di varie unità di servizio indipendenti più piccole. È un Ingegneria del software approccio che si concentra sulla scomposizione di un'applicazione in moduli a funzione singola con interfacce ben definite. Questi moduli possono essere distribuiti e gestiti in modo indipendente da piccoli team che possiedono l'intero ciclo di vita del servizio.

Il termine "micro" si riferisce alle dimensioni di un microservizio, che deve essere gestibile da un singolo team di sviluppo (da 5 a 10 sviluppatori). In questa metodologia, le applicazioni di grandi dimensioni vengono suddivise nelle unità indipendenti più piccole.

Cos'è monolitico Architecnologia?

In parole semplici, si può dire che l'architettura monolitica è come un grande contenitore in cui tutti i componenti software di un'applicazione sono raggruppati in un unico pacchetto. Analizziamo l'esempio di un negozio online nel contesto di un'architettura monolitica.

Monolitico Architecnologia dell'applicazione eCommerce

Monolitico Architecnologia dell'applicazione eCommerce

In qualsiasi applicazione di e-commerce, ci sono alcune funzionalità standard come Ricerca, RevVisualizzazione e valutazioni e pagamenti. Queste funzionalità sono accessibili ai clienti tramite il loro browser o app. Quando lo sviluppatore del sito di eCommerce distribuisce l'applicazione, si tratta di un'unica unità monolitica. Il codice per diverse funzionalità come Ricerca, RevLe sezioni "Visualizzazioni", "Valutazioni" e "Pagamenti" risiedono sullo stesso server. Per scalare l'applicazione, è necessario eseguire più istanze (server) di queste applicazioni.

Cos'è il Microservizio Architecnologia?

Microservizio Architectura è uno stile di sviluppo architettonico che consente di creare applicazioni come una raccolta di piccoli servizi autonomi sviluppati per un dominio aziendale. È una variante dell'architettura di stile strutturale che aiuta a organizzare le applicazioni come una raccolta di servizi debolmente accoppiati. Il Microservice ArchiLa tecnologia contiene servizi a grana fine e protocolli leggeri.

Prendiamo come esempio un'applicazione di e-commerce sviluppata con architettura a microservizi. In questo esempio di architettura a microservizi, ogni microservizio è focalizzato su una singola funzionalità aziendale. Ricerca, Valutazione e RevI componenti View e Payment hanno ciascuno la propria istanza (server) e comunicano tra loro.

Microservices Architectura

Microservices Architectura

Nel monolitico Archistruttura, tutti i componenti si fondono in un unico modulo. Ma nei microservizi ArchiNella struttura, i microservizi sono suddivisi in moduli individuali (microservizi) che comunicano tra loro, come mostrato nell'esempio di microservizi qui sopra.

La comunicazione tra microservizi è una comunicazione stateless in cui ogni coppia di richiesta e risposta è indipendente. Pertanto, i microservizi possono comunicare senza sforzo. Nel microservizio ArchiNella struttura, i dati sono federati. Ogni microservizio ha il proprio archivio dati separato.

Microservizi e monolitici Architectura

MicroservicesMonolitico Architectura
Ogni unità dell'intera applicazione dovrebbe essere la più piccola e dovrebbe essere in grado di raggiungere un obiettivo aziendale specifico.Un'unica base di codice per tutti gli obiettivi aziendali.
L'avvio del servizio è relativamente rapido.L'avvio del servizio richiede più tempo.
L'isolamento dei guasti è semplice. Anche se un servizio smette di funzionare, gli altri possono continuare a operare.Isolare i guasti è difficile. Se una qualsiasi funzionalità non funziona, l'intero sistema si blocca. Per risolvere questo problema, l'applicazione deve essere ricompilata, testata nuovamente e ridistribuita.
Tutti i microservizi dovrebbero essere a basso accoppiamento, in modo che le modifiche apportate a uno non influiscano sugli altri.L'architettura monolitica è strettamente interconnessa. Le modifiche apportate a un modulo di codice influenzano gli altri.
Le aziende possono destinare maggiori risorse ai servizi che generano un ROI più elevato.Poiché i servizi non sono isolati, non è possibile allocare le risorse individualmente.
È possibile allocare maggiori risorse hardware al servizio più utilizzato. Nell'esempio di e-commerce citato in precedenza, un numero maggiore di utenti consulta l'elenco dei prodotti ed effettua ricerche rispetto a quelli che effettuano pagamenti, pertanto è possibile allocare più risorse al microservizio di ricerca e di visualizzazione dell'elenco dei prodotti.La scalabilità delle applicazioni è impegnativa e dispendiosa.
I microservizi rimangono sempre coerenti e continuamente disponibili.Gli strumenti di sviluppo vengono sovraccaricati poiché il processo deve iniziare da zero.
I dati sono federati. Ciò consente ai singoli microservizi di adottare un modello dati più adatto alle proprie esigenze.I dati sono centralizzati.
Team piccoli e focalizzati. Sviluppo parallelo e più rapido.È necessario un team numeroso e un notevole impegno nella sua gestione.
La modifica nel modello dati di un microservizio non influisce sugli altri microservizi.Una modifica al modello dati influisce sull'intero database.
Interagisce con altri microservizi tramite interfacce ben definite.Non applicabile.
I microservizi si basano sul principio di concentrarsi sui prodotti, non sui progetti.Pone l'accento sull'intero progetto.
Nessuna dipendenza incrociata tra basi di codice. È possibile utilizzare tecnologie diverse per microservizi diversi.Una funzione o un programma dipende da altri.

Sfide dei microservizi

  • I microservizi dipendono l'uno dall'altro e dovranno comunicare tra loro.
  • Rispetto ai sistemi monolitici ci sono più servizi da monitorare che vengono sviluppati utilizzando strumenti diversi linguaggi di programmazione.
  • Trattandosi di un sistema distribuito, si tratta di un modello intrinsecamente complesso.
  • I diversi servizi avranno meccanismi separati, il che comporterà un elevato consumo di memoria per i dati non strutturati.
  • Una gestione efficace e il lavoro di squadra sono necessari per prevenire problemi a cascata.
  • Riprodurre un problema sarà un'impresa difficile quando questo scompare in una versione e ricompare nell'ultima.
  • L'implementazione indipendente con i microservizi è complicata.
  • L'architettura dei microservizi comporta un notevole sovraccarico operativo.
  • La gestione dell'applicazione diventa complessa quando al sistema vengono aggiunti nuovi servizi.
  • Per supportare microservizi distribuiti in modo eterogeneo è necessaria una vasta gamma di professionisti qualificati.
  • I microservizi sono costosi, poiché è necessario mantenere uno spazio server diverso per le diverse attività aziendali.

SOA e microservizi

I servizi SOA sono gestiti nell'organizzazione tramite un registro che funge da elenco di directory. Le applicazioni devono cercare i servizi nel registro e invocare il servizio. In altre parole, SOA è proprio come un'orchestra dove ogni artista si esibisce con il proprio strumento mentre il direttore musicale dà istruzioni a tutti.

Dall'altro lato, i microservizi rappresentano una forma di architettura orientata ai servizi (SOA) in cui le applicazioni sono costruite come una raccolta di servizi più piccoli anziché come un unico software o applicazione. I microservizi sono come una compagnia di danza in cui ogni ballerino è indipendente e sa cosa deve fare. Quindi, se sbagliano qualche passo, sanno come riprendere la sequenza corretta. Ecco un confronto dettagliato tra SOA e microservizi.

ParametroSOAMicroservices
Tipo di designNella SOA, i componenti software sono esposti al mondo esterno per essere utilizzati sotto forma di servizi.MicroService fa parte della SOA. È un'implementazione della SOA.
DipendenzaLe unità aziendali sono dipendenti.Sono indipendenti l'uno dall'altro.
Dimensioni del softwareLe dimensioni del software sono maggiori rispetto a qualsiasi software convenzionale.Nei microservizi, le dimensioni del software sono sempre ridotte.
Stack di tecnologiaLo stack tecnologico è inferiore rispetto a Microservice.Lo stack tecnologico dei microservizi potrebbe essere molto ampio.
Natura della domandaDi natura monolitica.Stack completo in natura.
Indipendente e focalizzatoLe applicazioni SOA sono progettate per eseguire più attività aziendali.Sono progettati per eseguire una singola attività aziendale.
DistribuzioneIl processo di implementazione richiede tempo.La distribuzione è semplice e richiede meno tempo.
Efficienza dei costi Più conveniente.Less conveniente.
ScalabilitàLess rispetto ai microservizi.Altamente scalabile.
Logica di businessI componenti della logica di business sono memorizzati all'interno di un singolo dominio di servizio, con protocolli di rete semplici (HTTP con XML o JSON) e gestiti tramite API con SDK/Client.La logica di business può risiedere in domini diversi, con livelli di interconnessione tra i servizi simili a un Service Bus aziendale (Middleware).

Strumenti per microservizi

1) Wiremock: testare i microservizi

WireMock È una libreria flessibile per la creazione di stub e mock di servizi web. Permette di configurare la risposta restituita dall'API HTTP quando riceve una richiesta specifica. Viene utilizzata anche per testare i microservizi.

Download link: http://wiremock.org/

2) Finestra mobile

Docker è un progetto open-source che ci permette di creare, distribuire ed eseguire applicazioni utilizzando i container. Grazie a questi container, gli sviluppatori possono eseguire un'applicazione come un singolo pacchetto. Permette di includere librerie e altre dipendenze in un unico pacchetto.

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

3) Istrix

Hystrix è un sistema di tolleranza ai guasti Java libreria. Questo strumento è progettato per separare i punti di accesso a servizi remoti, sistemi e librerie di terze parti in un ambiente distribuito come i microservizi. Migliora il sistema complessivo isolando i servizi difettosi e prevenendo l'effetto a cascata dei guasti.

Link per il download: https://github.com/Netflix/Hystrix

migliori pratiche dei microservizi Architectura

  • Archivio dati separato per ogni microservizio.
  • Mantenere il codice a un livello di maturità simile.
  • Build separata per ogni microservizio.
  • Trattare sempre ciascun server come stateless.

DOMANDE FREQUENTI

Le funzionalità di intelligenza artificiale sono spesso impacchettate come singoli microservizi, in modo che le applicazioni possano richiamare un modello tramite un'API senza doverlo integrare. L'IA alimenta inoltre il routing intelligente, l'autoscaling e il rilevamento delle anomalie in molti servizi.

Sì. Gli strumenti di osservabilità basati sull'IA correlano log, metriche e traces tra i servizi per rilevare guasti, prevedere colli di bottiglia e individuare la causa principale più rapidamente rispetto all'analisi manuale in un grande sistema distribuito.

I microservizi vengono generalmente classificati in stateless e stateful. I microservizi stateless non conservano dati tra una richiesta e l'altra, mentre i microservizi stateful mantengono i dati o lo stato della sessione, spesso supportati da un proprio archivio dati dedicato.

Grandi aziende tecnologiche come Netflix, Amazon, Uber e Spotify L'utilizzo dei microservizi consente di scalare in modo indipendente e di effettuare implementazioni frequenti. Questo approccio è ideale per applicazioni cloud-native ad alto traffico che necessitano di rilasci rapidi e isolati.

Riassumi questo post con: