Applications need to be resilient when running in a cloud environment. One important area especially prone to failure is network communications. One common pattern for adding network resiliency is to create a library that is imported into applications, which provides the network resiliency patterns described in this appendix. However, imported libraries become difficult to maintain for services written in many languages, and when new versions of the network library are released, it puts an additional burden on applications to test and redeploy.
Instead of making applications handle network resiliency logic, it is possible to put a proxy in place that can act as a layer of protection and enhancement for applications. A proxy has the advantage of sheltering the applications from needing additional complex code and minimizing developer effort for initial and ongoing development.
Network resiliency logic can be handled in the connection layer (physical or SDN), in the application, or via a transparent proxy. While proxies are not part of the traditional network stack, they can be used to transparently manage network resiliency for the applications.
Transparent proxies can run anywhere in the infrastructure, but are more beneficial the closer they are to the applications. They also need to be as comprehensive as possible in protocols and what Open Systems Interconnection model (OSI model) layers they can proxy.
Proxies play an active ...