Vai al contenuto

API vs Microservices

Si parla spesso di microservizi e API come se fossero la stessa cosa, ma in realtà sono concetti complementari. I microservizi suddividono le applicazioni di grandi dimensioni in parti indipendenti, offrendo agli sviluppatori maggiore flessibilità per creare applicazioni snelle e performanti. D’altra parte, un’API è un bridge che consente ai microservizi di comunicare con il server e altre API, consentendo ai microservizi di funzionare in modo indipendente ma sincronizzato. Molti microservizi eseguono solo attività interne o aiutano le funzioni API. Tuttavia, esistono molti modi per creare un’API senza utilizzare microservizi, quindi queste tecnologie sono più complementari che concorrenti.  Sebbene i microservizi consentano agli utenti di accedere all’API, non tutti i microservizi devono far parte di un’API.

La differenza tra microservizi e API è che i microservizi costituiscono una singola applicazione di piccoli servizi interconnessi che comunicano tramite API. Le API sono un metodo di comunicazione tra un richiedente e un host, che consente a servizi e prodotti di sfruttare i dati e le funzionalità reciproci attraverso un’interfaccia documentata. Un’applicazione può contenere una serie di microservizi, ognuno dei quali utilizza un’API per connettersi tra loro. Le API fungono da tessuto connettivo che rende possibile l’interazione tra le diverse parti del tuo stack tecnologico.

I microservizi possono essere un’API, ma le API non sono necessariamente un microservizio. Alcuni microservizi non fanno parte delle API perché non devono essere accessibili al mondo esterno. D’altra parte, ci sono un sacco di modi per creare un’API e la maggior parte di essi non coinvolge microservizi.

Ecco le principali differenze tra microservizi e API:

Microservizi API
Scopo Stile architetturale che struttura un’applicazione come una raccolta di servizi interconnessi Standard o protocollo utilizzato per comunicare tra applicazioni e servizi
Modalità di accesso Utilizza le API per mantenere la comunicazione tra ogni capacità aziendale (PCB) in pacchetto Offerto da un’applicazione all’altra e accessibile via Internet
Come funzionano Utilizza le API per connettere i servizi Esporre i servizi per renderli “consumabili”
Obiettivo Fornire componenti a un’applicazione Servire come interfacce

Cosa sono le API?

L’API (Application Programming Interface) definisce il modo in cui due software possono connettersi e comunicare tra loro tramite i loro endpoint. Ad esempio, delle nostre API potrebbero essere utilizzate per rimanere in contatto con parti esterne (clienti o partner aziendali). La maggior parte delle API è organizzata attorno a regole o standard, come REST o GraphQL, quindi tutti sanno come usarli.

Una chiamata API funziona così:

  1. Le API accettano una richiesta da un utente dell’applicazione e la inviano al server.
  2. Il server recupera quei dati e li interpreta.
  3. Infine, esegue l’azione richiesta dall’utente.

Poiché questi dati sono generalmente presentati in formato JSON (JavaScript Object Notation), l’applicazione prende queste informazioni e le formatta in modo leggibile per l’utente.

Un’API di un negozio online, ad esempio, prende i dati dall’ordine che abbiamo appena effettuato utilizzando il browser, li invia al server del negozio per l’elaborazione, quindi restituisce una risposta ai clienti notificando loro se l’ordine è andato a buon fine o meno.

Cosa sono i microservizi?

I microservizi sono parti di software che eseguono un’unica attività indipendente all’interno di un’applicazione più estesa. Sono in contrasto con le applicazioni monolitiche perché, anziché creare applicazioni Web come un’unità composta da un’interfaccia utente, un’applicazione lato server e un database, suddividono ciascuna parte dell’applicazione in diversi PCB collegati tramite API.

L’architettura dei microservizi consente di apportare modifiche ai singoli microservizi senza influire sul resto dell’applicazione. Costruire un’applicazione utilizzando microservizi riduce la complessità e rende la manutenzione molto più semplice perché possiamo modificare questi piccoli pezzi individualmente. Inoltre, l’architettura dei microservizi consente ai team software di semplificare la comunicazione, prepararsi al meglio a gestire i guasti e garantire una migliore integrazione con altre funzionalità. I microservizi consentono anche lo sviluppo distribuito, il che significa che puoi sviluppare più microservizi contemporaneamente. con conseguente sprint più veloci.

È come costruire un sito con i Lego: se uno non tci piace, possiamo semplicemente sostituirlo e lasciare intatto il resto del sito.

A cosa servono i microservizi?

I microservizi migliorano la flessibilità di un’applicazione. Questo può essere utilizzato in vari modi ad esempio:

  1. Refactoring di applicazioni legacy: se utilizziamo ancora un’architettura legacy, sfruttare i microservizi per passare al cloud, modificare le funzionalità e aggiungere nuove funzionalità ci consentirebbe di creare in modo incrementale e ridurre la complessità tecnica
  2. Elaborazione dei dati in tempo reale: ad esempio, le piattaforme bancarie e i servizi di prenotazione online utilizzano microservizi per eseguire operazioni in tempo reale e fornire un risultato immediato
  3. Applicazioni che forniscono servizi di terze parti: poiché le applicazioni di terze parti come i plug-in richiedono una maggiore potenza della CPU per funzionare, puoi utilizzare i microservizi per renderle più efficienti

Quali sono i vantaggi dei microservizi?

L’architettura dei microservizi rappresenta un cambio di paradigma rispetto all’architettura monolitica. I microservizi decentralizzano lo sviluppo del software e abilitano metodologie agili, con conseguente test e implementazione più rapidi.

