Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo acelerar de forma segura las API de alto tráfico

 

Demasiado tráfico puede ser peligroso. Para muchos desarrolladores de aplicaciones, esto parece un buen problema: el tráfico es exactamente lo que desea para su servicio, por lo tanto, cuanto más, mejor . Sin embargo, la simple verdad es que demasiado de algo bueno puede ser muy peligroso, y en el espacio de la API, esto puede tener efectos dramáticos.

Hoy, veremos exactamente qué tan alto e indómito puede ser peligroso el tráfico de API , y cuáles son realmente los efectos del tráfico sin seguimiento. Discutiremos los primeros pasos que cualquier proveedor puede tomar para corregir esta situación y discutiremos algunas metodologías que ayudarán a retener un gran volumen de tráfico mientras mantienen la seguridad y la funcionalidad impecable.

Por qué es peligroso demasiado tráfico

Si bien el tráfico, incluso el tráfico alto, es generalmente algo bueno, no estar preparado para un tráfico alto puede resultar en amenazas masivas para el concepto de CIA .

CIA es un concepto de seguridad de tecnología de la información fundamental en el que se basan todas las soluciones de seguridad. En términos generales, la CIA se resume como “Confidencialidad, integridad y disponibilidad”. En una situación de alto tráfico , una variedad de amenazas pasivas y activas se confabulan para dañar los cimientos de la CIA:

  • Confidencialidad : bajo cargas de tráfico elevadas, especialmente cargas de tráfico malicioso bajo el espectro de ataques de fuerza bruta, los sistemas pueden deformarse bajo el peso del tráfico, lo que hace que los sistemas fallen o funcionen fuera del comportamiento esperado. Esto puede resultar en sistemas vulnerables que revelan datos que de otro modo no serían vulnerables, traicionando la confidencialidad de los datos disponibles.
  • Integridad : el tráfico extremadamente alto es parte integrante de los paquetes caídos, las llamadas fallidas y la transferencia de datos incompleta. En consecuencia, la integridad de los datos puede dañarse fácilmente, ya que los clientes y los servidores pueden perder la sincronización entre sí. Si bien esta es ciertamente una amenaza pasiva en comparación con la amenaza activa incurrida por la confidencialidad, no obstante, puede causar problemas graves, especialmente cuando la falta de coincidencia de datos se encuentra en los datos de latidos, los tokens de autenticación y autorización y otros sistemas vulnerables.
  • Disponibilidad : esta es la amenaza más obvia de alto tráfico y la más común. El exceso de tráfico puede dar lugar a una situación en la que demasiadas personas soliciten demasiados datos de un ecosistema de servidores ya sobrecargado; si esto no se aborda adecuadamente, nadie puede obtener lo que necesita o desea, independientemente del tamaño o tipo de datos solicitados.

Si bien estos son problemas graves, solo están abordando la amplia gama de posibles problemas que pueden surgir en un sistema que se ocupa de un exceso de tráfico. En consecuencia, la planificación para esta posibilidad de datos extremos es increíblemente importante y debe ser parte de cualquier plan de gestión de datos adecuado.

Primeros pasos para gestionar el tráfico

Si bien existen algunas soluciones específicas y poderosas que discutiremos en breve, existen algunos primeros pasos básicos que puede tomar para administrar el tráfico de API. Si bien los detalles de cada paso se deciden completamente por los requisitos específicos del sistema en el que se colocan, estas soluciones, como regla general, pueden aplicarse en un sentido amplio a casi cualquier sistema que maneje una cantidad significativa de tráfico API.

Una gran parte del rompecabezas de la gestión del tráfico está en la propia arquitectura del servidor Si bien las API pueden funcionar, y lo hacen, simplemente en recursos locales en máquinas finitas, el espacio web moderno ofrece una amplia gama de sistemas de virtualización que se pueden vincular fácilmente con API de cualquier tamaño.

Adoptar una solución en la nube es una muy buena opción para la gestión del tráfico , ya que, por su naturaleza, permiten la creación de máquinas virtuales y el lanzamiento de sistemas físicos para manejar el exceso de tráfico cuando surge la situación. Esto hace que el hardware real en el que se basa la API sea de naturaleza escalable y es un gran primer paso para manejar el equilibrio de carga.

Además, adoptar la escalabilidad dentro del proceso de diseño como base conceptual es muy importante. La adopción de un lenguaje y un marco escalables puede permitir que el tráfico se distribuya en varios puntos finales y sistemas, distribuyendo la carga en una estructura más amplia.

