BLOG

Las tres características clave de un proxy de aplicación moderno

Miniatura de Lori MacVittie
Lori MacVittie
Publicado el 14 de septiembre de 2015

Mantenga el lado caliente caliente y el lado frío frío.

Quizás recuerdes (si tienes la edad suficiente y no, no te preocupes, no te pediré que levantes la mano) una campaña de hace años de McDonald’s que promocionaba los envases de algunos de sus productos que mantenían “el lado caliente caliente y el lado frío frío”.

lado caliente caliente lado frío frío

El concepto era bastante simple, en realidad: separar lo caliente de lo frío, pero mantenerlo en un solo recipiente para facilitar su transporte.

Esa noción de separación dentro del mismo “contenedor” es realmente la base de lo que hace que un proxy de aplicación sea, bueno, un proxy. Mantiene el lado del cliente y el lado de la aplicación… aplicación.

Bueno, puede que eso no se traduzca tan claramente como me gustaría después de todo.

Aun así, el concepto es válido y resulta importante para comprender un proxy de aplicación.

Básicamente, un proxy es un software que se posiciona lógicamente entre dos participantes en un intercambio de comunicación. Un proxy de aplicación se ubica entre una aplicación y un cliente. Ahora bien, no todos los proxies son proxies completos . Un proxy completo requiere la separación interna de los dos lados; esencialmente, un proxy completo tiene dos pilas de red independientes contenidas dentro de un solo dispositivo. El lado del cliente (lado caliente) y el lado de la aplicación (lado frío). 

lado de la aplicación del lado del cliente

Lo sé, la analogía realmente no funciona bien, ¿verdad? Trabaja conmigo, es todo lo que tengo por ahora.

La razón por la que esto es (o debería ser) un requisito para un proxy de aplicación es que proporciona al proxy la capacidad de participar en el intercambio entre el cliente y el servidor. Esto es necesario para proporcionar funcionalidades como la minimización (que mejora el rendimiento de la aplicación), funciones de seguridad (como la depuración de datos) y multiplexación TCP (optimización), además de un amplio conjunto de otros servicios.

Es en ese “espacio” interno entre el lado del cliente y el lado de la aplicación donde ocurre la magia. Ahí es donde una gran cantidad de servicios, desde equilibrio de carga rudimentario hasta firewalls de aplicação avanzados y control de acceso a aplicação , hacen su trabajo. Las solicitudes se finalizan efectivamente en el lado del cliente de un proxy de aplicación. Después de eso, se produce un proceso muy parecido al encadenamiento de servicios, solo que todo sucede internamente, a velocidades internas del bus y del procesador (que casi siempre son más rápidas que la velocidad de la red). Se procede a la inspección. Se aplican políticas. Se producen transformaciones. Se toman decisiones. Se establece una conexión separada entre el proxy y la aplicación, y la solicitud se envía.

Cuando esa solicitud regresa al proxy, sucede lo contrario. Se procede a la inspección. Los datos se borran. Se aplican políticas. Luego vuelve al lado del cliente, donde se puede transferir de nuevo al cliente.

Y todo sucede en un tiempo inferior a un segundo porque todo es interno al proxy.

Dado que el propósito de un proxy de aplicación es brindar una amplia gama de servicios de aplicación (disponibilidad, seguridad, movilidad, identidad y acceso, y rendimiento), realmente debería ser un proxy completo. Sólo un proxy completo está diseñado para participar en todas y cada una de las solicitudes y respuestas. Los proxies simples (que en realidad son proxies sin estado si desea profundizar en los detalles) solo participan en la conversación inicial, cuando se crea la conexión entre el cliente y la aplicación. Su propósito es seleccionar una instancia de aplicación y luego “unir” la conexión entre las dos. Después de esto, el proxy no participa. Ve un “flujo” (una construcción TCP de capa 4 que quizás haya escuchado mientras discutía sobre SDN, que es otro tema para otro momento) y simplemente envía paquetes de un lado a otro, mezclando lo caliente y lo frío indiscriminadamente. (¿Ver? Sabía que la analogía funcionaría eventualmente.)

Ahora bien, dicho todo esto, un proxy de aplicación moderno (y escalable) debería ser un proxy completo y tener tres características clave: programabilidad, rendimiento y protocolos.

La programabilidad es fundamental en los centros de datos modernos y en la nube para respaldar la automatización, la orquestación y la estandarización. También es clave en la ruta de datos para habilitar seguridad y servicios que aportan un valor único al negocio y a las operaciones, posibilitando el soporte para protocolos personalizados y la ampliación de los existentes. El rendimiento parecería ser sencillo, pero no lo es. Debido a que un proxy de aplicación interactúa con cada solicitud, no solo tiene que ser rápido, sino increíblemente rápido. Tiene que hacer lo que tiene que hacer rápidamente, sin agregar experiencia de aplicación que mate la latencia del intercambio. Esto no es tan fácil como parece, especialmente cuando hay tanta presión para utilizar la computación de propósito general como base para la implementación.

Por último, los protocolos son importantes. Lo primero que nos viene a la cabeza cuando decimos “aplicación” probablemente sea HTTP. Esto no es ninguna sorpresa: HTTP es el nuevo TCP y la lengua franca de Internet. Pero no es el único protocolo en uso, y especialmente no en una era de comunicaciones basadas en Internet. También hay SIP y UDP. Sin mencionar SMTP (todavía envías correos electrónicos, ¿verdad?) y LDAP. ¿Y qué pasa con SSL y TLS? Con un enfoque (y urgencia) cada vez mayor por lograr que SSL esté en todas partes, bueno, en todas partes, es aún más imperativo que un proxy de aplicación hable SSL/TLS, y lo hable con absoluta fluidez. Porque de lo contrario ese requisito de rendimiento podría no cumplirse.

 

Un proxy de aplicación puede proporcionar la plataforma que los centros de datos modernos necesitan para abordar los desafíos de seguridad y rendimiento, automatizar y orquestar su camino hacia menores costos operativos y garantizar la experiencia óptima de la aplicación tanto para clientes corporativos como para consumidores. Pero tiene que ser un proxy de aplicación completo con capacidad de programación, rendimiento y soporte de protocolo para garantizar que ninguna aplicación se quede atrás.