---
title: "Architecture"
url: https://www.grahambrooks.com/tags/architecture/
---

# Architecture

- [Notification Event Pattern](https://www.grahambrooks.com/event-driven-architecture/patterns/notification-event-pattern/index.md) (2017-03-16): There are many event patterns or styles in event driven architectures. One of the significant advantages of the notification event pattern is can be introduced into existing systems quite simply to provide a more loosely coupled design.
- [Event-Carried State Transfer Pattern](https://www.grahambrooks.com/event-driven-architecture/patterns/stateful-event-pattern/index.md) (2017-05-18): In contrast to the notification pattern the Event-carried state transfer discourages calls to the publishing service by containing all the required data in the event payload. This decoupling leads to a very clean architecture but not without significant costs.
- [Event Sourcing](https://www.grahambrooks.com/event-driven-architecture/patterns/event-sourcing/index.md) (2017-06-07): Event Sourcing is a fascinating design pattern with some real advantages over maintaining single states within systems. But there is a darker side that requires careful consideration.
- [Consistency](https://www.grahambrooks.com/event-driven-architecture/consistency/index.md) (2017-05-25): Consistency - the absence of contradiction is a challenge in any application. Event driven asynchronous distributed systems turn up the dial of complexity. What does consistency mean?
- [Integrating Event Driven systems](https://www.grahambrooks.com/event-driven-architecture/patterns/integrating-event-driven-systems/index.md) (2017-06-24): It is very rare for an application or system to exist in isolation. Systems need to be integrated to deliver business value.
- [Measuring Consistency](https://www.grahambrooks.com/event-driven-architecture/consistency-measurement/index.md) (2017-05-25): Consistency Measurement - understanding key operational metrics of a distributed event driven system
- [Compensating Actions](https://www.grahambrooks.com/event-driven-architecture/compensating-actions/index.md) (2017-05-25): Consistency - the absence of contradiction is a challenge in any application. Event driven asynchronous distributed systems turn up the dial of complexity. What does consistency mean?
- [forge 2026.10.2: forge as a library, with views as diagram-scene scenes](https://www.grahambrooks.com/post/forge-2026-10-2-library/index.md) (2026-10-14): forge v2026.10.2 can be used as a Rust library that parses a .forge model and lays its views out as diagram-scene scenes, so a host application can draw them natively. The rest of the release is dependency updates.
- [forge 2026.9.8: a JetBrains preview and models on stdin](https://www.grahambrooks.com/post/forge-2026-9-8-jetbrains-preview/index.md) (2026-09-26): forge 2026.9.8 adds a live diagram preview plugin for JetBrains IDEs and lets build, check and export read a model from stdin, so unsaved editor buffers can be rendered.
- [Giving the Consumer a Representative in the Working Tree (brake)](https://www.grahambrooks.com/post/brake-exit-criteria-for-the-consumer/index.md) (2026-08-24): Every signal an agent uses to decide it is finished — compiler, tests, linter — is a question about the repository it is standing in. The consumers of the API it just changed are somewhere else entirely. brake makes 'who does this break?' answerable from files already in the tree, with no network, no broker, and no running service.
- [Architecture the Agentic Loop Can Actually Check (tropism)](https://www.grahambrooks.com/post/tropism-architecture-in-the-agentic-loop/index.md) (2026-08-08): Coding agents get fast feedback from compilers, tests, and linters — all of which are local. None of them knows the shape of the system. Tropism is an attempt to close that gap: one architecture ruleset, ten languages, no build, no network, sound enough to block a commit.
- [The Agentic Inner Loop: Sensors, Substrate, and Skills for Polyglot Development](https://www.grahambrooks.com/post/inner-loop-agentic-development/index.md) (2026-05-23): What the developer inner loop becomes when a coding agent is doing most of the iteration — and the substrate, sensors, codemods, and skills you need to build for it.
- [A Rust-Native Architecture Toolchain: forge, puml, and adoc](https://www.grahambrooks.com/post/rust-native-architecture-toolchain/index.md) (2026-04-26): A Rust-Native Architecture Toolchain: forge, puml, and adoc Replacing the JVM and Ruby pieces of the architecture documentation stack with single static binaries Most of the tools I reach for when documenting architecture were built in another era. PlantUML wants…
- [Iteration Zero - the first iteration](https://www.grahambrooks.com/post/2022-11-25-iteration-zero/index.md) (2022-11-25): There has been quite a lot of commentary on various social media channels about agile ceremonies and the traps that they often pose to enterprises. if not taken in the context of the value that they provide. This is not…
- [Technical Health over Technical Debt](https://www.grahambrooks.com/post/2018-12-27-technical-health-over-technical-debt/index.md) (2018-12-27): Ward Cunningham is credited with the first use of the team Complexity as Debt or Technical Debt (YouTube video) as a metaphor poor software implementation. For a software application or system technical debt refers to the internal code quality. We…
- [](https://www.grahambrooks.com/post/2018-12-09-of-languages-and-containers/index.md) (2018-12-09): At the start of my career I worked with fairly dumb terminals and mainframes. Programs were natively compiled but resources were limited and shared with the other users of the system. Shared computing power meant that we favored languages that…
- [](https://www.grahambrooks.com/post/2018-04-29-orchestration-and-choreography/index.md) (2018-04-29): Orchestration and Choreography are often discussed as design options for event driven systems. Some use the term interchangeably while others feel that the two are very distinct. I am in the later group in thinking that the two are very…
- [Builder anti-patterns](https://www.grahambrooks.com/post/2017-06-19-builder-antipatterns/index.md) (2017-06-19)
- [Defending the Domain Model](https://www.grahambrooks.com/post/2017-06-06-defending-the-domain-model/index.md) (2017-06-06): Creating useful software models that represent the buisness they serve is hard. Creating a single model for a business at a point in time might be possible but as the business changes models need to be continually updated. Because these…
- [Dependency Inversion - Applying the principle](https://www.grahambrooks.com/post/2016-07-11-dependency-inversion/index.md) (2016-07-11)
- [The Value of Value Types](https://www.grahambrooks.com/post/2015-01-25-the-value-of-value-types/index.md) (2015-01-25): In domain driven design (DDD) we talk a lot about entities; objects that have identity and lifetimes that typically outlive their values. e.g. An account lives longer than the email address, name, postal address etc. Value types might be mentioned…
- [Build Analytics - better development understanding](https://www.grahambrooks.com/post/2015-01-19-build-analytics/index.md) (2015-01-19): Working with small teams is a lot of fun and I find it fairly easy to keep track of what is happening with version control and build systems. Errors and failures don’t come up that often and when they do…
- [Service IoC containers](https://www.grahambrooks.com/post/2014-04-07-service-ioc-containers/index.md) (2014-04-07): How can we get the benefits of IoC containers at a higher level - the services that we deploy into environments? Typical service tiers are implemented with a fronting load balancer that allocates servers to satisfy requests. Applications or services…
- [Team Distribution Models and Conways Law](https://www.grahambrooks.com/post/2014-03-31-team-distribution-models/index.md) (2014-03-31): If Conway’s law applies the how we set up and organise teams should either be aligned to the architecture of the applicaiton or system being developed or application/system architecture will shift to match the team structure. Conways law organizations which…
- [I can't believe I missed this!](https://www.grahambrooks.com/post/2013-02-06-i-cant-believe-i-missed-this/index.md) (2013-02-06): Just over 20 years ago Jack W. Reeves wrote an article in the C++ Journal entitled “What is Software Design?” and I missed it. Not only that but no one thought to point out that I was missing a very…
- [Encapsulating Databases](https://www.grahambrooks.com/post/2011-08-11-encapsulating-databases/index.md) (2011-08-11): Small systems grow with success. As these systems grow they often take on more and more functionality either directly into the main system component or into sub-systems. As the systems grow in complexity and responsibility their database requirements grow at…
- [Insulating against failure using Caching Reverse Proxies](https://www.grahambrooks.com/post/2011-07-07-insulating-against-failure-using-caching-reverse-proxies/index.md) (2011-07-07): Reverse proxies have been around for a very long time and depending on your application either interesting additions or a key element to your architecture. Despite their long history I was recently reminded of some interesting applications of Caching reverse…
- [Testing - what to test when](https://www.grahambrooks.com/post/2010-10-20-testing-what-to-test-when/index.md) (2010-10-20): After tweeting that I wanted to have suggestions for blog entries I got a single reply asking for my thoughts on DAO and unit testing – essentially asking should DAO be unit tested. The problem with me answering this question…
- [Post Redirect Get web interaction pattern](https://www.grahambrooks.com/post/2010-03-27-post-redirect-get-web-interaction-pattern/index.md) (2010-03-27): Post/Redirect/Get or Redirect after Post is an HTTP interaction pattern that can be used when developing web applications. I have been mentioning it quite a few times in my consulting work and thought I would take a stab a at…
