Hace unas semanas tuve una conversación interesante sobre las muchas herramientas que el cloud, en particular Azure, ofrece. Lo que más animó el tema, fue el tema sobre la dificultad para los ‘no adeptos’ de entender algunas herramientas y lo que en verdad ofrecen.
Una de estas herramientas es API Management y la pregunta era de esperar: ‘¿Qué es API Management?’. En verdad la duda era más bien: ’¿Qué problema me soluciona API Management?’. Por esta razón existen herramientas que dan respuesta a una necesidad, pero para entender API Management (APIM de ahora) es suficiente con entender qué necesidad cubre.
En los últimos años, las APIs Rest y las arquitecturas basadas en microservicios han ganado mucha fama debido a su buena calidad, pero también debido a los retos que supone exponer y administrar estos servicios, gestionar su acceso y seguridad, las versiones de esto servicio que con los años se van creando, étc…. Y aquí es donde entra en juego APIM.
El objetivo de esta herramienta es dar un enfoque central donde es posible gestionar estos servicios, de forma que esto sea lo suficientemente trasparente para los mismos.
Técnicamente APIM implementa, entre otros, el patrón de API Gateway, lo que hace es exponer una única ruta central donde se pueden registrar subrutas, cada una conecta una Api diferente. APIM recoge la petición y la enruta para la API destino. Se expone como servicio con latencia bajísima y que puede gestionar millones de peticiones diarias sin afectar sus tiempos de respuesta.
En su nivel básico, ofrece un portal donde se administran las APIs y su publicación como Producto, sus versiones, pudiendo definir su ‘publico’ y reglas para acceder al mismo; como la necesidad de registro y su aprobación. Ofrece también a los clientes un portal con la documentación de la API y un cliente de acceso para pruebas, blogs, reporting de problemas y su gestión.
Pero no se limita a esto, cada petición pasa por un sistema de ‘reglas’ que permiten enriquecer la información, bloquear la petición y mucho más.
A nivel de seguridad lo que se expone públicamente no son los servicios -conectados simplemente a APIM a través de un private network- sino la APIM misma. Esto simplifica la seguridad, ya que los servicios están en vuestra red o en vuestra red privada en Azure y no hay forma de llegar a ellos directamente desde el web.
Además, APIM no se limita simplemente a pasar la petición, implementa un sistema de autenticación, basado en Azure Ad y con la posibilidad de conectar server OAUTH. Puede insertar, modificar o eliminar headers, claims. Todas peticiones son autenticadas. Es posible también limitar el número de peticiones, o la banda utilizada, para limitar clientes demasiados ‘agresivos’.
A nivel de prestaciones puede definir políticas de cache, utiliza una cache distribuida a alta prestación, y permite definir operaciones sujetas a cache y sus variables, si es privada, publica, cuales parámetros o headers utilizar para distinguir las respuestas a devolver.
Si esto es poco, además ofrece estadísticas de uso de cada API y la localización geográfica de las llamadas, analíticas de datos, posibilidad de notificaciones y otras utilidades. Si estáis pensando en ofrecer APIs Rest públicas, APIM es una herramienta indispensable.
Si quieres saber todo lo que puede hacer SOGETI bajo tecnología Microsoft, visita nuestra web.
Roberto Grassi
. NET Senior Architect and Mobile Lead | Soluciones Microsoft | SOGETI ESPAÑA
0 comments on “API Management para todos”