Overall, microservice architecture mandates to structure your application as a set of modest services but does not dictate how
the services (and communication between them) should be implemented. In some sense, it could be thought of some kind of
supreme architecture.
As such the architectural choices applied to the individual microservices vary and, among many others, hexagonal architecture
(also known as ports and adapters), clean architecture, onion architecture and the old buddy layered architecture could be often
seen in the wild.