https://medium.com/i-am-a-dummy-enlighten-me/understanding-hexagonal-architecture-in-software-development-06df9efa65a7