• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • API Gateway: backend para frontend

    Analicemos qué es API Gateway, por qué es esencial tener uno y cómo puede administrar mejor las API. También exploraremos y enumeraremos algunas de las mejores puertas de enlace API administradas y de código abierto disponibles en el mercado.

    ¿Qué es API Gateway?

    Una puerta de enlace API es un concepto importante en la arquitectura de microservicios. Forma un punto de entrada para clientes externos (cualquier cosa que no sea parte del sistema de microservicios). Es un componente que actúa como punto de entrada para una aplicación.

    En otras palabras, una puerta de enlace de API es un servidor de gestión de API que tiene información sobre los puntos finales. También es capaz de realizar autenticación, limitación de velocidad, equilibrio de carga y más.

    Para tener una mejor idea de una puerta de enlace API, necesitamos saber por qué es esencial tener una puerta de enlace API.

    ¿Por qué necesitamos API Gateway?

    Para comprender la necesidad de una puerta de enlace API, analicemos un caso de uso de una e-commerce .

    Caso de sstudio

    Considere un caso de estudio de una página compleja (digamos página de producto) de una aplicación de comercio electrónico. Si miramos la página de abajo de la lista de productos de Amazon, podemos ver mucha información que esta página específica debe representar.

    Con fines ilustrativos, enumeremos todos los microservicios que podríamos necesitar para representar la página en particular anterior.

    Imagine Buscar producto, inventario, envío, calificación y reseñas, motor de recomendación, comerciantes y finanzas y seguros son los siete (7) microservicios diferentes que se utilizan para representar la página anterior.

    PS: Más de siete (7) microservicios son solo una suposición para explicar el concepto de puerta de enlace API. En realidad, Amazon podría tener una cantidad diferente de microservicios.

    El problema

    Dado que estos microservicios se han implementado por separado en un servidor diferente si un cliente desea acceder a estos servicios, se deben solicitar al menos siete (7) llamadas para una sola página.

    Pero, ¿es realmente un buen enfoque?

    No creo que sea un enfoque recomendado porque tenemos que hacer siete llamadas diferentes, lo que definitivamente afectaría el rendimiento, el consumo de recursos, el tiempo de carga, etc. El cliente también está estrechamente vinculado con todos los servicios, y supongo que si tenemos que hacerlo separar el Reseñas y calificación microservicios en dos servicios diferentes, tenemos que actualizar el código del cliente. El cliente tiene que hacer una llamada para obtener reseñas y una llamada para obtener calificaciones, que en realidad no es la mejor manera de lidiar con eso.

    La solución

    Entonces, ¿cuál es el enfoque recomendado?

    Es una puerta de enlace API.

    En este enfoque, tenemos una capa entre el cliente y los microservicios llamada puerta de enlace API. Es un servicio frontal para todos los microservicios. Ahora, cualquier cliente que quiera acceder a los microservicios, el cliente tiene que llamar a la puerta de enlace API. Ahora la puerta de enlace API, a su vez, realiza una llamada a todos los microservicios y obtiene cualquier respuesta que podamos necesitar. Este proceso se denomina composición de API.

    En pocas palabras, una puerta de enlace API se encuentra entre el cliente y los microservicios y actúa como una puerta de enlace para todos los microservicios.

    No solo esto, sino que el uso de una puerta de enlace API nos beneficia de muchas maneras.

    Beneficios de una puerta de enlace API

    Las puertas de enlace API nos benefician en la implementación de pruebas A / B, almacenamiento en caché, administración de cuotas de acceso, monitoreo de estado de API, control de versiones de API, Prueba del mono del caos, monetización y mucho más. Analicemos algunos de los siguientes beneficios.

    Seguridad 🛡️

    Cada vez que se realiza una llamada a la API, tiene que acceder a los servicios utilizando direcciones IP públicas. Esto expone riesgos.

    Al cambiar a API Gateways, se puede acceder a estos microservicios utilizando solo direcciones IP privadas. Esto da como resultado una forma más segura de transacción de datos. Además, el uso de API Gateway también protege los datos de ataques maliciosos y DDoS.

    Para garantizar la seguridad, un Certificado TLS Si es necesario, API Gateway los maneja todos manteniendo todas nuestras API detrás de una única IP estática o dominio y ayudando a protegerlas con claves, tokens y filtrado de IP.

    Autenticación, autorización y tolerancia a fallos 🔐

    autenticación rota

    Es importante garantizar la autenticación y autorización del usuario que inicia sesión en las aplicaciones. API Gateway lo facilita al ser un único punto de entrada y satisface todos los requisitos fácilmente. Por lo tanto, permite que solo los usuarios autorizados inicien sesión y que los usuarios autenticados realicen cambios, por lo que se gana tolerancia a fallas.

    Equilibrio de carga y enrutamiento 🚏

    En el caso de que entren múltiples solicitudes y aumente el tráfico, API Gateway ayuda a solucionarlo. Se hace creando multiplicaciones de servicios y llamándolos como Round-Robin. Puede administrar y enrutar las solicitudes de los clientes en función de la segmentación de usuarios. Por lo tanto, se proporciona diferente calidad o velocidad de contenido para diferentes usuarios.

    balanceo de carga

    Considere un caso de uso en el que se definen dos microservicios para devolver imágenes / videos de baja calidad e imágenes / videos de alta calidad para una computadora de escritorio y un dispositivo móvil, respectivamente. En este caso, podemos configurar una puerta de enlace API de tal forma que actúe como enrutador y si la solicitud proviene de un móvil enrutará esa solicitud al servicio de imágenes / videos de baja calidad, y si la solicitud proviene de el escritorio, puede enrutar al servicio de imágenes / videos de alta calidad. Este enrutamiento se puede realizar en función de encabezados, rutas y parámetros, etc.

    Aislamiento

    Si se han agregado o eliminado uno o más microservicios a la aplicación, no actualizaremos el código del cliente. En este caso, necesitamos realizar algunos cambios en la propia puerta de enlace API para realizar una llamada de acuerdo con los microservicios actualizados.

    Proxy inverso y almacenamiento en caché

    Servir un archivo estático (HTML, JS, CSS, fuentes) por un microservicio no es el mejor uso, en este caso, podemos mover estos archivos a la puerta de enlace API.

    Una puerta de enlace API puede mantener todos los contenidos estáticos y puede servir directamente al cliente. Del mismo modo, considere un servicio que evalúe los productos de tendencia, y estas tendencias se calculan por hora o por día. Entonces, una vez que se calcula la tendencia para el resto del tiempo, el servicio devolverá la misma respuesta repetidamente. En este caso, una puerta de enlace API tiene una función llamada caché de respuesta, donde podemos mencionar una URL y un umbral de tiempo para el que necesita almacenar en caché las respuestas.

    Adaptador de protocolo

    Si queremos aprovechar un protocolo como web socket o una versión más nueva de HTTP, es decir, HTTP / 2, e incluso si nuestros servicios de backend no están listos o no son compatibles con HTTP / 2 o web socket, una puerta de enlace API puede asumir la responsabilidad de convertir un protocolo más nuevo en uno más antiguo. Puede actuar como un adaptador de protocolo.

    Exploremos la puerta de enlace API.

    Primero, de código abierto ❤️ y soluciones autohospedadas.

    Kong Gateway

    Kong Gateway es la puerta de enlace de API nativa de la nube de código abierto más popular construida sobre un proxy ligero. Esta escrito en Lua corriendo con la ayuda del Nginx. Es un motor de plantillas que ayuda a acelerar el tiempo del evento. Garantiza ofrecer un rendimiento de latencia y una escalabilidad incomparables para todas nuestras aplicaciones de microservicio, independientemente de dónde se ejecuten.

    Empresas como Nasdaq, Honeywell, Cisco, FAB, Expedia, Samsung, Siemens, y Yahoo Japon utilice ampliamente la puerta de enlace API de Kong.

    Algunas de las características que ofrece Kong son:

    • Autenticación
    • Control de trafico
    • Análisis
    • Transformaciones
    • Inicio de sesión
    • Sin servidor
    • Ampliable mediante arquitectura de complementos

    Kong se puso muy bien documentación y integración.

    Puede ejecutar Kong en su preferido plataforma en la nube.

    Apache APISIX

    Apache APISIX nació inicialmente en China ZhiLiu tecnología y en una etapa posterior, entró en la incubadora de apache y se hizo de código abierto. El vicepresidente del proyecto, Ming Wen, afirma que esta puerta de enlace API resuelve varios desafíos planteados por los microservicios y nativos de la nube.

    Apache ApiSix está siendo utilizado por empresas como 360, HelloTalk, NetEase, TravelSky, Y muchos más.

    Apache APISIX se basa en Nginx y etcd, y tiene enrutamiento dinámico y carga en caliente de complementos, lo que es especialmente adecuado para la administración de API bajo el sistema de microservicios.

    Tyk

    Tyk es una puerta de enlace API de código abierto lista para la empresa. Tiene la opción de optar por autohospedado o administrado.

    Las siguientes son algunas de las características listas para usar que ofrece TYK.

    • Autenticación
    • Cuotas y limitación de tarifas
    • Control de versiones
    • Notificaciones y eventos
    • Simulacros de API
    • Monitoreo y análisis detallados
    • Comprometidos con la compatibilidad con versiones anteriores
    • GraphQL listo para usar

    TYK también está disponible en Mercado de AWS. Una buena opción si su pila de aplicaciones está en AWS.

    ocelote

    ocelote es una puerta de enlace API .NET.

    Este proyecto tiene como objetivo utilizar .NET, ejecutando microservicios o arquitectura orientada a servicios que necesita un punto de entrada unificado en su sistema. Sin embargo, funcionará con todo lo que hable HTTP y se ejecutará en cualquier plataforma compatible con ASP.NET Core.

    Ocelot actúa como middleware en un orden específico. Manipula el objeto HttpRequest en un estado especificado por su configuración hasta que llega a un middleware de creación de solicitudes. Crea un objeto HttpRequestMessage, que se utiliza para solicitar un servicio posterior. El middleware que realiza la solicitud es lo último en la canalización de Ocelot. No llama al siguiente middleware. Una pieza de middleware mapea el HttpResponseMessage en el objeto HttpResponse y se devuelve al cliente.

    Ocelot ofrece funciones estándar como enrutamiento, autenticación, limitación de velocidad, almacenamiento en caché, equilibrio de carga y más. No proporciona soporte para codificación fragmentada, reenvío de un encabezado de host y Swagger.

    Goku

    Puerta de enlace API de Goku es un proyecto general de EOLINK Inc. Es una puerta de enlace de microservicios basada en Golang que permite el enrutamiento dinámico de alto rendimiento, la orquestación de servicios, la gestión de tenencia múltiple, el control de acceso a API, etc.

    Goku proporciona una interfaz gráfica y un sistema de complementos para facilitar la configuración y expandirse de manera más conveniente. Además de las funciones estándar, Goku ofrece agrupamiento, actualizaciones en caliente, alertas, registro, etc.

    Puerta de enlace Express

    Puerta de enlace Express está construido sobre Express.js. Express Gateway es un grupo de componentes que se construyen declarativamente alrededor de Express para cumplir con el caso de uso de API Gateway. La potencia de Express Gateway se aprovecha del rico ecosistema que rodea al middleware Express.

    Empresas como Joyent, The Linux Foundation, VIRICITI, Switch Media, Coozy, y Musement están utilizando Express Gateway ampliamente.

    Es simple, rápido y ofrece todas las funciones básicas.

    Gloo

    Gloo es una puerta de enlace API con todas las funciones de próxima generación y un controlador de entrada para entornos nativos de la nube. Se basa en Envoy Proxy para conectar, proteger y controlar el tráfico en los servicios de su aplicación.

    Gloo admite la conexión a una amplia gama de cargas de trabajo para asegurar y administrar eso, y es excepcional en su enrutamiento de nivel funcional. Está disponible tanto en código abierto como empresarial. La versión empresarial ofrece lo siguiente.

    • Portal para desarrolladores
    • WAF
    • Prevención de pérdida de datos
    • Más forma de autenticarse
    • Limitación de velocidad avanzada y gestión de varios clústeres

    KrakenD

    KrakenD es una puerta de enlace API de código abierto de rendimiento ultra alto. Su funcionalidad principal es crear una API que actúa como un agregador de muchos microservicios en puntos finales únicos, haciendo el trabajo pesado automáticamente por usted: agregar, transformar, filtrar, decodificar, acelerar, autenticar y más.

    Ofrece una forma declarativa de crear los puntos finales. Está bien estructurado y en capas y está abierto a ampliar su funcionalidad utilizando middleware plug-and-play desarrollado por la comunidad o internamente.

    KrakenD afirma ser más rápido que Kong y Tyk. Revisar la resultados de evaluación comparativa.

    Fusio

    Fusio es un sistema de gestión de API porque ayuda a desarrollar puntos finales de API reales (es decir, solicitar y transformar datos de una base de datos). No se limita a solicitudes de proxy a otra API. Proporciona un backend simple e intuitivo para controlar y administrar su API

    Algunas de las funcionalidades que ofrece Fusio son:

    • monetización
    • Soporte de suscripción
    • Generar OAI, especificación de esquema RAML
    • Documentación

    y otras funciones de puerta de enlace API estándar.

    WSO2

    WSO2 es una solución de gestión de API de ciclo de vida completo que se puede ejecutar en cualquier lugar. Se puede implementar en las instalaciones, en la nube o de forma híbrida, donde sus componentes se pueden distribuir e implementar en múltiples infraestructuras en la nube y en las instalaciones.

    Comprende una puerta de enlace de API nativa de la nube y proporciona un operador de Kubernetes para convertir microservicios sin procesar en API administradas fácilmente. API Manager se integra con mallas de servicio y proporciona un plano de gestión y un plano de control completos para gestionar, supervisar y monetizar las API y los productos API.

    Admite la publicación de API, la gestión del ciclo de vida, el desarrollo de aplicaciones, el control de acceso, la limitación de velocidad y el análisis en un sistema perfectamente integrado.

    Siguiente página, exploremos las plataformas comerciales.

    Apigeo

    Apigeo es una plataforma de gestión de API entre nubes de Google Cloud.

    apigee

    Viene en los siguientes sabores:

    • Apigee: una solución SaaS alojada en la que paga por lo que usa. Te enfocas en desarrollar negocios y descargar la administración del entorno de Apigee a GCP.
    • Híbrido de Apigee: le permite administrar las API en las instalaciones, en Google Cloud Platform (GCP) o una combinación de ambos.

    Apigee ofrece administración de API de extremo a extremo, que viene con monetización y monitoreo incorporado.

    Cloud Endpoints

    Otro de Google Cloud.

    Endpoints es una versión más ligera de Apigee de Google Cloud. Es más adecuado para que los desarrolladores desarrollen, implementen y administren API en cualquier back-end de Google Cloud. Proporciona herramientas y bibliotecas para sus clientes desde la aplicación App Engine. Ayuda a crear y configurar usando Google Codelab. Codelab ayuda a ejecutar una API de muestra mediante App Engine en Java 8 y Maven 3.6.0.

    Google Cloud Endpoints se integra estrechamente con otros productos como Trace y Logging para monitoreo, Auth0 y Firebase para autenticación, GKE y App Engine para implementación automatizada, etc.

    Puerta de enlace API de Amazon

    AWS puede ofrecerle todo lo que necesite para ejecutar sus aplicaciones.

    También API.

    Puerta de enlace API de Amazon es un servicio totalmente administrado que está hecho para que los desarrolladores creen -> publiquen -> mantengan y protejan las API fácilmente a cualquier escala. Es compatible con ambos Sosegado y  WebSocket API y nos permite habilitar la comunicación bidireccional en tiempo real.

    A continuación se muestra la representación pictórica de Amazon, que ilustra cómo funciona la puerta de enlace API de Amazon.

    Si sus microservicios o API ya están alojados en AWS, entonces tiene sentido integrarlos con Amazon API Gateway. Ofrecen 1 millón de llamadas a la API en el nivel GRATUITO, lo cual es bueno para que vea cómo funciona.

    azur

    ¿Por qué dejar atrás a Azure?

    microsoft Azure ofrece administración de API de un extremo a otro en la nube, local o híbrida. Puede administrar la gestión de API de forma programática a través de REST API y SDK.

    Buenas noticias si usa SOAP. Puede importar el lenguaje de descripción de servicios web (WSDL) de su servicio SOAP y Azure creará un front-end SOAP. Ofrecen todas las funciones estándar, incluida la monetización. Anímate y pruébalo para experimentar la plataforma.

    Conclusión

    Una vez que su API esté lista, no olvide monitor y seguro ellos. Si aún está en desarrollo, consulte estos instrumentos para acelerar las pruebas y el desarrollo de API.

    Lo anterior debería darle una idea sobre las soluciones API Gateway y Management disponibles. Si tiene un presupuesto ajustado, puede probar el código abierto. Lo mejor es instalar algunos de ellos en tu VM en la nube para ver qué funciona para ti.

    ¡Buena suerte!