← Extractions

Events events events — Anton Davydov on Event Sourcing in Ruby

Anton Davydov's wroclove.rb 2019 talk introducing event sourcing: storing immutable events as source of truth, replaying them into projections, using streams and snapshots, and integrating with Ruby via Ruby Event Store and his own hanami-events gem. Covers trade-offs, data evolution, sagas, CQRS, DDD, and fielded Q&A on GDPR erasure, searching, and cost.

Model
claude-opus-4-7
Ingestion
352a1835
Input tokens
354,870
fresh
252,318
cached
93,822
cache write
8,730
Output tokens
12,342
Duration
196.9s
Roundtrips
8
Tool calls
25
Cost
$0.00
Nodes/edges extracted
19 / 38
Read set (nodes/edges)
131 / 4

Nodes (19)

update Anton Davydov person
attrs (empty) {"role" => "software developer / technical consultant", "location" => "Moscow, Russia"}
description Conference speaker. Russian software developer from Moscow. Works at Hippo, an American startup, as an open-source developer and technica...
short_description Conference speaker. Russian Ruby developer based in Moscow; open-source developer and event-sourcing advocate.
update Events events events talk
description Talk at wroclove.rb 2019. Anton Davydov's wroclove.rb 2019 talk. Introduces event sourcing as a pattern of persisting what happened (immutable ...
short_description Talk at wroclove.rb 2019. Anton Davydov's wroclove.rb 2019 talk introducing event sourcing in Ruby.
update Event Sourcing concept
description Persistence approach where business-relevant facts ('events') are appended to an immutable event store and aggregate ... Persistence approach where business-relevant facts ('events') are appended to an immutable event store and aggregate ...
create Event Stream concept
kind (empty) concept
name (empty) Event Stream
slug (empty) event-stream
attrs (empty) {"category" => "pattern"}
description (empty) Partitioning strategy in event sourcing where events related to a single aggregate (e.g. one order, one ice-cream bus...
short_description (empty) Per-aggregate partition of an event log enabling scoped replay.
create Data Evolution concept
kind (empty) concept
name (empty) Data Evolution
slug (empty) data-evolution
attrs (empty) {"category" => "practice"}
description (empty) Challenge unique to event-sourced systems: because stored events are immutable, you cannot rename or delete fields af...
short_description (empty) Evolving immutable event schemas over time via optional fields, versions, and binary formats.
create Projection Function concept
kind (empty) concept
name (empty) Projection Function
slug (empty) projection-function
attrs (empty) {"category" => "pattern"}
description (empty) Function taking three arguments — a reducer/block, a list of events, and an initial state — and returning new state. ...
short_description (empty) Pure fold over an event stream producing current or derived state.
create hanami-events tool
kind (empty) tool
name (empty) hanami-events
slug (empty) hanami-events
attrs (empty) {"category" => "library"}
description (empty) Ruby gem built by Anton Davydov providing an event-driven transport layer with pluggable adapters. Event versions and...
short_description (empty) Anton Davydov's Ruby gem for event-driven transport in Hanami apps.
create Hippo company
kind (empty) company
name (empty) Hippo
slug (empty) hippo
attrs (empty) {"industry" => "startup"}
description (empty) American startup. Anton Davydov works there as an open-source developer and technical consultant.
short_description (empty) American startup where Anton Davydov works as open-source developer.
create Designing Data-Intensive Applications resource
kind (empty) resource
name (empty) Designing Data-Intensive Applications
slug (empty) designing-data-intensive-applications
attrs (empty) {"type" => "book"}
description (empty) Book on the architecture of data-intensive systems covering storage, replication, partitioning, transactions, consist...
short_description (empty) Martin Kleppmann's book on data systems, highly recommended for event sourcing.
create awesome-ddd resource
kind (empty) resource
name (empty) awesome-ddd
slug (empty) awesome-ddd
attrs (empty) {"type" => "repository"}
description (empty) GitHub 'awesome' list aggregating DDD implementations and resources across languages and communities. Davydov uses it...
short_description (empty) Curated GitHub list of Domain-Driven Design implementations and resources.
create Martin Fowler person
kind (empty) person
name (empty) Martin Fowler
slug (empty) martin-fowler
description (empty) Software author and thought leader. Referenced by Davydov as having described a 'reactive' approach to deleting user-...
short_description (empty) Software author, referenced for reactive GDPR-deletion approach.
update Saga Pattern concept
description Pattern (also referred to as a distributed service manager / process manager) used to deal with reactor synchronizati... Pattern (also referred to as a distributed service manager / process manager) used to deal with reactor synchronizati...
update Apache Kafka tool
description Distributed log/streaming platform that some companies use to store events (with log compaction). Pašalić doesn't rec... Distributed log/streaming platform that some companies use to store events (with log compaction). Pašalić doesn't rec...
create Event Sourcing Is About State Not Distribution takeaway
kind (empty) takeaway
name (empty) Event Sourcing Is About State Not Distribution
slug (empty) event-sourcing-is-about-state-not-distribution
attrs (empty) {"type" => "insight"}
description (empty) Davydov's emphasized closing point: event sourcing is not a distributed-systems pattern and is not about communicatin...
short_description (empty) Event sourcing solves state persistence, not inter-service communication.
create Event Sourcing Is Not A Silver Bullet takeaway
kind (empty) takeaway
name (empty) Event Sourcing Is Not A Silver Bullet
slug (empty) event-sourcing-is-not-a-silver-bullet
attrs (empty) {"type" => "warning"}
description (empty) Davydov's conclusion: event-based architecture sometimes wins and sometimes doesn't. Event sourcing is 'simple' the w...
short_description (empty) Event-based architecture fits some systems and not others.
create Three Ways To Delete User Data In Event-Sourced Systems takeaway
kind (empty) takeaway
name (empty) Three Ways To Delete User Data In Event-Sourced Systems
slug (empty) three-ways-to-delete-user-data-in-event-sourced-systems
attrs (empty) {"type" => "recommendation"}
description (empty) Davydov surveys three approaches to deleting user-related data from an immutable event store: (1) Martin Fowler's rea...
short_description (empty) GDPR erasure options: reactive (Fowler), encrypt-and-lose-key, or Kafka compaction.
create How to comply with right-to-be-forgotten given future quantum computers? question
kind (empty) question
name (empty) How to comply with right-to-be-forgotten given future quantum computers?
slug (empty) how-to-comply-with-right-to-be-forgotten-given-future-quantum-computers
attrs (empty) {"answer_summary" => "Encrypt-and-lose-key may not survive quantum computing. Alternative from Polish banking/blockch...
description (empty) Audience member cites a lawyer arguing encrypt-and-lose-key is insufficient because future quantum computers may decr...
short_description (empty) Q&A on GDPR erasure durability against future decryption capabilities.
create How do you search across millions of events for top items? question
kind (empty) question
name (empty) How do you search across millions of events for top items?
slug (empty) how-do-you-search-across-millions-of-events-for-top-items
attrs (empty) {"answer_summary" => "Maintain a search-optimized read model (e.g. Elasticsearch) updated as events arrive; use it to...
description (empty) Audience asks how to search for things like 'most attractive items' when state requires processing millions of events...
short_description (empty) Q&A on searching event-sourced data efficiently.
create Is event sourcing more expensive long-term, and how to reduce cost? question
kind (empty) question
name (empty) Is event sourcing more expensive long-term, and how to reduce cost?
slug (empty) is-event-sourcing-more-expensive-long-term-and-how-to-reduce-cost
attrs (empty) {"answer_summary" => "Short-term it's more expensive; long-term it can pay off where state history matters. Reduce co...
description (empty) Audience (a self-described event-sourcing proponent) asks whether event sourcing remains more expensive in the long r...
short_description (empty) Q&A on long-term cost of event sourcing and how to lower it.

Edges (38)

update Anton DavydovauthoredEvents events events
context (empty) Speaker of the wroclove.rb 2019 talk.
update Events events eventspresented_atwroclove.rb 2019
context (empty) Talk given on the last day of wroclove.rb 2019 in Wrocław.
update Anton Davydovattendedwroclove.rb 2019
context Gave the following day's event-sourcing talk referenced by Dimitry. Attended and spoke at wroclove.rb 2019; first time in Poland.
create Anton Davydovworks_atHippo
attrs (empty) {"role" => "open-source developer / technical consultant"}
context (empty) Works at Hippo as open-source developer and technical consultant.
relation (empty) works_at
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) 67976225-73a1-4a0f-b637-c0325bcee2c5
create Anton Davydovworks_onhanami-events
attrs (empty) {"role" => "author/maintainer"}
context (empty) Built the hanami-events gem as an event-driven transport layer for Hanami.
relation (empty) works_on
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) a00d49a6-7310-47ee-a203-dd20a51a02bf
create Events events eventsaboutEvent Sourcing
context (empty) Core subject: introducing event sourcing to Ruby developers.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create Events events eventsaboutEvent Store
context (empty) Explains the event store as append-only immutable persistence.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 41e612ae-2c1f-4a3c-8690-d47ac47e0174
create Events events eventsaboutEvent Stream
context (empty) Introduces per-aggregate streams to speed up projection.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 8c314bcf-2bbd-4b0d-b2aa-5cdc649e632d
create Events events eventsaboutProjection Function
context (empty) Shows projection as a pure fold over events with initial state.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 5579c4cc-5f37-45e8-a326-d9704574ec9c
create Events events eventsaboutSnapshotting
context (empty) Proposes caching computed state as a snapshot to avoid re-folding every time.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 0c37afd4-ec51-45d4-976d-ed8c6e0a7321
create Events events eventsaboutData Evolution
context (empty) Discusses evolving event schemas via optional fields, versions, and binary formats.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) f0354163-7e11-40af-9a91-df2661c0b692
create Events events eventsaboutSaga Pattern
context (empty) Introduces sagas as business transactions modeled as state machines.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) b9cda322-dd18-40b0-84d9-b7e002665b86
create Events events eventsaboutCQRS
context (empty) Briefly covers CQRS with read model and write model as the next pattern after sagas.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 8918002a-9def-4449-a187-e3052bf175b5
create Events events eventsaboutDomain-Driven Design
context (empty) Recommends DDD for detecting which events to store and splitting the system by domain.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Events events eventsaboutApache Kafka
context (empty) Lists Kafka as a possible event-storage backend and cites karafka for Kafka in Ruby.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 1b0879e9-de0e-43d5-bdb0-401ccf75dde0
create Events events eventsaboutRuby Event Store
context (empty) Recommended Ruby gem for event sourcing, used in production.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) ba216251-e7a9-4e9d-96e1-6412234140c2
create Events events eventsabouthanami-events
context (empty) Presents speaker's own gem as a lightweight event-driven transport option.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) a00d49a6-7310-47ee-a203-dd20a51a02bf
create Events events eventsaboutHanami
context (empty) Demonstrates integrating event sourcing with Hanami actions.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 9e549b38-6071-4b4d-88ea-ca5c3d86afa7
create Events events eventsaboutawesome-ddd
context (empty) Cited as a source of DDD/event-sourcing implementations outside the Ruby world.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) fb515043-4599-401a-9894-8a0616b73f0c
create Events events eventsaboutDesigning Data-Intensive Applications
context (empty) Recommended five times during the talk as the canonical data/data-evolution reference.
relation (empty) about
source_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
target_node_id (empty) 330a323f-4a93-42c6-a6a6-93a93d58f829
create Anton DavydovrecommendsDesigning Data-Intensive Applications
context (empty) Shown five times on slides and explicitly recommended for data evolution and distribution topics.
relation (empty) recommends
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) 330a323f-4a93-42c6-a6a6-93a93d58f829
create Anton DavydovrecommendsRuby Event Store
context (empty) Identifies it as a production-ready Ruby gem for event sourcing.
relation (empty) recommends
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) ba216251-e7a9-4e9d-96e1-6412234140c2
create Anton Davydovrecommendsawesome-ddd
context (empty) Points audience to the awesome-ddd GitHub list for implementations and ideas.
relation (empty) recommends
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) fb515043-4599-401a-9894-8a0616b73f0c
create Anton DavydovrecommendsDomain-Driven Design
context (empty) Suggests DDD as a way to split the system and choose which events to store.
relation (empty) recommends
source_node_id (empty) 1e0f75d3-87ae-490e-b066-1ba0f800bec7
target_node_id (empty) 6e2f88bd-e521-41a3-91d4-aeb5f8fd2486
create Event Sourcing Is About State Not Distributionfrom_talkEvents events events
context (empty) Takeaway emphasized in the closing conclusions.
relation (empty) from_talk
source_node_id (empty) e096f2de-2b6d-4546-b600-8d227aeb3ec2
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create Event Sourcing Is Not A Silver Bulletfrom_talkEvents events events
context (empty) Stated explicitly in the talk's conclusions.
relation (empty) from_talk
source_node_id (empty) 646140ad-e412-4ef2-8537-cbbffb187372
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create Three Ways To Delete User Data In Event-Sourced Systemsfrom_talkEvents events events
context (empty) Advising section on GDPR-style deletion strategies.
relation (empty) from_talk
source_node_id (empty) 33728cc5-b95b-47e5-b9d6-c1832bdb2116
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create Event Sourcing Is About State Not DistributionaboutEvent Sourcing
context (empty) Takeaway clarifies the scope of event sourcing.
relation (empty) about
source_node_id (empty) e096f2de-2b6d-4546-b600-8d227aeb3ec2
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create Event Sourcing Is Not A Silver BulletaboutEvent Sourcing
context (empty) Warning about over-application of event sourcing.
relation (empty) about
source_node_id (empty) 646140ad-e412-4ef2-8537-cbbffb187372
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create Three Ways To Delete User Data In Event-Sourced SystemsaboutEvent Sourcing
context (empty) Approaches apply specifically to event-sourced systems.
relation (empty) about
source_node_id (empty) 33728cc5-b95b-47e5-b9d6-c1832bdb2116
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create Three Ways To Delete User Data In Event-Sourced SystemsaboutMartin Fowler
context (empty) Cites Martin Fowler as source of the reactive approach.
relation (empty) about
source_node_id (empty) 33728cc5-b95b-47e5-b9d6-c1832bdb2116
target_node_id (empty) 33f22dea-eae4-4b70-969f-4d51b3c8924c
create How to comply with right-to-be-forgotten given future quantum computers?asked_atEvents events events
context (empty) Audience question during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 1ceeeae7-9026-4128-b42f-7c33344e00ed
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create How do you search across millions of events for top items?asked_atEvents events events
context (empty) Audience question during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 1b893caa-7a29-4dbb-b9a2-61f7fa8085b8
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create Is event sourcing more expensive long-term, and how to reduce cost?asked_atEvents events events
context (empty) Audience question during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) ed6fe3ea-82bd-4197-8470-20b219be847e
target_node_id (empty) 43a82c04-35a9-48fe-b93a-b3ab57e5c0be
create How to comply with right-to-be-forgotten given future quantum computers?aboutEvent Sourcing
context (empty) Concerns GDPR compliance in immutable event-sourced systems.
relation (empty) about
source_node_id (empty) 1ceeeae7-9026-4128-b42f-7c33344e00ed
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create How do you search across millions of events for top items?aboutSnapshotting
context (empty) Relates to using snapshots/read models for fast search across events.
relation (empty) about
source_node_id (empty) 1b893caa-7a29-4dbb-b9a2-61f7fa8085b8
target_node_id (empty) 0c37afd4-ec51-45d4-976d-ed8c6e0a7321
create Is event sourcing more expensive long-term, and how to reduce cost?aboutEvent Sourcing
context (empty) Asks about the total cost of event sourcing.
relation (empty) about
source_node_id (empty) ed6fe3ea-82bd-4197-8470-20b219be847e
target_node_id (empty) 687c9da2-de87-4fb2-a758-c7498f394fd5
create hanami-eventsrelated_toHanami
context (empty) Designed for the Hanami ecosystem.
relation (empty) related_to
source_node_id (empty) a00d49a6-7310-47ee-a203-dd20a51a02bf
target_node_id (empty) 9e549b38-6071-4b4d-88ea-ca5c3d86afa7

