Upload
lorenzo-maiorfi
View
88
Download
3
Embed Size (px)
Citation preview
Lorenzo Maiorfi
Serverless, actor-based,
flow-oriented e altri
gustosi pattern per lo
sviluppo di backend a
microservizi
#microservices #stateless #flowmodel #actormodel
Razionalizzare il back-end!
• Transaction Script?
• Active Record?
• DDD?
• CQRS?
• SOA?
• ???
Modularizzare il back-end!
Il modello a «microservizi» è allettante,
ma come implemento…
• Affidabilità?
• Disponibilità?
• Scalabilità?
• Performance?
Vogliamo provare…
• Serverless «lambda»-style
• Flow-oriented model
• Actor-based model
modello ≠ tecnologia!
«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.)
«lambda»-style
Stateless / Stateful
Stateless:
• Semplice
Stateful:
• Quando, dove, come e in che termini
persistere lo stato?
• Come orchestrare i «Durable Task»?
«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…)
«lambda»-style
Demo Stateful (durable functions)
1. Sequence
2. Fan-Out / Fan-In
3. Stateful Singleton
4. Human Interaction
«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
«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»
«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!
«actor»-styleDemo
• Remotizzazione interazione Actors
• Clustering
• Supervisione gerarchica
• Persistenza
• Comportamento basato su stato
• Modello «middleware» a pipeline
Lorenzo Maiorfi
www.innovactive.it