Presentamos InterSystems API Manager (+ seminario web)

Recientemente lanzamos InterSystems API Manager (IAM), un nuevo componente de InterSystems IRIS Data Platform que proporciona visibilidad, control y gestión del tráfico API web en toda la infraestructura de TI.

En este artículo, le mostraré cómo configurar IAM y le demostraré algunas de las muchas capacidades que tiene disponibles con IAM. InterSystems API Manager le permite:

  • Supervise la API, comprenda quién usa la API, qué API son las más populares y cuáles requieren mejoras.
  • Controle quién usa la API y limite el uso de la API, desde simples restricciones de acceso hasta restricciones basadas en solicitudes: usted tiene un control personalizado y puede responder rápidamente a los cambios en los patrones de consumo de API.
  • API seguras utilizando mecanismos de seguridad centralizados como OAuth2.0, LDAP o Key Token Authentication.
  • Facilite las cosas a los desarrolladores externos y bríndeles una experiencia API superior abriendo un portal para desarrolladores dedicado.
  • Escale la API y garantice una latencia de respuesta mínima.

La gestión de API es esencial para la transición a SOA o arquitectura de microservicios, simplificando la integración entre (micro)servicios individuales y poniéndolos a disposición de todos los consumidores externos e internos. Como resultado, las nuevas API se vuelven más fáciles de crear, mantener y consumir.

Si ya está utilizando InterSystems IRIS, puede agregar la opción IAM a su licencia. La opción IAM es gratuita para los clientes de InterSystems IRIS, pero debe solicitar una nueva clave de licencia a InterSystems para comenzar a utilizar IAM.

Si aún no utiliza InterSystems IRIS y tiene previsto probar InterSystems API Manager, póngase en contacto con InterSystems.

Introducción e instalación

Los clientes de InterSystems pueden descargar la distribución IAM desde el sitio web WRC sección “Distribución de software” y ejecútelo como un contenedor Docker. Requerimientos mínimos del sistema:

Inicialmente, debe descargar la imagen de Docker (¡Importante! El archivo con WRC no es una imagen de Docker, debe descomprimirlo, hay una imagen de Docker dentro):

docker load -i iam_image.tar

Este comando hará que la imagen de IAM esté disponible para su uso posterior en su servidor. IAM se ejecuta como un contenedor independiente, por lo que puede escalarlo independientemente de InterSystems IRIS. La ejecución de IAM requiere acceso a InterSystems IRIS para descargar una licencia.

Configurar InterSystems IRIS:

  • Habilitar la aplicación web /api/IAM
  • Habilitar usuario IAM
  • Cambiar contraseña de usuario IAM

Ahora iniciemos el contenedor IAM. En el archivo encontrarás scripts. iam-setup para Windows y Unix (y Mac). Estos scripts le ayudarán a configurar las variables de entorno correctamente, permitiendo que el contenedor IAM establezca una conexión con InterSystems IRIS. A continuación se muestra un ejemplo del script que se ejecuta en Mac:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

Como puede ver, el nombre completo de la imagen, la dirección IP, el puerto IRIS de InterSystems y la contraseña del usuario de IAM es todo lo que necesita para comenzar.

En lugar de ejecutar un script, puedes configurar las variables de entorno manualmente:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

Lanzar

Ahora iniciemos IAM ejecutando el comando:

docker-compose up -d

Este comando organiza los contenedores de IAM y garantiza que todo se ejecute correctamente. El estado de los contenedores se verifica mediante el comando:

docker ps

Abra la interfaz de administración en su navegador localhost:8002.

Presentamos InterSystems API Manager (+ seminario web)

Está vacío por ahora porque es un nodo completamente nuevo. Cambiemos eso. IAM admite el concepto de espacios de trabajo para dividir las API en módulos y/o comandos. Vaya al espacio de trabajo "predeterminado" que usaremos para nuestros experimentos.

Presentamos InterSystems API Manager (+ seminario web)

