This post on the Netflix Tech Blog about rebuilding one oftheir applications using Hexagonal Architecture patterns was a fascinating read. I’d never argue for every project to have a big universal interfacing method or connectors everywhere, but at some point you realise your platform needs it.
The idea of Hexagonal Architecture is to put inputs and outputs at the edges of our design. Business logic should not depend on whether we expose a REST or a GraphQL API, and it should not depend on where we get data from — a database, a microservice API exposed via gRPC or REST, or just a simple CSV file.
The pattern allows us to isolate the core logic of our application from outside concerns. Having our core logic isolated means we can easily change data source details without a significant impact or major code rewrites to the codebase.
Data sources and sinks change, platforms have to be able to move with them. It’s a great way of thinking about things.