«Gather together those things that change for the same reason, and separate those things that change for different reasons.» Robert C. Martin
Molte organizzazioni si stanno spostando verso un’architettura a microservizi attirate da promesse di scalabilità, efficienza e maggiore velocità al cambiamento. Quando si parla di microservizi però non esiste una soluzione unica.
Reasoned Microservices Workshop è il corso hands-on che ti mette a disposizione diverse strategie per rifattorizzare un monolite verso un’architettura a microservizi, oltre a un set di strumenti per decidere se e quando farlo.
Durante le due giornate analizzeremo insieme i pro e contro di diversi approcci, cercando di evitare gli errori più comuni, per progettare un software che risponda alle nuove funzionalità, evitando alcune delle insidie che portano al monolite distribuito.
Target Audience
Reasoned Microservices Workshop è un workshop pratico per architetti hands-on, che hanno una buona esperienza nello sviluppo di sistemi complessi, o che nel loro day-by-day si sono scontrati o si scontrano con tematiche quali evoluzioni difficoltose, necessità di scalabilità, deploy complessi.
Il corso si rivolge anche a tutti quegli architetti o sviluppatori che vorrebbero provare a sporcarsi le mani nel modo dei microservizi ma che hanno bisogno di esempi pratici per iniziare o vogliono confrontarsi con chi lo ha già fatto.
- Software Developers
- Software Development Tech Leads
- Software Architects.
Come si svolge
Durante le due giornate i due docenti, Alessandro Melchiori e Gianluca Padonavi, alterneranno parti teoriche a parti pratiche, esercizi a spiegazioni, dando spazio a momenti di Q&A.
Nella parte pratica del corso lavoreremo su un monolite che farà da “caso studio” e, mani sulla tastiera, insieme lo partizioneremo.
Obiettivi
Obiettivo principale del corso è permettere un’evoluzione del sistema, da un monolite mono-tecnologia a un sistema aperto, alle evoluzioni sia in termini funzionali sia in termini tecnologici.
Dopo i due giorni di workshop sarai sia in grado di mettere in pratica come partizionare un’applicazione monolitica introducendo dei microservizi, sia di sviluppare da zero un’architettura distribuita.
Agenda
Giorno 1
- Comunicazione sincrona vs comunicazione asincrona: le conseguenze dell’adozione di un determinato paradigma.
- Persistenza: come isolare la persistenza del microservizio, transizione da modelli relazionali a modelli non relazionali. Come ridefinire il contesto transazionale.
- Availability vs consistency: gestione del compromesso tra sogni business e concretezza architetturale. Non si può avere tutto. Partizionamenti e disallineamenti parziali.
- Dipendenze: come evolvono le dipendenze in architettura a microservizi? Da cosa dipendo e quanto?
Giorno 2
- Come identificare contesti di microservizi differenti
- Interazione tra microservizi: come orchestrare un workflow
- Versioning dei messaggi: come evolvere il sistema
- Monitoraggio e debugging: come capire se e dove qualcosa non va
- Q&A
Cosa impareremo
Alla fine dei due giorni ci porteremo a casa:
- Pro e contro di un’architettura distribuita
- Tecniche per individuare i diversi contesti logici in cui suddividere un’applicazione
- Come inserire un’architettura a microservizi su un’architettura preesistente
- Come gestire le nuove problematiche che potrai incontrare nel momento in cui userai questo tipo di architettura.