El número de solicitudes para este espacio de trabajo sigue siendo cero, pero podrá hacerse una idea de los conceptos básicos de IAM en el menú de la izquierda. Los dos primeros elementos: Servicios y Rutas son los más importantes:

  • El servicio es la API a la que queremos brindar acceso a los consumidores. Así, la API REST en InterSystems IRIS es un Servicio, al igual que, por ejemplo, la API de Google si quieres utilizarla.
  • La Ruta decide a qué Servicio se deben reenviar las solicitudes entrantes. Cada Ruta tiene unas condiciones específicas, y si se cumplen, la solicitud se envía al Servicio correspondiente. Por ejemplo, una ruta puede coincidir con IP, dominio del remitente, métodos HTTP, partes de un URI o una combinación de estos ejemplos.

Servicio

Creemos un Servicio InterSystems IRIS, con los siguientes valores:

Campo
Valor
Descripción

nombre
iris
Nombre del Servicio

fortaleza
IP
Host o ip del servidor InterSystems IRIS

Puerto
52773
Puerto web del servidor InterSystems IRIS

camino
/api/taller
Ruta raíz

protocolo
http
Protocolo

Deje los valores restantes por defecto. Clic en el botón Create y anote el ID del Servicio creado.

Ruta

Ahora creemos una ruta:

Campo
Valor
Descripción

camino
/api/taller
Ruta raíz

protocolo
http
Protocolo

servicio.id
guía de 3
Servicio (ID del paso anterior)

Deje los valores restantes por defecto. Clic en el botón Create y anota el ID de la Ruta creada. De forma predeterminada, IAM escucha las solicitudes entrantes en el puerto 8000. Ahora las solicitudes enviadas a http://localhost:8000 y comenzando con /api/atelier son redirigidos a InterSystems IRIS.

pruebas

Intentemos crear una solicitud en un cliente REST (estoy usando Cartero).

Presentamos InterSystems API Manager (+ seminario web)

Enviemos una solicitud GET a http://localhost:8000/api/atelier/ (no lo olvide / al final) y recibir una respuesta de InterSystems IRIS. Cada solicitud pasa por IAM, que recopila métricas:

  • Código de estado HTTP.
  • Retraso
  • Monitoreo (si está configurado).

Hice algunas solicitudes más (incluidas dos solicitudes a puntos finales inexistentes como /api/atelier/est/), los resultados son inmediatamente visibles en el panel:

Presentamos InterSystems API Manager (+ seminario web)

Trabajar con complementos

Ahora que tenemos una Ruta configurada, podemos administrar nuestra API. Podemos agregar características que complementarán nuestro servicio.

La forma más común de cambiar el comportamiento de una API es agregar un complemento. Los complementos aíslan la funcionalidad individual y se pueden conectar a IAM de forma global o solo a entidades individuales, como un Usuario (grupo de usuarios), un Servicio o una Ruta. Comenzaremos agregando el complemento de limitación de velocidad a la ruta. Para establecer una conexión entre el complemento y la ruta, necesitamos un identificador único (ID) de la ruta.

Limitar el número de solicitudes

Haga clic en Complementos en el menú de la barra lateral izquierda. Puede ver todos los complementos activos en esta pantalla, pero como este servidor IAM es nuevo, todavía no hay complementos activos. Continúe con el siguiente paso haciendo clic en "Nuevo complemento".

El complemento que necesitamos está en la categoría "Control de tráfico" y se llama "Limitación de velocidad". Selecciónelo. Hay bastantes configuraciones que puedes establecer aquí, pero solo nos importan dos campos:

Campo
Valor
Descripción

ruta_id
ID
ID de ruta

config.minuto
5
Número de solicitudes por minuto

Eso es todo. El complemento está configurado y activo. Destacar que podemos elegir diferentes intervalos de tiempo, como un minuto, una hora o un día. Las configuraciones se pueden combinar (por ejemplo, 1000 solicitudes por hora y al mismo tiempo 100 solicitudes por minuto). Elegí minutos porque facilita comprobar la funcionalidad del complemento.

