Until recently, layered architecture was the most common way of organizing large applications or modules. We’ve learned from practice that it has limitations:
- business rules tend to escape or be duplicated in UI and/or data layer
- switching from a database to another is very difficult
- adding another UI to the application (eg. mobile or smart client) requires heavy changes
- changing a library used by the application with another is often complex and risky
A new architecture style has appeared in the recent years that tackles this problem: Hexagonal Architecture, or Ports & Adapters. Its intent is to allow more flexibility by cleanly separating business rules from everything else.
Johann Martinsson and Rémy Sanlaville have described the basics of Hexagonal Architecture and then shown an example of such an architecture.
Enjoy their presentation @ I T.A.K.E. Unconference 2014 edition. Curious about 2015 edition?