Si bien estas son soluciones muy generales y, de hecho, dependen totalmente de la situación en la que se encuentren, siguen siendo excelentes primeros pasos para manejar la gestión del tráfico . Dicho esto, existen algunas soluciones más específicas y viables que pueden basarse en estos enfoques generales para magnificar su eficacia y conducir a una mayor gestión del tráfico.

Limitación de tasa

La limitación de velocidad es quizás la metodología más común para administrar el tráfico de API , y por una buena razón: no solo la mayoría de los marcos y sistemas proporcionan algún tipo de limitación de velocidad, la implementación de estos sistemas de limitación es muy, muy simple. La idea básica de la limitación de velocidad está perfectamente representada por un oficial de tráfico: cuando el tráfico es normal, el oficial hace que los autos pasen por la intersección, manejando el sistema para un flujo saludable. Sin embargo, cuando el tráfico es anormal, el oficial de tránsito puede rechazar la entrada, redirigir los automóviles e incluso cerrar las calles.

En una API, la limitación de velocidad hace exactamente esto. La limitación de velocidad es una señal de alto que le dice al solicitante que ha solicitado suficientes datos y que debe esperar los resultados o salir de la red. Esto se puede implementar en una amplia variedad de formas, pero en términos generales, se incluyen en algunas categorías básicas.

Los límites dinámicos son límites de velocidad que se basan en la clave de API asignada al usuario que permanece dentro de un rango de solicitudes. Estas solicitudes, otorgadas al usuario para uso activo en la API, tienen un límite superior y algún tipo de marco de tiempo. Cuando las solicitudes permanecen por debajo del límite durante la duración indicada, el límite de la clave API se considera no cumplido y el tráfico puede pasar libremente. Sin embargo, cuando el usuario excede el límite dentro de la cantidad de tiempo dada, el tráfico se rechaza y se le notifica al usuario que debe esperar hasta que su contador se reinicie.

Los límites de velocidad del servidor funcionan de manera un poco diferente. Mientras que los límites dinámicos imponen límites a los usuarios, los límites de velocidad del servidor imponen dichos límites a los servidores, aislando los servidores de tráfico normalmente bajo del tráfico alto. Al establecer una línea de base en el servidor y rechazar o limitar el tráfico en exceso, puede responder de manera proactiva al tráfico de API elevado sin interactuar con él a propósito.

Los límites de datos regionales , por otro lado, salen del ámbito del servidor y entran en el espacio físico regional. De la misma manera que los límites de velocidad del servidor restringen el acceso a los servidores según la heurística y el análisis de línea de base, los límites regionales hacen lo mismo para las regiones físicas reales.

Esto tiene sentido para muchas aplicaciones; por ejemplo, si proporcionó un servicio web para encontrar puntos de referencia cercanos para la junta de turismo de una ciudad específica, sería extraño que su sistema recibiera cantidades increíbles de tráfico desde Egipto o China. Si bien la mayoría de las situaciones no son tan blancas y negras, sería extraño encontrar una aplicación solo en inglés que sea tendencia en Rusia o China.

Como se dijo anteriormente, la limitación de velocidad es muy atractiva debido al hecho de que es relativamente fácil de implementar. Como ejemplo, podemos ver cómo Redis utiliza un patrón de límite de velocidad para restringir el tráfico:



FUNCTION LIMIT_API_CALL(ip)
ts = CURRENT_UNIX_TIME()
keyname = ip+":"+ts
current = GET(keyname)
IF current != NULL AND current > 10 THEN
    ERROR "too many requests per second"
ELSE
    MULTI
        INCR(keyname,1)
        EXPIRE(keyname,10)
    EXEC
    PERFORM_API_CALL()
END

Este pequeño fragmento de código limita la tasa de solicitudes del servidor, creando un contador dinámico para cada IP que caduca cada diez segundos. Cuando la tarifa del servicio público excede la tarifa indicada en el código, se le dice al usuario que ha emitido demasiadas solicitudes por segundo y se rechaza su tráfico. Algo así de simple, tan pequeño, se puede utilizar con gran efecto para manejar grandes flujos de tráfico, anulando muchos de los problemas que conlleva el tráfico pesado.

Pero esta es realmente una pequeña solución local. ¿Qué se debe hacer para problemas mayores? ¿Cómo se amplía este concepto?

Leer más: Cómo calificar el límite de una API

Construyendo un backend para frontend

Otra gran opción para administrar el tráfico de API es el concepto de Backend para Frontends , o BFF. El concepto básico de un BFF es crear una colección de microservicios complejos interconectados que funcionan como fachada para diferentes aspectos de un sistema mayor. En otras palabras, cada elemento de su API se divide en funciones adicionales a las que luego se accede a través de API de fachada, convirtiendo su tráfico de "fuente única" a "fuente múltiple".