Read set

131 nodes

tool Rails Event Store Event Browser search_nodes concept Event Sourcing search_nodes takeaway Event Sourcing Mind Shift Trade-off search_nodes concept Event Store search_nodes takeaway Use CQRS And Event Sourcing Independently search_nodes takeaway Hiring For Event Sourcing Trade-off search_nodes concept Snapshotting search_nodes takeaway Event Sourcing Enables Distribution search_nodes question How to migrate legacy data into an event-sourced system? search_nodes question Can you do DDD without event sourcing? search_nodes talk Event Sourcing and Actor model in Ruby search_nodes talk MVCC for Ruby developers search_nodes person Julik Tarkhanov search_nodes person Louis Antonopoulos search_nodes project Ruby Romania search_nodes person Adam Okoń search_nodes talk Scientific Ruby Lightning Talk search_nodes person Emiliano Della Casa search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes person Nicolò Rebughini search_nodes tool TruffleRuby search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2025 search_nodes talk Building LLM powered applications in Ruby search_nodes talk Towards the post framework future search_nodes talk Data Management With Ruby search_nodes tool Hanami search_nodes project monolith framework search_nodes concept Cynefin Framework search_nodes talk Extracting logic from templates with Hanami Views search_nodes tool Rack search_nodes tool Ruby on Rails search_nodes talk Building Rails SPAs in Frontend Ruby with Glimmer DSL for Web search_nodes tool Ember.js search_nodes tool Apache Kafka search_nodes concept Entity Caching and Snapshotting search_nodes question How to handle very large event volumes over time? search_nodes concept Reservation Pattern search_nodes question Do events store current state, and how does replay perform? search_nodes question What is the biggest challenge with this approach? search_nodes tool rails_event_store search_nodes tool Ruby Event Store search_nodes takeaway rails_event_store is the most productive DDD tool in Ruby search_nodes tool Entity Store search_nodes project rails_event_store/ecommerce search_nodes question Can parts of Eventide, Rails Event Store and Trailblazer be combined in one project? search_nodes project Event Store (project) search_nodes talk Applying CQRS & Event Sourcing on Rails applications search_nodes concept Domain-Driven Design search_nodes resource Implementing Domain-Driven Design search_nodes resource Domain-Driven Design: Patterns, Principles and Practices search_nodes talk Might & Magic of Domain-Driven Design search_nodes talk The pillars of Domain Driven Design search_nodes question Does DDD require object-oriented programming? search_nodes resource Domain-Driven Rails search_nodes question How to apply DDD when the client refuses to learn ubiquitous language? search_nodes takeaway Risks of DDD: Hierarchy, Perfectionism, Constraints search_nodes concept Domain Storytelling search_nodes person Martin Gamsjaeger search_nodes concept DDD Whirlpool search_nodes person Eric Evans search_nodes person Bertrand Meyer search_nodes resource Object-Oriented Software Construction search_nodes concept Developer vs Programmer search_nodes talk Development with axioms search_nodes concept Architecture Drivers search_nodes concept Distributed Monolith search_nodes takeaway Eventual Consistency Trade-off search_nodes talk Adventures in durable execution search_nodes concept CQRS search_nodes takeaway Build APIs with immutability, EDN, context-free, flat search_nodes takeaway Silver Bullet Anti-Pattern search_nodes resource Domain-Driven Design: Tackling Complexity in the Heart of Software search_nodes person Anton Davydov search_nodes+get_node_edges takeaway Name Things To Find Their Properties search_nodes tool RealtimeBoard search_nodes talk Forms Are Dead: Building Agentic Workflows in Ruby search_nodes tool actions/upload-artifact search_nodes concept GitHub Self-Hosted Runner search_nodes tool Faker search_nodes tool GraphQL search_nodes concept Event Bus search_nodes tool EventMachine search_nodes concept Rails Reload-Safe ES Configuration search_nodes concept Event Handler Error Strategy search_nodes project Eventide search_nodes concept Saga Pattern search_nodes question How is the event-write kept consistent with external operations? search_nodes question How do you order events across distributed systems? search_nodes project aggregates repository search_nodes takeaway Contribute to Arkency aggregates repository search_nodes question Is layered DDD really junior-friendly? search_nodes question Is building DDD from scratch too slow for the business? search_nodes question How to do DDD remotely? search_nodes question Does DDD apply to startups? search_nodes talk Securing Rails applications search_nodes concept Vector Clock search_nodes concept Offline-First search_nodes company Transloadit search_nodes takeaway Buy Faster Hardware search_nodes company SpaceX search_nodes concept Logux Proxy search_nodes concept Direct Upload to Cloud search_nodes tool knapsack_pro search_nodes tool webpagetest.org search_nodes talk Events events events search_nodes+get_node_edges talk Offline Sandwich Focus Workflow search_nodes concept Command UUID Deduplication search_nodes takeaway Time Travel Superpower search_nodes talk Fantastic Databases and Where to Find Them search_nodes concept View-Biased Event Schemas search_nodes question How does GDPR deletion work if encrypted events are in backups? search_nodes concept Unique Per-Site Email Leak Detection search_nodes question How do you deal with GDPR in an immutable event store? search_nodes takeaway Use Unique Per-Site Emails To Catch Leaks search_nodes concept Breadth-First Search for Code Removal search_nodes talk Multi-region data governance in Rails application search_nodes talk Removing Code with Breadth-First Search search_nodes concept Entity Projection search_nodes takeaway Replay-Based Debugging search_nodes concept Idempotent Projectors and Reactors search_nodes resource Introducing EventStorming search_nodes question Cross-tenant aggregation with row-level multi-tenancy search_nodes person Andrzej Krzywda search_nodes company Arkency search_nodes question Where do you read from without event sourcing? search_nodes

4 edges