Microservizi: capire di cosa si tratta e quali vantaggi offrono

Continuous delivery (CD) indica la pratica di utilizzare l'automazione per rilasciare software attraverso brevi iterazioni.

Prova Compass gratis

Improve your developer experience, catalog all services, and increase software health.

Fino al 2013 circa, le imprese di solito creavano software aziendali costruendo applicazioni come singole unità con grandi basi di codice in un' architettura monolitica. Man mano che il software è diventato più complesso e il cloud computing ha guadagnato popolarità, questo approccio è diventato meno pratico.

L'avvento dei prodotti software-as-a-service (applicazioni distribuite nel cloud) ha consentito alle aziende di utilizzare provider, come Amazon Web Services, per creare nuovi server e aggiungere rapidamente ridondanza. Ciò ha assicurato che i servizi rimanessero online durante gli upgrade. Ha inoltre inaugurato una nuova era di velocity e agilità. Gli utenti hanno iniziato ad aspettarsi upgrade e miglioramenti rapidi, spingendo le aziende a modificare i propri processi di sviluppo.

Le aziende hanno iniziato a suddividere le applicazioni in servizi di dimensioni inferiori e indipendenti, detti anche microservizi. Ad esempio, invece di includere una casella di messaggistica in una piattaforma di e-commerce monolitica, si potrebbe creare un microservizio separato per questa funzionalità.

Parallelamente, gli sviluppatori hanno iniziato a lavorare in gruppi più piccoli e specializzati occupandosi della modifica e del miglioramento dei singoli servizi senza rischi per l'intera applicazione. Spesso questi gruppi si sono assunti la responsabilità delle operazioni del loro codice, un modello chiamato DevOps. Per facilitare questi cambiamenti, i project manager hanno iniziato a sviluppare nuove metodologie, come Agile, che divide i progetti in versioni più piccole e frequenti.  

Prosegui nella lettura per saperne di più sull'anatomia delle applicazioni basate su microservizi. Inoltre, scopri come Compass di Atlassian riduce la complessità e allo stesso tempo consente agli sviluppatori di sfruttare i vantaggi di questo modello architettonico.

Cosa sono i microservizi?

Un microservizio è una funzione responsabile di una singola parte di logica (ad eccezione dei microservizi di dominio, spiegati di seguito). Più microservizi vengono combinati per creare applicazioni distribuite, come Jira Software.

Esistono tre tipi di microservizi:

  1. 1

    Domain microservices loosely couple services with related functionality. 

  2. 2

    microservizi di integrazione facilitano l'interazione tra applicazioni non correlate. 

  3. 3

    microservizi delle unità di lavoro gestiscono funzioni singolari. 

I microservizi interagiscono tra loro utilizzando API (Application Programming Interface, cioè interfacce di programmazione delle applicazioni). Gli sviluppatori che lavorano su singoli servizi possono apprendere il funzionamento interno degli altri microservizi, un altro vantaggio rispetto all'architettura monolitica.

L'architettura basata su microservizi offre molti vantaggi, ma aggiunge anche complessità. Ecco perché Atlassian ha sviluppato Compass: per aiutare le aziende a semplificare man mano che crescono. Si tratta di una piattaforma per sviluppatori che riunisce tutte le informazioni sui risultati di progettazione e la collaborazione tra i team in un'unica posizione centrale e ricercabile.

Principi chiave dei microservizi

Microservices-based architecture has several distinguishing features. Developers can develop and deploy their services independently using the languages and technologies that suit their components. 

Communication between microservices is API-based, allowing access to data from various sources without modification. Individual services can scale based on demand, saving costs and ensuring availability.

These attributes make microservices-based distributed applications flexible and easy to maintain.

Vantaggi dei microservizi

Microservices provide many advantages. They simplify development and project management. Sometimes, they may eliminate the need for separate operations teams since developers can handle operations for the microservices they build. 

Some other benefits of microservices include:

Resilienza e isolamento dei guasti

Nelle architetture monolitiche, un errore incide sull'intera applicazione. I microservizi, invece, sono indipendenti. Un errore non influirà sulle altre parti dell'applicazione.

Agilità

Suddividere le applicazioni in blocchi più piccoli accelera lo sviluppo. Consente ai team di creare, testare e distribuire software più rapidamente.

Diversità tecnologica

I microservizi consentono agli sviluppatori di scegliere gli strumenti e le tecnologie giusti per il lavoro. Ciò aumenta l'efficienza e la produttività.

Manutenzione migliorata

La capacità di testare i singoli componenti semplifica la ricerca e la correzione dei bug senza mettere offline l'intera applicazione.

Resilienza e isolamento dei guasti

Nelle architetture monolitiche, un errore incide sull'intera applicazione. I microservizi, invece, sono indipendenti. Un errore non influirà sulle altre parti dell'applicazione.

Agilità

Suddividere le applicazioni in blocchi più piccoli accelera lo sviluppo. Consente ai team di creare, testare e distribuire software più rapidamente.

Diversità tecnologica

I microservizi consentono agli sviluppatori di scegliere gli strumenti e le tecnologie giusti per il lavoro. Ciò aumenta l'efficienza e la produttività.

Manutenzione migliorata

La capacità di testare i singoli componenti semplifica la ricerca e la correzione dei bug senza mettere offline l'intera applicazione.

