RSSAmplifier

Blog

Notes on Software Design

Reflections from the field

rafaelfiume.blogRSS feed ↗7 posts

Latest posts

The Authoritative Core: Where Business Truth Is Established

Part 1. Fragmented Authority Many systems have fragmented authority: no single component can provide an accurate and complete view of a domain’s state with the guarantees that domain requires. For example, consider a system that integrates with dozens of external services by transforming data received from several upstream systems. Several experienced colleagues proposed connecting each … Continue…

From Accidental to Intentional Architecture

The momentum of building a product, shaping abstract ideas into something concrete, comes with compromises and limitations. We quickly connect components and take shortcuts to speed up deliveries. This sets the scene for unpredictability. Even a prototype is composed of several interacting components with growing complexity. That complexity leads to emergent behaviour: A system-level property ……

Property-Based Testing as a Design Tool

Part 1 – Motivation and Foundations Property-based testing is a powerful tool for designing correct, unambiguous programs through executable specifications. It helps us answer an essential question: What types of universal claims about a program are worth defining and enforcing? A property is a proposition of the form: ∀x1∈D1,x2∈D2,…,xn∈Dn,P(x1,…,xn)\forall \; x_1 \in D_1,\; x_2 \in … Continue…

Transaction Boundaries Are a Business Concept

In most systems, use cases live in the application layer, where services orchestrate domain operations and side-effects such as persistence, messaging, or external calls. It’s also common for the business to require locally atomic operations: they must succeed or fail together, preserving state invariants in the presence of failure. How to implement transactions is an … Continue reading…

The Path to Idempotency: Preserving Business Outcomes

I’ve written about navigating the uncertainties of a complex integration stack. One of the biggest recurring issues we faced was duplicates: bursts of repeated updates that caused major incidents for our customers. Our core operations were not idempotent – multiple identical instructions were performed with side-effects as many times as they were issued. In our … Continue reading The Path to…

From Integration Chaos to a Deterministic Pipeline

I was once part of a team working on an integration layer responsible for collecting data from many upstream services and processing it into content made available to multiple external customers according to their requirements. Our job was to make upstream and external system work as a single coherent whole, despite having no control over … Continue reading From Integration Chaos to a…

Grammars and Parsers

Let’s build a parser for simple arithmetic expressions. It’s better start the job in very a simple way: process addition expressions like ‘1 + 1’. A Little Bit About Parsers According to Grune and Jacobs[1]: “Parsing is the process of structuring a linear representation in accordance with a given grammar. [..] This ‘linear representation’ may … Continue reading Grammars and Parsers →