Close

Microservizi: capire di cosa si tratta e quali vantaggi offrono

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 poco 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 come parte di 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. Questi gruppi spesso hanno assunto anche 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.

Continua a leggere per saperne di più sull'anatomia delle applicazioni basate su microservizi. Inoltre, scopri come Compass di Atlassian riduce la complessità consentendo allo stesso tempo agli sviluppatori di sfruttare i vantaggi di questo modello architettonico.

I microservizi sono una raccolta di piccole unità che rilasciano e distribuiscono costantemente applicazioni complesse e di grandi dimensioni.

Logo di Compass.

Prova Compass gratis

Migliora la tua esperienza di sviluppatore, cataloga tutti i servizi e aumenta l'integrità del software.

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.

Illustrazione dei microservizi

Esistono tre tipi di microservizi:

  1. I microservizi di dominio associano in maniera generica i servizi alle funzionalità correlate.
  2. I microservizi di integrazione facilitano l'interazione tra applicazioni non correlate.
  3. I microservizi delle unità di lavoro gestiscono funzioni singolari.

I microservizi interagiscono tra loro utilizzando interfacce di programmazione delle applicazioni (API). 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 scalano. Si tratta di una piattaforma per sviluppatori che riunisce tutte le informazioni sui risultati di engineering e la collaborazione tra i team in un'unica posizione centrale e ricercabile.

Principi chiave dei microservizi


L'architettura basata su microservizi ha diverse caratteristiche distintive. Gli sviluppatori possono sviluppare e distribuire i propri servizi in modo indipendente utilizzando i linguaggi e le tecnologie più adatti ai loro componenti.

La comunicazione tra microservizi è basata su API e consente l'accesso ai dati da varie fonti senza modifiche. I singoli servizi possono scalare in base alla domanda, risparmiando sui costi e garantendo disponibilità.

Questi attributi rendono le applicazioni distribuite basate su microservizi flessibili e facili da mantenere.

In un'architettura di microservizi, ciascun componente può essere sviluppato, distribuito, utilizzato, modificato e ridistribuito senza compromettere il funzionamento degli altri servizi o l'integrità dell'applicazione.

Vantaggi dei microservizi


I microservizi offrono molti vantaggi. Semplificano lo sviluppo e la gestione dei progetti. A volte, possono eliminare la necessità di team operativi separati poiché gli sviluppatori possono gestire le operazioni per i microservizi che creano.

Alcuni altri vantaggi dei microservizi includono:

Illustrazione di una bilancia

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.

Illustrazione su Agile

Agilità

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

Illustrazione di cassetta degli attrezzi

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à.

Illustrazione di mattoncini impilati

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


L'architettura basata su microservizi offre molti vantaggi, ma comporta anche delle sfide.

Una delle sfide dei microservizi è che i servizi indipendenti generano i propri log. Questo è uno svantaggio rispetto ai log centralizzati delle architetture monolitiche, che forniscono un'unica fonte di verità per sviluppatori e team operativi. Il monitoraggio e la gestione dell'infrastruttura sono anche più complicati poiché esistono molte parti in movimento. I test e il debug sono impegnativi perché, a differenza delle architetture monolitiche, non esiste un ambiente di sviluppo integrato (IDE).

Compass di Atlassian può aiutarti con tutte queste sfide. Compass facilita la collaborazione e consente alle aziende di gestire le complessità delle architetture distribuite man mano che scalano. Lo fa riunendo le informazioni disconnesse in una posizione centrale e ricercabile.

Estensione dello sviluppo

Il passaggio da un monolite ai microservizi comporta una maggiore complessità. Vi sono più servizi in più posizioni, creati da più team. Ciò può rendere difficile determinare le relazioni tra i diversi componenti, individuare chi possiede un determinato componente o capire come evitare di influire negativamente sui componenti dipendenti. Se l'estensione non viene gestita, si traduce in velocità di sviluppo ridotta e in scarse prestazioni operative. Con la crescita del sistema, si rende necessario un team delle operazioni esperto che si occuperà della gestione delle nuove distribuzioni costanti e delle modifiche frequenti all'architettura.

Poca chiarezza sulla proprietà

L'architettura di microservizi aggiunge confusione sull'attribuzione della proprietà dei diversi elementi. Il team DevOps potrebbe eseguire un insieme di API, raccolte di componenti, strumenti di monitoraggio e immagini Docker per gli utenti per distribuire un'applicazione. È importante disporre di informazioni approfondite sui componenti, inclusi i responsabili, le risorse e le relazioni in evoluzione tra gli altri componenti. Servono comunicazione e coordinamento precisi tra i diversi team per far sì che tutte le persone coinvolte trovino con facilità le informazioni necessarie per comprendere un prodotto.

Costi di infrastruttura esponenziali

Ogni nuovo microservizio aggiunto alla distribuzione nell'ambiente di produzione ha i propri costi relativi a suite di test, playbook di distribuzione, infrastruttura di hosting, strumenti di monitoraggio e molto altro.

Sovraccarico organizzativo aggiunto

È necessario un ulteriore livello di collaborazione e comunicazione per il coordinamento degli aggiornamenti e delle interfacce tra i team dell'architettura di microservizi.

Debug

Può essere complicato eseguire il debug di un'applicazione contenente più microservizi, ciascuno con il suo insieme di log. Un singolo processo aziendale può essere eseguito su più computer e in diversi momenti, rendendo il debug ancora più complicato.

Risposta agli imprevisti

È importante disporre di informazioni sulla risposta agli imprevisti relativi ai microservizi, ad esempio informazioni su chi sta utilizzando il microservizio, dove questo è stato distribuito e come e chi contattare in caso di problemi.

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 mobili e messaggistica.
  • Gli istituti finanziari, come la Bank of America, utilizzano i 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 dozzine di best practice essenziali per lo sviluppo di microservizi. Di seguito sono riportati solo alcuni esempi:

  • Il principio della responsabilità unica (SRP) specifica che ogni modulo o microservizio deve avere una sola funzione. La continuous integration (CI) 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 continuous delivery (CD), 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 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.

Illustrazione dei microservizi

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

Integrare Compass nel tuo ambiente di sviluppo è semplice grazie alla sua interfaccia utente personalizzabile e alla compatibilità con strumenti interni e di terze parti. Scopri come gestire la tua architettura di microservizi con Compass e come questo strumento consenta di riunire le informazioni disconnesse in una posizione centrale e unificata.

Microservizi: domande frequenti


Quali strumenti vengono usati comunemente nei microservizi?

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 discussioni sui microservizi.

Esplora i microservizi con Compass

Se hai scelto di utilizzare un'architettura di microservizi, Compass di Atlassian gestisce la complessità delle architetture distribuite man mano che si ampliano. Si tratta di una piattaforma di sviluppo estensibile che riunisce i dati separati dei risultati tecnici e della collaborazione tra i team in un'unica posizione centrale e ricercabile. Oltre ad aiutarti a controllare la proliferazione di microservizi con il Catalogo componenti, Compass può essere utile per stabilire best practice, misurare l'integrità del software con le scorecard e fornirti dati e informazioni approfondite sulla toolchain DevOps utilizzando estensioni create sulla piattaforma Atlassian Forge.

Illustrazione dei microservizi Compass