15

Mokapp - Serveless

Embed Size (px)

Citation preview

Page 1: Mokapp - Serveless
Page 2: Mokapp - Serveless

Lorenzo Maiorfi

[email protected]

Serverless, actor-based,

flow-oriented e altri

gustosi pattern per lo

sviluppo di backend a

microservizi

#microservices #stateless #flowmodel #actormodel

Page 3: Mokapp - Serveless

Razionalizzare il back-end!

• Transaction Script?

• Active Record?

• DDD?

• CQRS?

• SOA?

• ???

Page 4: Mokapp - Serveless

Modularizzare il back-end!

Il modello a «microservizi» è allettante,

ma come implemento…

• Affidabilità?

• Disponibilità?

• Scalabilità?

• Performance?

Page 5: Mokapp - Serveless

Vogliamo provare…

• Serverless «lambda»-style

• Flow-oriented model

• Actor-based model

modello ≠ tecnologia!

Page 6: Mokapp - Serveless

«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.)

Page 7: Mokapp - Serveless

«lambda»-style

Stateless / Stateful

Stateless:

• Semplice

Stateful:

• Quando, dove, come e in che termini

persistere lo stato?

• Come orchestrare i «Durable Task»?

Page 8: Mokapp - Serveless

«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…)

Page 9: Mokapp - Serveless

«lambda»-style

Demo Stateful (durable functions)

1. Sequence

2. Fan-Out / Fan-In

3. Stateful Singleton

4. Human Interaction

Page 10: Mokapp - Serveless

«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

Page 11: Mokapp - Serveless

«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»

Page 12: Mokapp - Serveless

«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!

Page 13: Mokapp - Serveless

«actor»-styleDemo

• Remotizzazione interazione Actors

• Clustering

• Supervisione gerarchica

• Persistenza

• Comportamento basato su stato

• Modello «middleware» a pipeline

Page 14: Mokapp - Serveless

CV (e qualsiasi altra cosa riteniate

interessante da valutare) a:

[email protected]