Hexagonal Architecture

By clearly defining boundaries between various system components, the main aim is to separate the application's essential business logic from its external concerns.