Vantaggi dell’architettura dei microservizi
Resilienza
Poiché ogni servizio è indipendente, non si influenzano a vicenda, il che significa che se uno “salta”, gli altri rimarranno attivi
Alta scalabilità
I microservizi possono essere ridimensionati o ridimensionati su diversi server e infrastrutture in base alle esigenze
Time-to-market più rapido
L’architettura dei microservizi consente cicli di sviluppo più brevi, che si traducono in aggiornamenti più rapidi e tempi di implementazione delle funzionalità ridotti
Maggiore accessibilità
I microservizi consentono agli sviluppatori di comprendere e migliorare il loro codice, offrendo valore più rapidamente
Facilità di distribuzione
Le applicazioni basate su microservizi sono più piccole e più facili da distribuire rispetto alle applicazioni monolitiche
Standard aperti
Le API consentono agli sviluppatori di creare i propri microservizi utilizzando il linguaggio di programmazione e la tecnologia che preferiscono
Uso delle API
I microservizi fanno molto affidamento su API e gateway API per rendere possibile la comunicazione tra diversi microservizi
Maggiore sicurezza
I microservizi consentono la separazione dei dati. Ogni servizio ha il proprio database, rendendo più difficile per gli hacker compromettere la tua applicazione

Microservizi vs. API: come funzionano insieme

Immaginiamo di creare da zero un servizio di elaborazione dei pagamenti. La nostra applicazione avrebbe bisogno di molte funzionalità. Ad esempio:

  • Inviare email
  • Contattare le banche
  • Eseguire la transazione
  • Creare la fattura PDF
  • Leggere il database
  • Inserire o aggiornare dei record del database
  • Pianificare l’attività ricorrente per gli abbonamenti

Tutte queste funzionalità funzionano separatamente; sono anche indipendenti l’uno dall’altro e comunicano tramite API. In questo esempio, per rendere possibili tutte queste interazioni, sono necessarie API per attivare funzioni come la creazione di fatture, profili cliente, abbonamenti, addebiti e resi.

Il ruolo dei microservizi nelle grandi aziende

La maggior parte delle grandi aziende, così come le startup, costruiscono i propri sistemi utilizzando un’architettura monolitica. Iniziano in questo modo poiché nella fase iniziale dei progetti è molto più veloce creare un monolite e far muovere il business. Dopo un po’ di tempo però, sorgono problemi a causa della maturazione dei progetti o della crescita del progetto stesso. Con la crescita del sistema, il codice diventa più complicato, l’architettura più complessa e abbiamo bisogno di più sviluppatori per mantenerla. Allo stesso tempo, perdiamo velocità, flessibilità e agilità, il che rende più difficile reagire alle esigenze del mercato.

Per questo motivo, grandi aziende internazionali come Amazon, Netflix, Zalando, etc.. hanno iniziato una transizione verso i microservizi. La maggior parte di queste aziende ha smantellato i propri colossi monolitici in microservizi più piccoli. Questa trasformazione ha consentito a queste aziende di scalare rapidamente in base alla domanda, ottenere maggiore agilità e fare passi da gigante nello sviluppo del business.

Uno dei maggiori vantaggi dei microservizi è che ogni microservizio può essere sviluppato, ridimensionato e distribuito separatamente. Nel caso dell’eCommerce, e non solo, significa che se il nostro negozio online ha bisogno di modifiche al sistema pagamento, allora applichiamo e distribuiamo queste modifiche solo sul microservizio dedicato ai pagamenti anzichè ridistribuire le altre parti di il sistema. Grazie a ciò, l’architettura dei microservizi riduce i costi e il time-to-market, consente cicli di rilascio più rapidi e incoraggia anche le innovazioni.

I singoli microservizi sono gestiti da team indipendenti e specializzati. Ecco perché l’architettura dei microservizi, insieme alla tecnologia, si basa fortemente su persone e processi all’interno di un’organizzazione.

Il caso di Amazon è forse uno dei primi in cui i microservizi hanno avuto un ruolo importante nella trasformazione dell’intero business. Il colosso ha raggiunto il suo straordinario successo in tempi in cui l’architettura monolitica era “la via” per lo sviluppo dei sistemi informatici.  Sebbene l’architettura di Amazon non fosse esattamente un grande monolite, tutti i suoi servizi e componenti erano strettamente collegati tra loro. Avendo centinaia di sviluppatori sparsi in tutta l’organizzazione, Amazon non poteva più implementare le modifiche in modo rapido.

Tutte le principali modifiche al codice rimanevano bloccate nella pipeline di distribuzione per settimane prima che i clienti potessero effettivamente fruirle. Per tale motivo, Amazon inizià ad utilizzare i microservizi per semplificare e accorciare la pipeline. La scomposizione delle strutture in singole applicazioni ha permesso agli sviluppatori di capire dove si trovassero i colli di bottiglia, quale fosse la natura di questi rallentamenti e ha permesso agli sviluppatori di ricostruirle come un’architettura orientata ai servizi, ciascuna con un piccolo team dedicato a un particolare servizio.

Ciò che è iniziato come una pulizia del sistema è finito come un’evoluzione di uno dei più grandi attori online dell’architettura moderna. Insieme a questo cambiamento, Amazon ha aperto la strada ad altre aziende e ha rilasciato una serie di soluzioni open source, come AWS (Amazon Web Services) che ora sono onnipresenti.

La struttura dei microservizi in Amazon può essere “riepilogata” attraverso il grafico in basso: sembra quasi una Morte Nera ma è molto più potente.