Si envía la misma solicitud nuevamente en Postman, verá que la respuesta se devuelve con 2 encabezados adicionales:

  • XRateLimit-Limit-minuto: 5
  • XRateLimit-minuto-restante: 4

Esto le dice al cliente que puede realizar hasta 5 solicitudes por minuto y puede realizar 4 solicitudes más en el intervalo de tiempo actual.

Presentamos InterSystems API Manager (+ seminario web)

Si realiza la misma solicitud una y otra vez, eventualmente se quedará sin cuota disponible y en su lugar recibirá un código de estado HTTP de 429 con el siguiente cuerpo de respuesta:

Presentamos InterSystems API Manager (+ seminario web)

Espere un minuto y podrá enviar solicitudes nuevamente.

Este es un mecanismo conveniente que le permite:

  • Proteja el backend de sobretensiones de carga.
  • Dígales a los clientes cuántas solicitudes pueden realizar.
  • Monetizar la API.

Puede establecer valores para diferentes intervalos de tiempo y así suavizar el tráfico API durante un período de tiempo determinado. Digamos que permite 600 solicitudes por hora en una ruta particular. En promedio hay 10 solicitudes por minuto. Pero nada impide que el cliente complete las 600 solicitudes en el primer minuto de una hora. Quizás esto sea lo que necesitas. Es posible que desees lograr una carga más uniforme en el transcurso de una hora. Estableciendo el valor del campo config.minute Un valor de 20 garantiza que sus usuarios no realicen más de 20 solicitudes por minuto y 600 solicitudes por hora. Esto permite pequeños picos en un intervalo de un minuto en comparación con un flujo promedio completo de 10 solicitudes por minuto, pero los usuarios no pueden usar la cuota por hora durante un minuto. Ahora necesitarán al menos 30 minutos para utilizar todas sus solicitudes. Los clientes recibirán encabezados adicionales para cada intervalo de tiempo especificado, por ejemplo:

Encabezado HTTP
Valor

X-RateLimit-Limit-hora
600

X-RateLimit-hora-restante
595

X-RateLimit-Limit-minuto
20

X-RateLimit-minuto-restante
16

Por supuesto, hay muchas formas diferentes de configurar los límites de consultas según lo que desee lograr.

Hallazgos

Terminaré aquí, creo que hay suficiente material para el primer artículo sobre InterSystems API Manager. Solo utilizamos uno de más de 40 complementos. Hay muchas más cosas interesantes que puedes hacer con IAM:

  • Agregue un mecanismo de autenticación central para todas sus API.
  • Escale la carga utilizando un equilibrador de carga en múltiples servicios.
  • Agregue nuevas funciones y correcciones de errores a una audiencia de prueba antes de una actualización completa.
  • Proporcione a los desarrolladores internos y externos un portal web dedicado que documente todas las API.
  • Solicitudes de caché para reducir el tiempo de respuesta y reducir la carga en el backend del sistema.

referencias

Webinar

Le invitamos al seminario web “Gestión de API con InterSystems API Management”, que tendrá lugar el 21 de noviembre a las 10:00 hora de Moscú (GMT+3).
InterSystems API Manager (IAM) es un nuevo componente de InterSystems IRIS Data Platform que proporciona monitoreo, control y gestión del tráfico hacia/desde las API web dentro de la infraestructura de TI. En el seminario web demostraremos las capacidades clave de InterSystems API Management:

  • Herramientas de monitoreo de tráfico API.
  • Controles de tráfico API, incluido el control del ancho de banda, limitación del número de llamadas API, mantenimiento de listas de direcciones IP permitidas y denegadas, etc.
  • Herramientas de configuración de seguridad API.
  • Portal de desarrolladores para publicar documentación API interactiva.
  • Punto único de acceso a la API.

El seminario web está destinado a arquitectos, desarrolladores y administradores de sistemas.

Se requiere registro!

Fuente: habr.com

Añadir un comentario