Al abstraer la funcionalidad de un solo sistema en un sistema de microservicios complejos de zarcillo , una aplicación o servicio se mueve de un solo sistema monolítico a una colección de microservicios. Esto distribuye ampliamente el tráfico a través de múltiples nodos en lugar de forzarlo por una sola ruta.

Una forma de pensar en backends para frontends es pensar en una cama de clavos. Una atracción popular del carnaval, la mayoría de la gente está familiarizada con su funcionamiento: el peso, distribuido sobre una gran cantidad de clavos afilados, se transporta de manera segura, ya que el peso relativo de cada uña es menor debido a la dispersión del peso. Los mejores amigos funcionan de la misma manera, evitando que su única entrada a su ecosistema de API se vea abrumada con la suma total de datos de una vez.

Relacionado: Backends para Frontends

Puerta de enlace API

Las puertas de enlace API son una metodología probada y probada en el tiempo para administrar el tráfico API y se utilizan con mayor frecuencia en el espacio empresarial . Si bien este es un sistema de limitación, es mucho más de facto que directo y procesable. Las puertas de enlace funcionan limitando la cantidad de usuarios concurrentes, conexiones, ediciones y más a la propia puerta de enlace; al actuar como un árbitro en la red en general, estas puertas de enlace actúan como una puerta de enlace del mundo real, limitando la manera y la forma en qué datos se aceptan.

Las puertas de enlace funcionan esencialmente como otra capa de abstracción entre la API y el tráfico que fluye hacia la API y, como tal, actúa para equilibrar este tráfico por la naturaleza de la difusión de datos. Esto es muy poderoso por razones obvias.

Curiosamente, las puertas de enlace API pueden interactuar con microservicios para brindar muchas de las mismas funciones y beneficios de la estructura BFF. Al invocar una puerta de enlace como una forma de conectarse a múltiples puntos finales internos y microservicios, y luego agregar estos resultados, esencialmente está creando una micro-red de la misma manera que lo hace un BFF, aunque de una manera mucho más estructurada y rígida, sin dependencia del concepto de fachada.

Por esta razón, las puertas de enlace se consideran una limitación "de facto" en lugar de directa, ya que las limitaciones reales del tráfico son pasivas debido a cómo se construye la puerta de enlace y lo que permitirá la puerta de enlace.

Leer más: ¿Qué es una puerta de enlace API?

Proveedor de gestión de tráfico

A veces, las soluciones internas no son suficientes; en estos casos, se puede depender de soluciones externas para obtener ganancias aún mayores en la gestión. En los últimos años ha surgido una amplia variedad de proveedores de administración, que manejan los datos de tal manera que crean una red artificial frente a sus servidores, proporcionando un búfer equilibrado Las llamadas redes de entrega de contenido pueden asignar datos de manera más eficiente, proporcionando sistemas de almacenamiento en caché y equilibrio de carga como un paquete para una mejor administración.

Si bien algunas de estas CDN están integradas en un sistema de virtualización determinado, como AWS, otras CDN operan independientemente de su producto de virtualización, lo que permite que los sistemas ya existentes se conecten a tales redes artificiales.

Un gran ejemplo de tal sistema sería CloudFlare . CloudFlare esencialmente funciona como una capa entre clientes y servidores, interceptando datos y manipulándolos para cargar tráfico. Al dirigir este tráfico a recursos virtualizados localmente más cercanos, evitar que el tráfico malo llegue a los sistemas internos y distribuir el tráfico pesado a través de múltiples nodos CDN, esta solución puede manejar el tráfico pesado de manera casi transparente de una manera muy limpia, fácil, eficiente y económica. .

Lea también: API Platform Analytics

Conclusión

Cualquiera que sea su solución elegida, la gestión del tráfico es una parte vital del ecosistema API moderno, y solo se volverá más importante. A medida que más y más usuarios ingresan a la World Wide Web y consumen datos a través de una amplia variedad de API, la capacidad de equilibrar este tráfico, rechazar el tráfico malicioso y seguir sirviendo el tráfico legítimo real se volverá cada vez más importante y cada vez más difícil.

Afortunadamente, existe una amplia gama de soluciones que han demostrado ser efectivas y, si se implementan correctamente, pueden ayudar a negar las mayores amenazas de los escenarios de pesadilla de mala gestión del tráfico.

Publicar un comentario

0 Comentarios