I microservizi (indicati anche come architettura di microservizi) rappresentano un approccio architetturale in cui una singola applicazione è formata da molti servizi o componenti più piccoli, accoppiati debolmente e implementabili in modo indipendente. Questi servizi (chiamati anche microservizi) in genere hanno il proprio stack di tecnologia, che include database e modello di dati e comunicano reciprocamente attraverso una combinazione di API REST, flusso di eventi e broker di messaggi.
Poiché i microservizi possono essere implementati e reimplementati in modo indipendente, senza alcun impatto reciproco o interruzione dell'esperienza dell'utente finale, essi rappresentano un abbinamento perfetto con metodologie di distribuzione iterative e automatizzate, quali ad esempio integrazione continua/distribuzione continua (CI/CD) o DevOps.
Oltre ad essere utilizzati per creare applicazioni native del cloud completamente nuove, i microservizi possono essere utilizzati per modernizzare applicazioni monolitiche tradizionali.
In un recente sondaggio IBM rivolto a dirigenti IT, dirigenti del reparto sviluppo e sviluppatori, l'87% degli utenti di microservizi concorda sul fatto che l'adozione dei microservizi valga la spesa e l'impegno richiesti.
Gli sviluppatori spesso implementano i microservizi all'interno di container - componenti dell'applicazione leggeri ed eseguibili che combinano il codice sorgente dell'applicazione (in questo caso il codice dei microservizi) con tutte le librerie e dipendenze del sistema operativo (SO) necessarie per l'esecuzione del codice in qualsiasi ambiente. Più piccoli, più efficienti in termini di risorse e più portabili rispetto alle VM (Virtual Machine), i container sono le unità di calcolo de facto delle moderne applicazioni native del cloud.
I container amplificano i vantaggi dei microservizi consentendo un'esperienza di implementazione e gestione coerente in un ambiente di cloud ibrido - cloud pubblici, cloud privato e infrastruttura on-premise. Col moltiplicarsi però delle applicazioni native del cloud, anche i container e la complessità della loro gestione si moltiplicano. La maggior parte delle organizzazioni che utilizza i microservizi containerizzati utilizza anche una piattaforma di orchestrazione dei container, come ad esempio Kubernetes, per automatizzare l'implementazione e la gestione dei container su vasta scala.