https://medium.com/javarevisited/10-microservices-design-principles-every-developer-should-know-44f2f69e960f