Antipatrón: Deja implementados los proxies de la API de NodeJS sin usar

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Una de las funciones únicas y útiles de Apigee Edge es la capacidad de encapsular una aplicación NodeJS en un proxy de API. Esto permite que los desarrolladores creen aplicaciones del servidor basadas en eventos con Edge.

Antipatrón

La implementación de proxies de API es el proceso de ponerlos a disposición para entregar solicitudes a la API. Cada uno de los proxies de API implementados se carga en la memoria de tiempo de ejecución de Message Processor para poder entregar las solicitudes a la API para el proxy de API específico. Por lo tanto, el uso de memoria de tiempo de ejecución aumenta con el aumento en la cantidad de proxies de API implementados. Dejar implementados los proxies de API sin usar puede provocar un uso innecesario de la memoria de tiempo de ejecución.

En el caso de los proxies de API de NodeJS, hay una implicación adicional.

La plataforma inicia una “app de Node” para cada proxy de API de NodeJS implementado. Una app de Node es similar a una instancia de servidor de nodos independiente en el proceso de JVM de Message Processor.

En efecto, para cada proxy de API de NodeJS implementado, Edge inicia un servidor de nodos cada uno para procesar solicitudes de los proxies correspondientes. Si el mismo proxy de API de NodeJS se implementa en varios entornos, se inicia una app de nodos correspondiente para cada entorno. En situaciones en las que hay muchos proxies de API de NodeJS implementados, pero sin usar, se inician varias apps de Node. Los proxies de NodeJS sin usar se traducen en apps de Node inactivas que consumen memoria y afectan los tiempos de inicio del proceso de la aplicación.

Proxies usados Proxies sin usar
# Proxies # Entornos implementados # nodeapps iniciadas # Proxies # Entornos implementados # Apps de Node iniciadas
10 dev, test, prod (3) 10x3=30 12 dev, test, prod (3) 12x3=36

En la ilustración anterior, se inician 36 nodeapps sin usar, lo que usa la memoria del sistema y tiene un efecto adverso en los tiempos de inicio del proceso.

Impacto

  • Uso elevado de memoria y efecto en cascada en la capacidad de la aplicación para procesar más solicitudes
  • Es probable que el rendimiento se vea afectado en los proxies de API que realmente entregan tráfico

Práctica recomendada

  • Anula la implementación de los proxies de API sin usar
  • Usa el panel de rendimiento del proxy de Analytics para determinar qué proxies no entregan tráfico y anula la implementación de los que no necesitas

Lecturas adicionales