Molte aziende hanno costruito negli anni sistemi informatici complessi che gestiscono i processi interni e i processi di gestione i clienti/fornitori. Con il cambiamento delle abitudini dei consumatori quello che una volta si faceva intermediato da un agente, commesso o addetto che usava il sistema gestionale per rispondere alla richiesta del cliente ora si fa in modalità self service semplicemente con uno smartphone, il cliente si aspetta di essere autonomo nel rapporto con l’azienda. L’esperienza che ci si aspetta come consumatore è quella che si vive usando piattaforma native digitali come ad esempio Netflix e Spotify. Il problema è che la maggior parte delle aziende non è partita nativamente digitale e non è possibile azzerare tutto e ripartire da capo senza correre rischi di business continuity importanti che vedono milioni di clienti coinvolti e impatti significativi a livello economico in caso di down. Se non è possibile ripartire da zero, quindi come fare? Una risposta è un approccio graduale di evoluzione architetturale e tecnologica dove Kubernetes, e il suo ecosistema, giocano un ruolo chiave. In questa presentazione vedremo i tre principi cardine sulla quale si basa questa strategia: API as a Product; architetture evolutive; fast data con pattern CQRS; che si uniscono per creare una strategia di Modernizzazione delle Applicazioni utilizzando i componenti dell’ecosistema del landscape CNCF (https://landscape.cncf.io). Da qui capiremo quali siano i benefici nel breve, medio e lungo termine e quali passi iniziare a fare per avviare questa strategia.
2. Un “Legacy System”:
● E’ disegnato e scritto male (ha un debito tecnico elevato)
● Non si riesce a far evolvere in modo semplice
● Ha un costo di manutenzione alto
● Genera instabilità durante i rilasci e conseguentemente crea un rischio di business
● Usa tecnologie obsolete (non si trovano più Dev e Ops che sanno gestirlo)
2
3. Perché
Legacy ha
bisogno di
evolvere
● Rendere self service i processi gestionali
interni (es: aprire un sinistro, comprare un
abbonamento con la tessera). Da 100
persone al giorno a milioni di persone al
giorno. Il legacy non scala e bloccherebbe i
processi aziendali
● Accelerare la sperimentazione senza
impattare sui sistemi core.
● Ridurre i costi di manutenzione
3
8. ● Rende trasparente la complessità della
gestione di sistemi distribuiti (mi piace
vedere k8s come un “sistema operativo
distribuito”
● Consente di isolare le responsabilità dei vari
componenti
● Le API di k8s stanno diventando standard
grazie alla CNCF (per cui meno lockin e
maggior stabilità tecnica nel tempo)
8
9. k8s è la nostra infrastruttura invisibile dove
costruire le applicazioni moderne
9
24. 24
SPA with
Microservices
Backend for Frontend
(BFF)
API
Static Assets
HTML/CSS/JS
Gateway
/api/*
/static/*
Microservice Microservice Microservice
DB DB DB
25. 25
E se avessimo più canali? Un BFF
per tutte le esigenze? Abbiamo le
stesse esperienze utente e le stessi
API?
Backend for Frontend
(BFF)
API
Static Assets
HTML/CSS/JS
Gateway
/api/*
/static/*
Microservice Microservice Microservice
DB DB DB
27. 27
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Come comunico con loro?
28. 28
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Punto-punto? Appesantisco!
29. 29
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Change Data Events
30. 30
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Change Data Events
Message
Broker
31. 31
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Change Data Events
Message
Broker
Data Stream Aggregator
DB
32. 32
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Change Data Events
Message
Broker
Data Stream Aggregator
DBDB
Data Reader
33. 33
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Message
Broker
Change Data Events
Data Stream Aggregator
DB
Data Reader
34. 34
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Message
Broker
Change Data Events
Data Stream Aggregator
DB
Data Reader
35. 35
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Message
Broker
Change Data Events
Data Stream Aggregator
DB
Data Reader
36. 36
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Message
Broker
Change Data Events
Data Stream Aggregator
DB
Data Reader
37. 37
E se avessimo bisogno di dati da
sistemi legacy?
/api/*
Microservice Microservice Microservice
/static/*
Gateway
Legacy Systems
DB DB
DB
Message
Broker
Change Data Events
Data Stream Aggregator
DB
Data Reader