Tutorial sui microservizi: cos'è ArchiTecnica ed esempio
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 al dimensionamento di un microservizio che deve essere gestibile da un unico team di sviluppo (da 5 a 10 sviluppatori). In questa metodologia, le grandi applicazioni vengono suddivise in più piccole unità indipendenti.
Cos'è monolitico Architecnologia?
In termini 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.
Discutiamo un esempio di un negozio di commercio elettronico nel contesto di un'architettura monolitica.

In qualsiasi applicazione di e-commerce, ci sono alcune funzionalità standard come Ricerca, Revvista e valutazioni e pagamenti. Queste funzionalità sono accessibili ai clienti tramite il proprio browser o app. Quando lo sviluppatore del sito eCommerce distribuisce l'applicazione, si tratta di una singola unità monolitica. Il codice per diverse funzionalità come Ricerca, RevVisualizzazione e valutazioni e Pagamenti si trovano sullo stesso server. Per ridimensionare 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 un esempio di applicazione di e-commerce sviluppata con architettura di microservizi. In questo esempio di architettura di microservizi, ogni microservizio è focalizzato su una singola capacità aziendale. Ricerca, valutazione e Revisew e Payment hanno ciascuno la propria istanza (server) e comunicano tra loro.
Nel monolitico Architettura, tutti i componenti si fondono in un unico modulo. Ma nei microservizi Architettura sono suddivisi in singoli moduli (microservizi) che comunicano tra loro come mostrato nell'esempio dei microservizi 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 Architecture, i dati sono federati. Ogni microservizio ha il proprio archivio dati separato. Avanti in questo Java Tutorial sui microservizi: impareremo la differenza tra microservizi e architettura monolitica.
Microservizi e monolitici Architectura
Microservices | Monolitico 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 viene interrotto, gli altri possono continuare a funzionare. | L’isolamento dei guasti è difficile. Se una funzionalità specifica non funziona, l'intero sistema si blocca. Per gestire questo problema, l'applicazione deve essere ricostruita, testata nuovamente e anche ridistribuita. |
Tutti i microservizi dovrebbero essere liberamente accoppiati in modo che le modifiche apportate in uno non influenzino l'altro. | L'architettura monolitica è strettamente accoppiata. Le modifiche in un modulo di codice influenzano l'altro |
Le aziende possono distribuire più risorse ai servizi che generano un ROI più elevato | Poiché i servizi non sono isolati, l’allocazione delle risorse individuali non è possibile |
Maggiori risorse hardware potrebbero essere allocate al servizio utilizzato di frequente. Nell'esempio di e-commerce riportato sopra, un numero maggiore di utenti controlla l'elenco dei prodotti e effettua ricerche rispetto ai pagamenti. Pertanto, è possibile allocare più risorse al microservizio di ricerca e 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 il modello dati più adatto alle proprie esigenze. | I dati sono centralizzati. |
Piccoli team focalizzati. Sviluppo parallelo e più veloce | Sono necessari un team numeroso e un notevole sforzo di gestione del team |
La modifica nel modello dati di un microservizio non influisce sugli altri microservizi. | La modifica nel modello di dati influisce sull'intero database |
Interagisce con altri microservizi utilizzando interfacce ben definite | Non applicabile |
I microservizi funzionano secondo il principio che si concentra sui prodotti, non sui progetti | Metti 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 fanno affidamento l'uno sull'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.
- Diversi servizi avranno il proprio meccanismo separato, risultando in una grande quantità di memoria per dati non strutturati.
- Una gestione efficace e il lavoro di squadra sono necessari per prevenire problemi a cascata
- Riprodurre un problema sarà un compito difficile quando scompare in una versione e ritorna nella versione più recente.
- La distribuzione indipendente è complicata con i microservizi.
- L'architettura dei microservizi comporta un notevole sovraccarico operativo.
- È difficile gestire l'applicazione quando vengono aggiunti nuovi servizi al sistema
- 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 mantenuti nell'organizzazione da un registro che funge da elenco di directory. Le applicazioni devono cercare i servizi nel registro e richiamare il servizio.
In un altro mondo, SOA è proprio come un'orchestra dove ogni artista si esibisce con il proprio strumento mentre il direttore musicale dà istruzioni a tutti.
D'altro canto, i microservizi sono una forma di architettura orientata ai servizi in cui le applicazioni sono costruite come una raccolta di diversi servizi più piccoli, anziché come un unico software o applicazione.
I microservizi sono come una compagnia in cui ogni ballerino è indipendente e sa cosa deve fare. Quindi, se salta qualche passaggio, sa come tornare alla sequenza corretta. Ora, in questo tutorial sull'architettura dei microservizi, impariamo la differenza tra SOA e microservizi.
Ecco un confronto dettagliato tra SOA e microservizi
Parametro | SOA | Microservices |
---|---|---|
Tipo di design | Nella 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. |
Dipendenza | Le unità aziendali sono dipendenti. | Sono indipendenti l'uno dall'altro. |
Dimensioni del software | La dimensione del software è maggiore di qualsiasi software convenzionale | La dimensione del Software è sempre piccola nei Microservizi |
Stack di tecnologia | Lo stack tecnologico è inferiore rispetto a Microservice. | Lo stack tecnologico dei microservizi potrebbe essere molto ampio |
Natura della domanda | Di natura monolitica | Stack completo in natura |
Indipendente e focalizzato | Le applicazioni SOA sono progettate per eseguire più attività aziendali. | Sono progettati per eseguire una singola attività aziendale. |
Distribuzione | Il processo di distribuzione richiede molto tempo. | La distribuzione è semplice e richiede meno tempo. |
Efficacia dei costi | Più conveniente. | Less conveniente. |
Scalabilità | Less rispetto ai microservizi. | Altamente scalabile. |
Logica di business | I componenti della logica aziendale sono archiviati all'interno del dominio di servizio singolo. L'API Simple Wire Protocols (HTTP con XML JSON) è gestita con SDK/client | La logica aziendale può vivere nei domini del bus di servizio aziendale come livelli tra i servizi middleware |
Strumenti per microservizi
1) Wiremock: testare i microservizi
WireMock è una libreria flessibile per stub e mocking di servizi web. Può configurare la risposta restituita dall'API HTTP quando riceve una richiesta specifica. Viene utilizzato anche per testare i microservizi.
Download link:http://wiremock.org/
2) Finestra mobile
Docker è un progetto open source che ci consente di creare, distribuire ed eseguire applicazioni utilizzando contenitori. Utilizzando questi contenitori, gli sviluppatori possono eseguire un'applicazione come un singolo pacchetto. Ti consente di spedire librerie e altre dipendenze in un unico pacchetto.
Download link:https://www.docker.com/
3) Istrix
Hystrix è una libreria Java con tolleranza agli errori. 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 in errore 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 con un livello di maturità simile.
- Build separata per ogni microservizio.
- Trattare sempre i soggetti gravi come apolidi.
Sintesi
- I microservizi sono un modello di architettura orientata ai servizi in cui le applicazioni sono costruite come una raccolta di diverse unità di servizio più piccole e indipendenti.
- Microservizio Architecture è uno stile di sviluppo architettonico che consente di creare un'applicazione come una raccolta di piccoli servizi autonomi sviluppati per un dominio aziendale.
- L'architettura monolitica è come un grande contenitore in cui tutti i componenti software di un'applicazione sono raggruppati in un unico pacchetto
- In un microservizio, ogni unità dell'intera applicazione dovrebbe essere la più piccola e dovrebbe essere in grado di raggiungere un obiettivo aziendale specifico
- Nell'architettura monolitica, una base di codice ampia può rallentare l'intero processo di sviluppo. Le nuove release possono richiedere mesi. La manutenzione del codice è difficile
- Due tipi di microservizi sono 1) Stateless 2) Stateful
- Microservizi in entrata Java fanno affidamento l'uno sull'altro e dovranno comunicare tra loro. Ti aiuta a dare risalto a una funzionalità specifica e alle esigenze aziendali
- L'architettura orientata ai servizi, nota anche come SOA, è un'evoluzione del calcolo distribuito basata sul modello di progettazione di richiesta o risposta per applicazioni sincrone e asincrone.
- Nella SOA, i componenti software sono esposti al mondo esterno per l'utilizzo sotto forma di servizi mentre Micro Service fa parte della SOA. È un'implementazione della SOA
- Wiremock, Docker e Hystrix sono alcuni strumenti di microservizi popolari