Involvement in and understanding of the communication between services and their consumers allows middleware to monitor and mediate that communication.
Within the context of REST, Visibility refers to the ability of parts of an architecture to monitor and regulate the interaction between other parts of the same architecture. Most commonly, this translates into establishing middleware-based service agents that keep track of messages passed between services and consumers.
The focus of these service agents is usually on improving administrative control over the architecture and optimizing its performance. Typical features provided by utility-centric service agents include:
- shared caching of responses
- improving scalability through layers that aggregate requests and reduce the direct impact on services
- improving reliability by ensuring requests always reach a service replica that is currently available
- supported enforcement of security policies by inspecting and filtering interactions at network firewalls
The design goal of Visibility relates to how much generic information a service agent can extract from a message without knowing any service-specific contract details. REST primarily supports Visibility through the Uniform Contract constraint.