When to use this pattern
Use this pattern when you:
Need to build a common set of client connectivity features for multiple languages or frameworks.
Need to offload cross-cutting client connectivity concerns to infrastructure developers or other more specialized teams.
Need to support cloud or cluster connectivity requirements in a legacy application or an application that is difficult to modify.
This pattern may not be suitable:
When network request latency is critical. A proxy will introduce some overhead, although minimal, which may affect the application in some cases.
When client connectivity features are consumed by a single language. In that case, a better option might be a client library that is distributed to the development teams as a package.
When connectivity features cannot be generalized and require deeper integration with the client application.