4. Modularizzare il back-end!
Il modello a «microservizi» è allettante,
ma come implemento…
• Affidabilità?
• Disponibilità?
• Scalabilità?
• Performance?
6. «lambda»-style
Trigger Task
• Concettualmente è
• Trigger di molti tipi (webhook, eventi di
servizi cloud di ingestion, UI, ecc.)
• Scalabililtà (scale-up, scale-out),
sicurezza, affidabilità e disponibilità
fornite dalla piattaforma (AWS Lambda,
Azure Functions, ecc.)
8. «lambda»-style
Demo Stateless
1. Azure Function (online) che processa
un webhook
2. Azure Function (offline) time-triggered
che invoca una API http-rest e
«pusha» messaggi in una coda
3. (+ applicazione NodeJS che processa
la coda…)
10. «flow»-style
Event driven (ogni messaggio è un evento
di attivazione di un flusso)
Intrinsecamente asincrono
Stateless per natura (e stateful a fatica)
Eccellente per sviluppare servizi adapter
di altri microservizi
La killer application è un «ingestor» IoT
11. «flow»-style
1. Node-Red, di IBM Engineering
Services, basato su NodeJS,
lightweight, adattissimo a scenari
«embedded»
2. Apache Ni-Fi, basato su Java,
rigoroso e strutturato, enterprise in
tutto e per tutto, ma molto più
«pesante»
12. «actor»-style
Il «modulo» è un attore, ossia
un tipo di oggetto con stato e
comportamento, ma che «parla»
con gli altri attori
ESCLUSIVAMENTE inviando e
ricevendo messaggi.
Intrinsecamente «protetto» da
potenziali race-conditions
perché single-threaded, scala
da paura!