architecture

  • Bulkheads keep one slow dependency from taking the pool

    The name comes from ship compartments: a breach floods one section rather than the hull. Applied to a request path, it means each dependency gets a share of…

  • WooCommerce 3.0 turned products into objects

    Every plugin reading _price from post meta is now reading a private field. The mechanical half, the half that is not, and the compatibility layer for code you…

  • The consumer decides what it needs, not the publisher

    A publisher asked to add a field for one consumer will add it, and after five of those the event is a shared schema that nobody can change.…

  • Choreography and orchestration are both fine and different

    Choreography has each service react to events and know nothing about the whole; orchestration has one component call the others in order. The first is presented as the…

  • Shard count is decided once and regretted later

    The number of primary shards is fixed when the index is created and cannot be changed. The default of five was chosen for a different era of cluster…

  • CSS Grid arrived, and the layout hacks can go

    Chrome 57 and Firefox 52 shipped it a fortnight apart in March. Replacing a grid system of nested rows, negative margins and a clearfix with fourteen lines.

  • A correlation id through every service

    Centralised logs from four services are four streams in one place until something ties a single request together across them. That something has to be generated at the…

  • Aggregate boundaries are transaction boundaries

    The rule that makes aggregates useful is that one transaction touches one aggregate. Everything else follows: what belongs inside, what is referenced by id, and where consistency is…

  • The distributed monolith is the usual first result

    Six services that must be released together, share a database and call each other synchronously have every cost of distribution and none of the benefit. It is the…

  • Static analysis on a codebase that has never had any

    Four thousand errors on the first run is a number nobody can act on. Starting at level 0, ignoring by pattern, and raising the floor one level at…