class: center, middle # Hexagonal Architecture --- # Also known as * Ports and Adapters * Clean Architecture * Onion Architecture --- # Layered architecture problems * No clear application core * Business logic leaks to the presentation layer
.center[] --- # Intent * Application can be driven by users, programs, automated test or batch scripts * Application can be developed and tested in isolation from its eventual run-time devices and databases --- # Applicability Use Hexagonal Architecture pattern * When the application needs to be independent of any frameworks * When it is important that the application highly maintainable and fully testable --- # Diagram .center[] --- # Concepts * Ports are interfaces * Adapters are implementations * Driver ports vs driven ports --- # Real world examples * [Apache Isis](https://isis.apache.org/) --- # Implementation example * http://java-design-patterns.com/patterns/hexagonal/