Un Surrogate Endpoint es una abstracción de red que no representa el servicio final, sino un intermediario que lo "sustituye" temporalmente o lo representa ante el cliente. Su función principal es interceptar las solicitudes, aplicar lógica adicional (como caching, balanceo de carga, terminación SSL, autenticación, o filtrado de seguridad) y luego reenviar la solicitud al servicio real si es necesario. Esto permite desacoplar la lógica de acceso y optimización de la lógica de negocio del servicio, mejorando la resiliencia, escalabilidad y observabilidad del sistema distribuido.

En el mundo real, los Surrogate Endpoints se implementan comúnmente mediante tecnologías como Content Delivery Networks (CDNs) donde los edge locations actúan como surrogates para servir contenido estático o dinámico cacheado, reduciendo la latencia y la carga en los servidores de origen. Load balancers (ej. NGINX, HAProxy, AWS ELB/ALB) y API Gateways (ej. Kong, Apigee, AWS API Gateway) también funcionan como Surrogate Endpoints, gestionando el enrutamiento, la autenticación, la limitación de tasas y la transformación de solicitudes antes de que lleguen a los microservicios. Otro ejemplo son los service meshes (ej. Istio, Linkerd) que inyectan sidecar proxies (que actúan como surrogates) junto a cada instancia de servicio para manejar la comunicación entre servicios, la observabilidad y las políticas de tráfico.

Para un Arquitecto de Sistemas, el uso de Surrogate Endpoints es crucial para diseñar sistemas distribuidos robustos y eficientes. Permiten externalizar preocupaciones transversales (cross-cutting concerns) fuera de la lógica de negocio, simplificando el desarrollo y la evolución de los servicios. La decisión de implementar un Surrogate Endpoint implica trade-offs: introduce un punto adicional de latencia y complejidad en la ruta de la solicitud, y puede convertirse en un punto único de fallo si no se diseña con alta disponibilidad. Sin embargo, los beneficios en términos de seguridad (aislamiento de servicios), rendimiento (caching, compresión), escalabilidad (balanceo de carga, rate limiting) y observabilidad (métricas, logs, tracing centralizados) suelen superar estos inconvenientes, haciendo de los Surrogate Endpoints una herramienta fundamental en arquitecturas de microservicios y sistemas a gran escala.