Forum: Italian Ruby user group Event sourcing gem released

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F9710475ef25a597270fb24ec3298883?d=identicon&s=25 Antonio Carpentieri (Guest)
on 2015-05-07 19:10
(Received via mailing list)
Ciao a tutti,

Non ho capito se l'alto messaggio che avevo inviato alla lista
arrivato,
nel dubbio rimando.

S

egnalo a chi fosse interessato all'argomento che dei miei amici hanno
rilasciato (finalmente dopo 2 anni

di pressing

:) ) le gemme che hanno utilizzato nei loro progetti interni per
implementare CQRS+ES.

Lars mi aveva fatto "spiare" durante una conf un po' di codice
direttamente
dal progetto del cliente, ora me le studiero'.

qui [1]

trovate le slide della loro sessione di 2 o 3 anni fa non ricordo piu'
:P

A

[1]
http://gotocon.com/dl/goto-amsterdam-2013/slides/B...

---------- Forwarded message ---------
Date: Fri, Apr 3, 2015 at 2:54 PM
Subject: Event sourcing gem released

Hi Antonio,

I would like to let you know we finally released our event sourcing gem:

https://github.com/zilverline/sequent

https://github.com/zilverline/sequent-sinatra

https://github.com/zilverline/sequent-examples

And on Ruby gems:

https://rubygems.org/gems/sequent

https://rubygems.org/gems/sequent-sinatra

Feedback is appreciated.

Best regards
Ff2c5ef7c7d38d18c3cd39d951cc5a07?d=identicon&s=25 Stefano Pigozzi (Guest)
on 2015-05-08 10:31
(Received via mailing list)
2015-05-07 19:10 GMT+02:00 Antonio Carpentieri <a.carpe@gmail.com>:
> Non ho capito se l'alto messaggio che avevo inviato alla lista  arrivato,
> nel dubbio rimando.

A me non era arrivato niente, hai fatto bene a rimandare!

> Segnalo a chi fosse interessato all'argomento che dei miei amici hanno
> rilasciato (finalmente dopo 2 anni di pressing :) ) le gemme che hanno
> utilizzato nei loro progetti interni per implementare CQRS+ES.

L'approccio  molto interessante, me lo studier a fondo. Ci sono un po'
di
punti che non mi sono chiari: per esempio, se due handler possono
reagire
allo stesso evento (gli eventi vengono mandati in broadcast a tutti gli
handler
vero?).

Devo ammettere per che i problemi che lamentano nella presentazione
per zero downtime deployment e scaling mi fanno un po' paura.

Credo che questo stile di programmazione potrebbe essere portato molto
bene su un linguaggio come Elixir (1 actor per handler, pattern match
degli
eventi da parte degli handler).
F9710475ef25a597270fb24ec3298883?d=identicon&s=25 Antonio Carpentieri (Guest)
on 2015-05-08 15:56
(Received via mailing list)
On Fri, May 8, 2015 at 10:31 AM Stefano Pigozzi
<stefano.pigozzi@gmail.com>
wrote:
>
> L'approccio  molto interessante, me lo studier a fondo. Ci sono un po'
> di punti che non mi sono chiari: per esempio, se due handler possono
> reagire allo stesso evento (gli eventi vengono mandati in broadcast a tutti
> gli handler vero?).
>
Esatto, l'event store fa anche da pubsub ad esempio in sequent l'event
store ha questo pezzo di codice:

def commit_events(command, events)
  store_events(command, events)
  publish_events(events, @event_handlers)end

Potresti anche decidere di delegare completamente ad un event store
esterno
come ad esempio (https://geteventstore.com/)


> Devo ammettere per che i problemi che lamentano nella presentazione per
> zero downtime deployment e scaling mi fanno un po' paura.
>

Per quello che ho studiato io in realta' non vedo grossi problemi, provo
a
spiegarmi sapendo che e' un argomento che meriterebbe una mail a parte.
Il prerequisito, ovviamente, e' avere almeno 2 istanze dell'applicazione
e
l'event store che fa da pubsub disaccoppiato dalle istanze.
Aggiorni la prima istanza, che iniziera' a lanciare nuovi eventi per cui
la
seconda istanza non si e' registrata e quindi non si rompera' ma a cui
rispondera' solamente la prima gia' aggiornata. Dopo procedi
all'aggiornamento della seconda.
Prova a vedere i punti 7 e 8 di questo articolo:
http://cqrs.wikidot.com/case:lokad-hub


DDD (figuriamoci poi con ES) e' sicuramente 'troppo' quando stiamo
facendo
un CRUD ma quando iniziamo ad dover affrontare un problema interessante
da
risolvere, unito a tecniche come Event Storming semplifica enormemente
la
vita (ma qui sto parlando con la voce di amici che hanno gia' messo in
produzione).


>
> Credo che questo stile di programmazione potrebbe essere portato
> molto bene su un linguaggio come Elixir (1 actor per handler, pattern match
> degli eventi da parte degli handler).
>

La tua intuizione e' corretta :), tratto da Implementing DDD:

However, Event Sourcing is inherently functional in nature. Thus, it can
be
successfully implemented with functional languages such as F# and
Clojure.
Doing so could potentially lead to more concise code that performs
optimally.
  qui puoi trovare una bozza semplicistica di implementazione con
elixir:
https://github.com/belgian-elixir-study-group/cqrs...

un collega sta facendo un poc con Scala e Akka-persistence ma i concetti
son quelli.

Happy hacking :)
A

_______________________________________________
217fa9b23f7dc0016b64fb0edc89382d?d=identicon&s=25 Giovanni Messina (gmgp)
on 2015-05-08 19:23
(Received via mailing list)
da studiare con calma..,
ma sarebbe interessante vederlo al rubyday ;-)

Gio

2015-05-08 15:55 GMT+02:00 Antonio Carpentieri <a.carpe@gmail.com>:
This topic is locked and can not be replied to.