Sfide dei microservizi

Microservices-based architecture has many benefits, but it also comes with challenges. 

One challenge of microservices is that the independent services generate their logs. This is a disadvantage compared to monoliths' centralized logs, which provide a single source of truth for developers and operations teams. Monitoring and infrastructure management are also more complicated since many moving pieces exist. Testing and debugging are challenging because, unlike monoliths, no integrated development environment (IDE) exists.

Atlassian's Compass can help with all these challenges. Compass facilitates collaboration and allows companies to manage the complexities of distributed architectures as they scale. It does this by bringing the disconnected information together in a central, searchable location.

Per cosa viene utilizzata l'architettura dei microservizi?

I grandi siti web per consumatori utilizzano spesso centinaia o migliaia di microservizi. I microservizi sono particolarmente utili nei seguenti casi d'uso e settori:

  • I siti di e-commerce, come eBay, utilizzano microservizi separati per carrelli della spesa, app per dispositivi mobili e messaggistica.
  • Gli istituti finanziari, come la Bank of America, utilizzano microservizi per comunicare con servizi esterni. Li usano anche per gestire funzioni come le autorizzazioni degli utenti e la visualizzazione delle transazioni.
  • Le piattaforme di social media, come Instagram e Facebook, utilizzano microservizi per visualizzare i feed di notizie, i messaggi, le notifiche e le reti di amici.

Best practice per la gestione dei microservizi

Nel corso degli anni, gli sviluppatori hanno creato decine di best practice essenziali per lo sviluppo di microservizi. Di seguito sono riportati solo alcuni esempi:

  • L'SRP (Single-Responsibility Principle, cioè principio della responsabilità unica) specifica che ogni modulo o microservizio deve avere una sola funzione. La CI (continuous integration) SRP è una metodologia di controllo del codice sorgente che automatizza i controlli di qualità del codice prima della fusione in un progetto, incrementando la velocity in quanto non è più necessario un processo di qualità separato. Questa best practice DevOps favorisce la velocity. La CI precede la CD (continuous delivery), che esegue strumenti di creazione automatizzati per mantenere il software pronto per la distribuzione.
  • I gateway API semplificano la comunicazione tra i microservizi, gestiscono l'autenticazione e l'autorizzazione e aumentano la sicurezza. 
  • La comunicazione asincrona tra i microservizi preserva l'autonomia, riducendo le dipendenze che potrebbero rallentare il funzionamento dell'applicazione.  
  • Il controllo delle versioni dei microservizi è fondamentale quando gli sviluppatori implementano modifiche radicali, come la rimozione di un'intera operazione. Questa pratica agevola le transizioni e riduce al minimo la probabilità di interruzione del servizio.  

Open DevOps di Atlassian, basato su Jira Software, semplifica l'integrazione automatica degli strumenti di Atlassian e dei partner, permettendo ai team di concentrarsi sulla creazione e sul funzionamento del software.

Gestisci meglio la tua architettura di microservizi con Compass

Compass di Atlassian è una piattaforma per l'esperienza degli sviluppatori che riunisce architettura software distribuita e team che collaborano in un unico posto. Fornisce una comoda panoramica di tutti i componenti e i servizi su cui lavora un team. Include anche un catalogo di componenti software per aiutare gli sviluppatori a trovare facilmente ciò che desiderano.

Compass consente una facile gestione dei componenti, il tracking della proprietà e il monitoraggio delle relazioni. Inoltre, tiene traccia delle modifiche in tempo reale.

L'integrazione di Compass nell'ambiente di sviluppo è semplice grazie alla sua interfaccia utente personalizzabile e alla compatibilità con strumenti interni e di terze parti. Scopri come gestire l'architettura di microservizi con Compass e come questo strumento consente di riunire le informazioni disconnesse in una posizione centrale e unificata.

Microservizi: domande frequenti

What tools do people commonly use in microservices?

Le aziende utilizzano spesso strumenti di containerizzazione come Kubernetes e Docker. Inoltre usano spesso gateway API tra i microservizi e i loro clienti. Questi gateway eseguono funzioni di traffico API come autenticazione, controllo degli accessi e bilanciamento del carico.

In che modo i microservizi differiscono dall'architettura monolitica?

I monoliti sono grandi basi di codice che funzionano come un unico sistema. Richiedono interruzioni del sistema per gli aggiornamenti e il debug. Le architetture di microservizi sono applicazioni distribuite con blocchi di funzionalità più piccoli e indipendenti. Gli sviluppatori possono effettuare l'upgrade, migliorare ed eseguire il debug di questi moduli senza mettere offline l'intera applicazione. Ciò semplifica la scalabilità e incrementa la velocity di sviluppo.

In che modo i microservizi influiscono su DevOps?

Chi conosce DevOps sa che la continuous integration e la continuous delivery (la pipeline DevOps CI/CD) sono i pilastri delle metodologie DevOps. La natura modulare dei microservizi è perfettamente in linea con questo approccio. I microservizi consentono agli sviluppatori di creare, testare e distribuire rapidamente release piccole e frequenti.

Unisciti alla Atlassian Community per altri articoli e altre discussioni sui microservizi.

Consigliata per te

Community di Compass

Tutorial: Creare un componente

Inizia a utilizzare Compass gratuitamente