Corso di formazione Architettura e Progettazione del software
Il corso ha la finalità di preparare la figura professionale del software architect che è colui che si occupa della progettazione ad alto livello di un applicativo software.
OBIETTIVO DEL CORSO
Il corso ha la finalità di preparare la figura professionale del software architect che è colui che si occupa della progettazione ad alto livello di un applicativo software, definendone i vari componenti e come questi si relazionano e interagiscono logicamente tra di loro.
Il corso prevede l’apprendimento di diverse metodologie di progettazione del software, che hanno una ricaduta diretta sulla sua modalità di sviluppo, quali:
– Object Oriented: è ormai un fondamento della programmazione che consiste nel definire delle classi con determinati attributi e metodi di impiego di cui gli oggetti software sono delle istanze che operativamente elaborano i dati scambiandosi messaggi tra di loro.
– Domain Design Driven: è un approccio alla realizzazione del software in un contesto complesso che prevede il riferimento a un modello spesso in continua evoluzione, e perciò incentrato sulla scalabilità.
– Multi-tier o N-Tier: è un’architettura del software che prevede la distribuzione delle funzioni su più livelli comunicanti tra di loro, sebbene spesso funzionanti all’interno dello stesso sistema: tipicamente il database, l’elaborazione dei dati e la loro presentazione.
– Client / Server: è il caso più semplice di architettura a software a livelli, con due soli strati.
– Event Driven: è un modello di programmazione in cui il flusso di esecuzione del programma è determinato non a priori ma in base a degli eventi esterni.
– Service Oriented: è un modello di architettura del software che prevede una serie di servizi che comunicano tra di loro.
– Microservizi: è un sistema di progettazione e sviluppo del software legato all’avvento del cloud computing e si basa sull’idea che ogni singolo servizio è svolto da un componente software che gira su un processo autonomo e indipendente che comunica con gli altri tramite API.
– Design Pattern: si tratta di soluzioni progettuali generali a problemi ricorrenti. In particolare possono riguardare le relazioni tra classi o oggetti, oppure a livello più alto, posso descrivere un pattern adottato come schema generale dall’intero progetto software.
PREREQUISITI: conoscenza dei principi di programmazione orientata agli oggetti ed esperienza di sviluppo di sistemi informatici (in qualsiasi ambito).
PROGRAMMA DEL CORSO
Introduzione ai microservizi
- Definizione e caratteristiche dei microservizi
- Vantaggi e sfide dell’adozione dei microservizi
- Monoliti vs Microservizi
Pattern architetturali dei microservizi
- Design dei microservizi: Bounded Contexts e componentizzazione
- Pattern comuni: API Gateway, Service Registry, Service Mesh
- Comunicazione tra servizi: sincrona (REST, gRPC) vs asincrona (messaggistica)
Domain-Driven Design (DDD)
- Concetti fondamentali del DDD
- Bounded Contexts e Ubiquitous Language
- Implementazione del DDD nei microservizi
Scomposizione di un monolite
- Identificazione dei Bounded Contexts
- Tecniche di decomposizione
- Strumenti e strategie per la scomposizione
- Migrazione graduale e gestione del rischio
Command Query Responsibility Segregation (CQRS)
- Concetti e principi di CQRS
- Vantaggi e svantaggi di CQRS
- Implementazione di CQRS nei microservizi
Event Storming
- Introduzione all’Event Storming
- Tecniche e pratiche di Event Storming
- Utilizzo dell’Event Storming per modellare i microservizi
Event Sourcing
- Concetti di Event Sourcing
- Vantaggi e sfide dell’Event Sourcing
- Implementazione di Event Sourcing nei microservizi
Transazioni distribuite e saga
- Concetti di transazioni distribuite
- Pattern di coordinamento: 2PC (Two-Phase Commit) vs Sagas
- Implementazione delle saga per gestire la consistenza
- Compensazioni e gestione degli errori nelle transazioni distribuite
Pattern di resilienza
- Circuit Breaker
- Retry e Timeout
- Bulkhead e Throttling
- Implementazione della resilienza nei microservizi
Osservabilità e monitoraggio
- Logging centralizzato
- Tracciamento distribuito
- Monitoraggio e alerting
Il corso ha una durata di 3 giorni.
Questo corso viene erogato solo in modalità dedicata: per questa tipologia, la quotazione è a giornata (su richiesta) e gli argomenti possono essere personalizzati in base alle proprie necessità formative.