While working on my architecture research, I've found that two architecture approaches, namely "Ports and Adapters (Hexagonal architecture)" and "Functional core - Imperative shell", are suspiciously similar.
Ports and Adapters architecture:
Functional core - imperative shell:
Let's make slight changes into each architecture:
- Make inner core of the Ports and Adapters functional
- Make imperative shell consisting of Adapters
With these changes whole picture will look like this:
From my point of view such a combination makes great sense - advantages of both approaches are get combined. In the same time each approach adds more clarity to the combined picture: Ports and Adapters do nod clarify how core is implemented, while Functional Core - Imperative Shell does not clarify how shell should look like.
So, what do you think about this "hybrid" of two architecture patterns?
Makes sense. Although it may be limited how much of the Core you will be able to make purely functional.. What have you found?