Utiliser les évènements pour les interactions entre de petits composants métiers permet de simplifier l'architecture d'un système, a expliqué Russ Miles en parlant de la simplification d'architecture grâce aux évènements.
Durant une keynote à la QCon Londres 2013, Barbara Liskov a déclaré que la simplicité est d'une extrême importance. Russ Miles, consultant senior, est entièrement d'accord. D'après ses expériences, il constate que souvent les équipes de développement sont ralenties par la taille et la complexité croissante du code qu'ils écrivent, et qu'il croit que la meilleure façon de continuer à avancer est de simplifier l'architecture.
D'après Russ, découper un système en composants est nécessaire pour simplifier son architecture. Par contre, il n'est pas facile de caser de tels composants dans un modèle classique à plusieurs couches. Ainsi, il a créé un nouveau modèle "Bouée de sauvetage" (Life-Preserver) qui se présente comme un anneau, où les composants qui gèrent l'intégration avec l'infrastructure sont sur l'anneau, tandis que les composants métier se retrouvent à l'intérieur. Il note que ce pattern n'est pas sans rappeler l'architecture hexagonale créée par Alistair Cockburn.
Événements
L'étape suivante consiste à définir comment les différents composants peuvent collaborer. Vu qu'on ne connait pas d'avance toutes les interactions possibles, une solution flexible serait d'envoyer des évènements pour échanger des messages. Ainsi, le contrat d'un composant se compose uniquement des évènements qu'il reçoit ou qu'il envoie, ce qui revient à utiliser une architecture orientée évènement standard mais au niveau du composant.
Pipes et Filters
En allant encore plus loin, Russ simplifie ses composants à presque des fonctions, tandis que les évènements ne sont plus fortement typés mais plutôt juste des données simples, sous la forme d'un document ou du XML par exemple. Ainsi, les composants au coeur du système communiquent de la même façon que les composants d'intégration avec le monde extérieur. Avec ce modèle, l'architecture se résume à un échange de données immuables entre des micro-composants, qui exécutent un unique traitement sur les données en entrée pour produire des données en sortie, ce qui correspond au pattern Pipes et Filtres, mais à l'intérieur d'une architecture système.