Actor Oriented Architecture (AOA) offers a refreshing new way of designing software applications. It combines the best practices of screaming architecture, clean architecture and domain driven design to form a unified set of patterns and best practices that gives hold to engineers that strive for a pure and clean design of their software, but are troubled by the implementation challenges that arise when a pure and clean design has to be combined with everyday reality of not so pure demands.
AOA mitigates the DDD trilemma by considering readability, understandability, testability and maintainability all even more important than achieving 100% purity. It provides the necessary patterns and best practices to do that, whilst compromising a little bit on purity to achieve a way of working that is both clean, pragmatic and fun.
It exploits the characteristics of actors (active objects) to combine pure logic with non-pure infra concerns in a natural way, understandable for both developers and interested customers. In combination with a suitable virtual actor framework, this results in scalable, highly redundant and concurrency-safe solutions with no additional work. Projects can start small, and when they evolve and gain traction, they can be scaled out gradually.
Especially when such frameworks also provide typical infra concerns like scalable persistence, timers and web gateways out of the box, and with minimal dependencies on the underlying infrastructure, developer productivity is conveniently raised to the next level as their focus shifts more and more to the actual domain logic the customer is paying for, and less and less to the peripheral matters like ORM’s, databases, message buses, queues, API’s, object mappers and the lethargic deployment and maintenance complexity that results from all of these.