Clean Applications with Hexagonal Architecture (Building maintainable microservices and modular monoliths)