Hemos terminado de leer ""Emergent Design: The Evolutionary Nature of Professional Software Development", y estamos buscando un nuevo libro para leer, indicad en un comentario vuestras propuestas (máximo 3), dejamos de margen hasta el final del 11 de febrero.
Hemos terminado de leer "Tidy First?", libro muy recomendable, y estamos buscando un nuevo libro para leer, indicad en un comentario vuestras propuestas (máximo 3), dejamos de margen hasta el final del 31 de octubre.
Event Sourcing and Message Streaming are NOT the same things. Kafka is NOT suitable for Event Sourcing. Kafka is suitable for Message Streaming.
There are important reasons why these two different things require *different storage mechanics*. I'm going to simplify this by naming the two different kinds of storage:
1. Event Sourcing requires a *database* to serve as an *event journal*. Events stored for Event Sourcing must be written in a way that enables future reads to quickly assemble small(er) streams of events that belong to the single Aggregate that originally emitted them. This requires a random access index.
2. Message Streaming requires storage that is essentially a *flat file* that logs message elements. The message elements are individually written in sequential order and later read in sequential order. This requires one first-to-last sequential index.
Based on these two fundamental points, I now break this down further into details:
3. Now, beyond Aggregate sub-streams, all events of an Event Sourced domain model are generally consumed as a totally-ordered stream of events in the *time* order that they were originally emitted by Aggregates. To do so *also* requires a sequential index. Thus, an Event Sourcing *database* must support *two* kinds of indexes.
4. Kafka is *NOT* suitable for an Event Sourcing *database*. What is the name of the concept under which *messages* are *logged*? It's a *topic*. Kafka is a message log that can have many topics. Kafka has *one single index*, which is the sequence number of the *totally ordered stream of messages*.
5. Therefore, after writing messages into a Kafka topic, they cannot be read randomly because the random access index doesn’t exist. Kafka was not designed for this.
6. With Kafka, if you need to read the small(er) streams of events originally emitted by single Aggregate instances, you would have to scan an entire topic from the first message to the last message to ensure you didn’t miss reading all events in one of the individual Aggregate streams. This would cause O(N) read time--reads become slower as every new message is written to the topic. You have 1 billion total events and you need to read any 5 of those as an individual Aggregate event stream? "Ain't-gonna-happen."
For the really stubborn people who think they can outsmart physics, I'll add a few more points:
7. "I know, I know! I'll use a different topic for each Aggregate instance!" That's okay if Kafka was designed to support millions to billions to trillions of topics under a single broker. It wasn't.
8. "I know, I know! I'll use a K-Table to maintain snapshots of each Aggregate instance so I can read them quickly!" Reconstituting the state of an Aggregate must take priority over consuming a totally ordered stream of all events. If you try this, your K-Table snapshots will be only eventually consistent with the *real current Aggregate state*--the Aggregate can't reliably read it's own state.
The End.
¡Estamos súper contentos de poder patrocinar la edición de este año de @BilboStack#bilbostack24!
Nos vemos el próximo Sábado 27 en Bilbao, acercaos por nuestro stand a saludar y llevaros vuestros regalinchissssss
Pues amigas, @SEUR@SEUR_responde lo ha vuelto a hacer. Pedido marcado como "no se pudo entregar" cuando ha habido gente en casa TODO el día esperando la entrega
20kg de paquete y ahora tengo que recogerlo yo
Qué desastre de gestión. Y encima, amenazando con devolver el paquete.
📢Sesiones Canal Youtube📢
Hoy publicamos la charla de @luismanez & @olgaamarti en la que nos hablaron sobre Plugins, Functions, Memories y más con Semantic Kernel y Azure Open AI Te la vas a perder?
📅https://t.co/iiPgPXYddo
¿Alguien quiere compartir experiencias de mejoras de calidad del código basadas en datos (además de opiniones)? Tengo dudas de que el análisis estático dé información útil y las métricas de estabilidad y costes de los evolutivos son demasiado tardías. ¿Alguna idea novedosa?
Estamos haciendo cosas superchulas en Exeal que creo que merecen ser contadas, pero tbh entre llevar la empresa, formar a la gente y visibilizarlo no me da la vida
Conocéis a alguien que sepa de comunicación y marketing y del mundo tech que le interesara trabajar conmigo?
Hey! Jo no he sigut afectada però bastanta gent del meu voltant sí. Si busqueu enginyers, dissenyadors, responsables d'equips i producte ... Conec a gent MOLT bona amb la que ha sigut un plaer treballar amb ells 🫶
As always, it's a great pleasure to work closely with @islomar . And as things always come in threes, I'm sure we will work together again.
📢: Seize the chance to speak with Isidro and explore the opportunity of working together. ou'll thank me later.
Hemos terminado de leer "Design and Reality", y estamos buscando nuevo libro para leer.
Indicadnos en un comentario vuestras propuestas (máximo 3 sugerencias), dejamos de margen hasta el final del 30 de noviembre.