Microservices have a number of cross-cutting concerns:
- Authentication, authorization, and security: How do we ensure that the microservice consumers are who they claim to be? How do we ensure that the consumers have the right access to microservices?
- Rate limits : There might be different kinds of API plans for consumers and different limits (the number of microservice invocations) for each plan. How do we enforce the limits on a specific consumer?
- Dynamic routing: Specific situations (for example, a microservice is down) might need dynamic routing.
- Service aggregation: The UI needs for a mobile are different from the desktop. Some microservice architectures have service aggregators tailored for a specific device.
- Fault tolerance: How do we ensure that failure in one microservice does not cause the entire system to crash?
When microservices talk directly with each...