PinnedAshraf Mageed·Jan 24, 2015Scalability and SOA — Part 2 (Event-Driven SOA)In the previous post in this series, I wrote about scaling up vs out, why we chose scaling-out and why layered service models are not the…
Ashraf Mageed·Sep 22, 2025Lessons from the Trenches: CQRS, Event Sourcing, and the Cost of Tooling ConstraintsSeveral years ago, I led the implementation of a set of CQRS-based, event-sourced microservices built using Domain-Driven Design (DDD) for…
Ashraf Mageed·Sep 1, 2025Architecting for Change — Part III: Sources of ComplexityIn my previous post, I examined how complexity and cognitive load can hinder delivery, compromise security, and make systems more…
Ashraf Mageed·Aug 18, 2025Architecting for Change — Part II: Complexity & Cognitive Load’s ImpactThe last post in this series discussed the implications of not architecting for change. I highlighted several issues that ultimately…
Ashraf Mageed·Jul 23, 2025DDD MisconceptionsI have seen numerous implementations of DDD over the years, and during that time, I have noticed a few recurring misconceptions. Addressing…
Ashraf Mageed·May 14, 2025Understanding the True Causes of High Logging CostsIn my previous blog post, I spoke about the evolution of observability, exploring its history and the rise of OpenTelemetry as a powerful…
Ashraf Mageed·May 11, 2025Architecting for Change — Part I: Why Does It Matter?There are myriad reasons for change. Competition, evolving user expectations, technological advancements, regulations, bugs, security…
Ashraf Mageed·Jan 5, 2025The Hidden Complexity of CRUDIn an age where microservices have become the architectural norm, it’s common to see service interfaces defined as simple CRUD endpoints…
Ashraf Mageed·Sep 14, 2024Evaluating an Asynchronous Processing DesignI was recently asked to provide feedback on an implementation designed to decouple accepting requests in a service from processing them…
Ashraf Mageed·Jan 5, 2023Targeted Event-Carried State TransferAnother flavour of microservices’ integration