← Extractions

How To Ensure Systems Do What We Want And Take Care Of Themselves — wroclove.rb 2022

Michał Zajączkowski de Mezer's wroclove.rb 2022 talk on designing self-healing components via the 'at-least-once + idempotence' recipe. Covers delivery semantics, retry strategies with backoff, and protocol-level idempotence using optimistic locking and idempotency keys for HTTP GET/DELETE/PUT/POST patterns. Q&A explores race conditions on retry, third-party APIs without idempotency keys, and sharding as a CAP-theorem response.

Model
claude-opus-4-7
Ingestion
d4cd6ec9
Input tokens
191,460
fresh
96,348
cached
83,349
cache write
11,763
Output tokens
11,125
Duration
176.1s
Roundtrips
6
Tool calls
14
Cost
$0.00
Nodes/edges extracted
23 / 38
Read set (nodes/edges)
72 / 22

Nodes (23)

create Michał Bronikowski person
kind (empty) person
name (empty) Michał Bronikowski
slug (empty) michal-bronikowski
description (empty) Community member thanked at the opening of the talk for contacting the speaker and arranging the invitation to give t...
short_description (empty) wroclove.rb community member who invited the speaker.
update Michał Zajączkowski de Mezer person
attrs (empty) {"role" => "back-end engineer"}
description Conference speaker. Back-end engineer working at Nagarro. Speaker at wroclove.rb 2022 with a language-agnostic talk (no Ruby code) on des...
short_description Conference speaker. Back-end engineer at Nagarro; speaker on distributed-systems reliability.
create Nagarro company
kind (empty) company
name (empty) Nagarro
slug (empty) nagarro
attrs (empty) {"industry" => "IT services"}
description (empty) IT services company where Michał Zajączkowski de Mezer works as a back-end engineer. Transcribed as 'naguro' in the t...
short_description (empty) IT services and consulting company.
update How To Ensure Systems Do What We Want And Take Care Of Themselves talk
attrs {"type" => "talk"} {"date" => "2022-03-11", "type" => "talk"}
description Talk at wroclove.rb 2022. Michał Zajączkowski de Mezer's wroclove.rb 2022 talk. Language-agnostic with no code — a message-passing abstraction ...
short_description Talk at wroclove.rb 2022. wroclove.rb 2022 language-agnostic talk on at-least-once + idempotence for self-healing systems.
create At-Least-Once Plus Idempotence Recipe concept
kind (empty) concept
name (empty) At-Least-Once Plus Idempotence Recipe
slug (empty) at-least-once-plus-idempotence-recipe
attrs (empty) {"category" => "pattern"}
description (empty) The talk's central recipe for building self-healing systems. The sender guarantees at-least-once delivery via retries...
short_description (empty) Reliability recipe: combine at-least-once delivery with idempotent receivers to achieve exactly-once effect.
create Delivery Semantics concept
kind (empty) concept
name (empty) Delivery Semantics
slug (empty) delivery-semantics
attrs (empty) {"category" => "pattern"}
description (empty) Three processing guarantees / delivery semantics. At-most-once: trigger an action once and never retry — risk is the ...
short_description (empty) Modes of execution: at-most-once, at-least-once, exactly-once.
create Exponential Backoff concept
kind (empty) concept
name (empty) Exponential Backoff
slug (empty) exponential-backoff
attrs (empty) {"category" => "pattern"}
description (empty) Popular backoff strategy for retries. Instead of dense constant retries (which risk killing an already-overloaded rec...
short_description (empty) Retry strategy where wait between attempts grows exponentially.
create Expected vs Unexpected Errors concept
kind (empty) concept
name (empty) Expected vs Unexpected Errors
slug (empty) expected-vs-unexpected-errors
attrs (empty) {"category" => "practice"}
description (empty) Errors fall into two buckets: expected ones (known error bodies from a third party you've learned to handle) and unex...
short_description (empty) Distinction between known/handled errors and novel ones, for alerting purposes.
create Protocol Thinking concept
kind (empty) concept
name (empty) Protocol Thinking
slug (empty) protocol-thinking
attrs (empty) {"category" => "methodology"}
description (empty) Discipline of moving past happy-path thinking when designing the application-level protocols components use to commun...
short_description (empty) Designing application protocols by reasoning about every failure point, not the happy path.
create Optimistic Locking concept
kind (empty) concept
name (empty) Optimistic Locking
slug (empty) optimistic-locking
attrs (empty) {"category" => "pattern"}
description (empty) Solution to the lost-update / mid-air-collision race condition that arises when multiple senders can change the same ...
short_description (empty) Concurrency control using a version parameter to detect and reject stale updates.
create Lost Update Problem concept
kind (empty) concept
name (empty) Lost Update Problem
slug (empty) lost-update-problem
attrs (empty) {"category" => "pattern"}
description (empty) Race condition, also called mid-air collision, that occurs when two senders read the same state, make independent dec...
short_description (empty) Race condition where concurrent writes overwrite each other's changes.
create Idempotency Key concept
kind (empty) concept
name (empty) Idempotency Key
slug (empty) idempotency-key
attrs (empty) {"category" => "pattern"}
description (empty) Convention for making POST-style creation idempotent. The sender generates (or retrieves) a unique token representing...
short_description (empty) Unique client-generated token that lets a receiver detect and ignore duplicate create requests.
create Find-or-Create Pattern concept
kind (empty) concept
name (empty) Find-or-Create Pattern
slug (empty) find-or-create-pattern
attrs (empty) {"category" => "pattern"}
description (empty) Fallback pattern when a third-party API supports neither idempotency keys nor sender-chosen IDs: before creating, que...
short_description (empty) Read-check-write fallback for creation without idempotency-key support.
create HTTP Method Idempotence concept
kind (empty) concept
name (empty) HTTP Method Idempotence
slug (empty) http-method-idempotence
attrs (empty) {"category" => "pattern"}
description (empty) Analysis of HTTP verbs through a protocol-thinking lens. GET (read): idempotent — retries are always safe because no ...
short_description (empty) Which HTTP verbs are idempotent and under what assumptions.
create Sharding concept
kind (empty) concept
name (empty) Sharding
slug (empty) sharding
attrs (empty) {"category" => "architecture"}
description (empty) Scale-out technique in which data is divided across partitions using a deterministic function (e.g. a hash of the ent...
short_description (empty) Partitioning data/requests across nodes by a deterministic hash to scale writes.
create Use at-least-once plus idempotence to build self-healing systems takeaway
kind (empty) takeaway
name (empty) Use at-least-once plus idempotence to build self-healing systems
slug (empty) use-at-least-once-plus-idempotence-to-build-self-healing-systems
attrs (empty) {"type" => "recommendation"}
description (empty) The one-slide takeaway of the talk: if you remember only one thing, use the recipe 'at-least-once + idempotence' at e...
short_description (empty) Combine at-least-once delivery with idempotent receivers so systems resume and self-heal.
create Don't kill dependencies — use backoff takeaway
kind (empty) takeaway
name (empty) Don't kill dependencies — use backoff
slug (empty) don-t-kill-dependencies-use-backoff
attrs (empty) {"type" => "warning"}
description (empty) Every retry reserves CPU and memory on the receiver. If the receiver is already close to out-of-memory, aggressive co...
short_description (empty) Retries without backoff can push an already-struggling receiver over the edge.
create Don't kill your team — alert only on unexpected errors takeaway
kind (empty) takeaway
name (empty) Don't kill your team — alert only on unexpected errors
slug (empty) don-t-kill-your-team-alert-only-on-unexpected-errors
attrs (empty) {"type" => "recommendation"}
description (empty) Flooding error-monitoring tools (Rollbar, Sentry) with expected third-party exceptions burns developer cycles for no ...
short_description (empty) Only page the team on unexpected errors; use metrics/alarms for the expected ones.
create Tune retry duration to the actor takeaway
kind (empty) takeaway
name (empty) Tune retry duration to the actor
slug (empty) tune-retry-duration-to-the-actor
attrs (empty) {"type" => "recommendation"}
description (empty) Decide how long to retry based on who initiated the communication. For human users, UX beats durability — retry one t...
short_description (empty) Humans want fast feedback; machines should retry for days so systems self-heal.
create Negotiate for idempotency-key support takeaway
kind (empty) takeaway
name (empty) Negotiate for idempotency-key support
slug (empty) negotiate-for-idempotency-key-support
attrs (empty) {"type" => "recommendation"}
description (empty) When integrating with a third party that supports neither idempotency keys nor find-or-create nor sender-chosen IDs, ...
short_description (empty) If a third-party API lacks idempotency support, negotiate the feature or switch providers.
create How should POST retries handle changed source-of-truth state? question
kind (empty) question
name (empty) How should POST retries handle changed source-of-truth state?
slug (empty) how-should-post-retries-handle-changed-source-of-truth-state
attrs (empty) {"answer_summary" => "Apply optimistic locking with a version parameter; receiver compares the incoming version and a...
description (empty) Audience question: when a POST depends on some entity that may have been updated between the initial attempt and the ...
short_description (empty) On retry, should the sender re-POST with updated parameters from the meanwhile-changed entity?
create Handling third-party APIs without idempotency keys question
kind (empty) question
name (empty) Handling third-party APIs without idempotency keys
slug (empty) handling-third-party-apis-without-idempotency-keys
attrs (empty) {"answer_summary" => "PUT with a sender-chosen UUID if supported; otherwise negotiate with the provider or switch API...
description (empty) Audience question: when a third-party API doesn't support idempotency keys and the find-or-create technique is imprac...
short_description (empty) How to guarantee single creation when neither idempotency keys nor efficient find-or-create exist?
create Scaling receivers vs implementing idempotency question
kind (empty) question
name (empty) Scaling receivers vs implementing idempotency
slug (empty) scaling-receivers-vs-implementing-idempotency
attrs (empty) {"answer_summary" => "Yes — it's the CAP theorem at work. Solve the partitioning dimension with sharding: route each ...
description (empty) Audience observation: race conditions happen under load, which pushes receivers to scale out, which makes the atomic/...
short_description (empty) Does scaling receivers under race-condition load make idempotency harder to implement?

Edges (38)

update Michał Zajączkowski de MezerauthoredHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Single-speaker presentation delivered at wroclove.rb 2022.
update How To Ensure Systems Do What We Want And Take Care Of Themselvespresented_atwroclove.rb 2022
context (empty) Talk delivered at wroclove.rb 2022 on 2022-03-11.
create Michał Zajączkowski de Mezerworks_atNagarro
attrs (empty) {"role" => "back-end engineer"}
context (empty) Speaker introduces himself as a back-end engineer at Nagarro.
relation (empty) works_at
source_node_id (empty) a91c84e8-bda1-4056-b7ad-7b890e00deb8
target_node_id (empty) 43724f5d-e9d2-461f-8b4d-09b26d1f3229
create Michał Zajączkowski de Mezerattendedwroclove.rb 2022
context (empty) Speaker at the conference.
relation (empty) attended
source_node_id (empty) a91c84e8-bda1-4056-b7ad-7b890e00deb8
target_node_id (empty) cfc5cfd3-25a6-46c2-8b5d-626986c71c24
create Michał Bronikowskiattendedwroclove.rb 2022
context (empty) Thanked at the talk opening for contacting the speaker and arranging the invitation.
relation (empty) attended
source_node_id (empty) 7149f222-3e48-472a-b6b6-1aaa816b52a5
target_node_id (empty) cfc5cfd3-25a6-46c2-8b5d-626986c71c24
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutAt-Least-Once Plus Idempotence Recipe
context (empty) Recipe is the central thesis of the talk.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) f3ef76bf-36a3-4bb8-9ad0-bc35e98acb77
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutDelivery Semantics
context (empty) Introduces at-most-once, at-least-once, and exactly-once as the framing vocabulary.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 23085687-ab63-4b69-a5c2-e58d4ad8d82c
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutExponential Backoff
context (empty) Recommended default backoff strategy for retries.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 229931b7-1b40-4443-9005-423213546dd2
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutExpected vs Unexpected Errors
context (empty) Argues for splitting error reporting into expected (metrics/alarms) vs unexpected (team alerts).
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) ff3b59a3-99cd-4725-afa8-a1c4f199da02
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutProtocol Thinking
context (empty) The discipline used to exercise HTTP verbs against failure scenarios.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) decbdaba-f2c1-466b-bccc-69ee211fdc30
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutIdempotence
context (empty) Second half of the talk is dedicated to idempotence at the protocol level.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 9ed80710-b8d8-494f-977f-be1931496d4d
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutHTTP Method Idempotence
context (empty) Walks through GET, DELETE, PUT, POST under the protocol-thinking lens.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 75ee2374-b8d5-412f-94ce-6a4b6d5c8063
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutOptimistic Locking
context (empty) Presented as the protocol-level solution to lost-update races on PUT/DELETE.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 5604d211-a088-4be3-803e-7edb75bbd440
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutLost Update Problem
context (empty) Race condition motivating optimistic locking.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 2843ef10-b63b-47c7-846b-b0c1ac118596
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutIdempotency Key
context (empty) Convention for making POST creation idempotent.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 4016c0bc-92a7-4c51-8596-2af7bcc2fe42
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutFind-or-Create Pattern
context (empty) Fallback when a third-party API lacks idempotency-key support.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 2c0e5c23-17c1-4f20-a5f2-f50006e97cac
create How To Ensure Systems Do What We Want And Take Care Of ThemselvesaboutSharding
context (empty) Raised in Q&A as the CAP-theorem answer to race-load scaling.
relation (empty) about
source_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
target_node_id (empty) 550fff04-b19a-403d-83f1-430622dfc07c
create Idempotency Keyrelated_toIdempotence
context (empty) An implementation mechanism for idempotent POST-style creation.
relation (empty) related_to
source_node_id (empty) 4016c0bc-92a7-4c51-8596-2af7bcc2fe42
target_node_id (empty) 9ed80710-b8d8-494f-977f-be1931496d4d
create Optimistic Lockingrelated_toLost Update Problem
context (empty) Optimistic locking is the prescribed solution to the lost-update race.
relation (empty) related_to
source_node_id (empty) 5604d211-a088-4be3-803e-7edb75bbd440
target_node_id (empty) 2843ef10-b63b-47c7-846b-b0c1ac118596
create Find-or-Create Patternrelated_toIdempotency Key
context (empty) Find-or-create is the fallback used when idempotency keys are not available.
relation (empty) related_to
source_node_id (empty) 2c0e5c23-17c1-4f20-a5f2-f50006e97cac
target_node_id (empty) 4016c0bc-92a7-4c51-8596-2af7bcc2fe42
create HTTP Method Idempotencerelated_toProtocol Thinking
context (empty) The HTTP-verb analysis is the worked example of protocol thinking in the talk.
relation (empty) related_to
source_node_id (empty) 75ee2374-b8d5-412f-94ce-6a4b6d5c8063
target_node_id (empty) decbdaba-f2c1-466b-bccc-69ee211fdc30
create Use at-least-once plus idempotence to build self-healing systemsfrom_talkHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Single 'remember-this-one-thing' takeaway of the presentation.
relation (empty) from_talk
source_node_id (empty) 1ee8cd4e-75b8-4aa3-92e1-4dcc3ff265c7
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Use at-least-once plus idempotence to build self-healing systemsaboutAt-Least-Once Plus Idempotence Recipe
context (empty) The takeaway is the recipe itself.
relation (empty) about
source_node_id (empty) 1ee8cd4e-75b8-4aa3-92e1-4dcc3ff265c7
target_node_id (empty) f3ef76bf-36a3-4bb8-9ad0-bc35e98acb77
create Don't kill dependencies — use backofffrom_talkHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Advice given in the retry section.
relation (empty) from_talk
source_node_id (empty) 07f2a0e7-824c-45bc-b62f-75a087a358b2
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Don't kill dependencies — use backoffaboutExponential Backoff
context (empty) Endorses exponential backoff as the mechanism.
relation (empty) about
source_node_id (empty) 07f2a0e7-824c-45bc-b62f-75a087a358b2
target_node_id (empty) 229931b7-1b40-4443-9005-423213546dd2
create Don't kill your team — alert only on unexpected errorsfrom_talkHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Advice given in the error-reporting section.
relation (empty) from_talk
source_node_id (empty) 13b4bd4c-01a3-4658-ac93-4cf0b93d1e0c
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Don't kill your team — alert only on unexpected errorsaboutExpected vs Unexpected Errors
context (empty) Directly builds on the expected/unexpected distinction.
relation (empty) about
source_node_id (empty) 13b4bd4c-01a3-4658-ac93-4cf0b93d1e0c
target_node_id (empty) ff3b59a3-99cd-4725-afa8-a1c4f199da02
create Tune retry duration to the actorfrom_talkHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Guidance on when to stop retrying based on human vs machine senders.
relation (empty) from_talk
source_node_id (empty) cb53734a-23f1-4ac5-9cb1-98fef36ac064
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Negotiate for idempotency-key supportfrom_talkHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Advice for integrating with third parties lacking idempotency support.
relation (empty) from_talk
source_node_id (empty) c9a21ceb-e82a-47a4-9d3c-d347aed1f20e
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Negotiate for idempotency-key supportaboutIdempotency Key
context (empty) Recommends lobbying providers to support the pattern.
relation (empty) about
source_node_id (empty) c9a21ceb-e82a-47a4-9d3c-d347aed1f20e
target_node_id (empty) 4016c0bc-92a7-4c51-8596-2af7bcc2fe42
create How should POST retries handle changed source-of-truth state?asked_atHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) First audience question in the Q&A.
relation (empty) asked_at
source_node_id (empty) aaeb7956-95e8-4a85-9edc-b4025041d154
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create How should POST retries handle changed source-of-truth state?aboutOptimistic Locking
context (empty) Answer applies optimistic locking (version 0) to POST retries.
relation (empty) about
source_node_id (empty) aaeb7956-95e8-4a85-9edc-b4025041d154
target_node_id (empty) 5604d211-a088-4be3-803e-7edb75bbd440
create Handling third-party APIs without idempotency keysasked_atHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Second audience question in the Q&A.
relation (empty) asked_at
source_node_id (empty) 8b0b049e-c8fa-4174-9586-099db1e03030
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Handling third-party APIs without idempotency keysaboutIdempotency Key
context (empty) Topic is what to do when the third party does not support idempotency keys.
relation (empty) about
source_node_id (empty) 8b0b049e-c8fa-4174-9586-099db1e03030
target_node_id (empty) 4016c0bc-92a7-4c51-8596-2af7bcc2fe42
create Handling third-party APIs without idempotency keysaboutFind-or-Create Pattern
context (empty) Asker notes the find-or-create fallback is impractical at scale.
relation (empty) about
source_node_id (empty) 8b0b049e-c8fa-4174-9586-099db1e03030
target_node_id (empty) 2c0e5c23-17c1-4f20-a5f2-f50006e97cac
create Scaling receivers vs implementing idempotencyasked_atHow To Ensure Systems Do What We Want And Take Care Of Themselves
context (empty) Third audience question in the Q&A.
relation (empty) asked_at
source_node_id (empty) f5caf6f1-6d0a-41c8-9412-9237e1792b7f
target_node_id (empty) cb83248a-f372-4223-bf22-c7f7c8157443
create Scaling receivers vs implementing idempotencyaboutSharding
context (empty) Answer proposes sharding by hash function as the CAP-theorem response.
relation (empty) about
source_node_id (empty) f5caf6f1-6d0a-41c8-9412-9237e1792b7f
target_node_id (empty) 550fff04-b19a-403d-83f1-430622dfc07c
create Scaling receivers vs implementing idempotencyaboutIdempotence
context (empty) Question is about the tension between scaling and implementing idempotency.
relation (empty) about
source_node_id (empty) f5caf6f1-6d0a-41c8-9412-9237e1792b7f
target_node_id (empty) 9ed80710-b8d8-494f-977f-be1931496d4d

Read set

72 nodes

concept Idempotence search_nodes concept Reservation Pattern search_nodes concept Idempotent Projectors and Reactors search_nodes concept Entity Caching and Snapshotting search_nodes takeaway Eventual Consistency Trade-off search_nodes talk Adventures in durable execution search_nodes question How do you order events across distributed systems? search_nodes concept Aggregate-Scoped Sequence Number search_nodes takeaway Immutable Database Raises Mistake Cost search_nodes concept Event Store search_nodes event wroclove.rb 2022 search_nodes+get_node_edges event wroclove.rb 2023 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2025 search_nodes talk Building LLM powered applications in Ruby search_nodes talk Data Management With Ruby search_nodes talk Fantastic Databases and Where to Find Them search_nodes person Michał Zajączkowski de Mezer search_nodes project Ruby Romania search_nodes tool Ruby search_nodes resource Short Ruby Newsletter search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes tool TruffleRuby search_nodes person Adam Okoń search_nodes talk Scientific Ruby Lightning Talk search_nodes person Akira Matsuda search_nodes tool RubyGems search_nodes concept Optimistic UI search_nodes talk Optimistic ul search_nodes concept Last-Write-Wins search_nodes concept Expected Version search_nodes concept Atomic Commit search_nodes takeaway Use Logux for optimistic UI with Rails search_nodes concept Resumable Uploads search_nodes concept Stalling For Time search_nodes resource Rocket Real-Time Benchmark search_nodes takeaway Replay-Based Debugging search_nodes takeaway Per-Event Backups Via Reactors search_nodes concept Saga Pattern search_nodes concept tus protocol search_nodes concept Sometimes Nothing Is Enough search_nodes concept Horizontal Sharding search_nodes takeaway Horizontal Scale Superpower search_nodes question Cross-tenant aggregation with row-level multi-tenancy search_nodes concept Eventual Consistency search_nodes concept Database-Level Partitioning search_nodes concept Schema-Level Partitioning search_nodes concept CQRS search_nodes concept Distributed Monolith search_nodes takeaway Signed On-the-fly URLs search_nodes concept Command UUID Deduplication search_nodes concept Distributed Systems search_nodes concept HTTP Caching with ETag and Last-Modified search_nodes takeaway Build APIs with immutability, EDN, context-free, flat search_nodes concept Context-Free Identifiers search_nodes talk How To Ensure Systems Do What We Want And Take Care Of Themselves get_node_edges company Red Hat search_nodes company Microsoft search_nodes company OVH search_nodes concept TCP Slow Start search_nodes takeaway Action Cable Crowded-Channel Trade-off search_nodes concept Bouncing Select search_nodes concept Command Message search_nodes concept Entity Coupled To Messaging search_nodes concept Commands, Queries, and Events search_nodes talk Message Bus Decoupling Lightning Talk search_nodes concept Events and Commands search_nodes tool Erlang search_nodes question When is a command considered processed? search_nodes

22 edges