Lo stile architetturale a microservizi é da diversi anni oggetto di particolare attenzione in ambito di sviluppo software, a seguito dei vantaggi dimostrati dalla sua adozione da parte di compagnie quali Uber, Netflix e Amazon.
Strutturare una applicazione con i microservizi puó infatti fornire benefici ampiamente documentati, tra i quali un processo di sviluppo piú agile, maggior flessibilitá nell'adozione di nuove tecnologie e una naturale propensione alla scalabilitá.
Ciononostante, approcciare il design a microservizi puó dimostrarsi arduo per sviluppatori familiari con il piú classico stile monolitico, dal momento che le architetture distribuite richiedono non solo una efficace suddivisione delle funzionalitá tra i diversi servizi, ma implicano anche la presenza di aspetti e criticitá aggiuntive quali la comunicazione "inter-process" (IPC), la moltiplicazione dei point of failure potenziali e un processo di deployment piú complesso.
La risoluzione di questi problemi richiede la conoscenza di svariati pattern di design aggiuntivi che nascono come naturale conseguenza del pattern a microservizi; per questo motivo, iniziare a sviluppare microservizi puó diventare piú complesso del previsto.
In questo talk impiegheremo un esempio concreto per illustrare come abbiamo approcciato la prima architettura a microservizi da noi sviluppata, partendo dalle decisioni di design preliminari e coprendo l'intero ciclo evolutivo dell'architettura.
Il risultato é un sistema dal design altamente scalabile, che combina le best practices raccomandate dalle maggiori aziende che ad oggi impiegano i microservizi con strumenti allo stato dell'arte quali Eureka, Zuul, Spring Cloud e OpenShift.
Lo scopo del talk é trasmettere le lezioni che abbiamo appreso durante lo sviluppo e suggerire come affrontare in modo efficace la sfida dei microservizi a chi vi si affaccia per la prima volta.