Allow an application to equally be driven by users, programs, automated test or batch scripts, and to be developed and tested in isolation from its eventual run-time devices and databases.

## Applicability
Use Hexagonal Architecture pattern when
* it is important that the application is fully testable
* you use Domain Driven Design methodology and/or Microservices architectural style