Azure Function Arquitectura

Sebastian Pacheco 286 Puntos de reputación
2025-04-21T13:02:26.6633333+00:00

Hola a todos.... estaba viendo temas de Azure Function y tengo algunas dudas de como es lo recomendado para levantar una arquitectura usando esa tecnología... por ejemplo si recibo datos de muchos dispositivos médicos (calculemos unos 8.000 dispositivos) y ademas tengo integraciones con proveedores donde quizás también me traiga información de allá.

Como debería armar algo seguro para que la información y los servicios no se vean comprometidos? debería poner como primera capa un application gateway o un api management? basta con uno de los 2 ?? o una function es medianamente segura por si sola (con sus opciones) exponiéndola al exterior ??

los datos de los dispositivos podrían llegar a un event grid o a un event bus (u otra alternativa?) y a medida que van llegando que una function detecte esto, se gatille y procede los datos ?? me refiero a algo un poco mas desacoplado para evitar colapsar la function (o no es realmente necesario?) o también podrían llegar directamente a la function que va a procesarlo la info ??

Si ponemos un event grid o a un event bus primero, este también debería estar seguro con alguna solución?

Si las function están detrás por ejemplo de un api management entonces no tiene sentido configurarla para todas las redes y lo mejor seria desactivar esta opción o dejarla solo con acceso de algunas ip y que se comuniquen internamente por el private link ?

Sorry, lo extenso... si alguien tiene alguna idea se lo agradezco.

Saludos!

Azure Information Protection
Azure Information Protection
Servicio de Azure que se usa para controlar y ayudar a proteger el correo electrónico, los documentos y los datos confidenciales que se comparten fuera de la empresa.
55 preguntas
{count} votos

Respuesta aceptada
  1. Smaran Thoomu 25,100 Puntos de reputación Personal externo de Microsoft Moderador
    2025-04-21T14:49:54.2533333+00:00

    Hola Sebastian Pacheco
    Estoy traduciendo las respuestas del inglés, así que por favor disculpa cualquier error gramatical.

    Gracias por tu consulta tan detallada. Estás pensando en los aspectos correctos al considerar escalabilidad y seguridad para un escenario de ingesta masiva desde dispositivos médicos y con integraciones externas.

    Te comento algunos puntos clave:

    Seguridad y Capa de Exposición

    Exponer Azure Functions directamente al exterior no es lo más recomendable en escenarios sensibles como el manejo de datos médicos. Aunque las funciones soportan autenticación basada en claves o identidades, no brindan un control completo.

    Recomendación: Utilizar API Management (APIM) como capa frontal. APIM ofrece un control más granular: filtrado por IP, limitación de llamadas (rate limiting), autenticación (OAuth2/JWT), monitoreo centralizado, etc.

    • Si optas por APIM, puedes deshabilitar el acceso público de la Function App usando integración con VNet + Private Endpoints, permitiendo que solo APIM se comunique con la función de forma segura.
    • Application Gateway es más adecuado para aplicaciones web. Si todo es vía APIs, APIM por sí solo es suficiente.

    Ingesta de Eventos

    Dado que mencionas aproximadamente 8,000 dispositivos, es muy recomendable desacoplar la ingesta del procesamiento para evitar cuellos de botella y asegurar durabilidad.

    Event Hubs (o IoT Hub, si necesitas identificar y gestionar dispositivos individualmente) es la mejor opción. Estas soluciones están preparadas para manejar millones de eventos por segundo.

    Las Azure Functions pueden suscribirse a estos eventos y escalar automáticamente según la carga. Este patrón es común en escenarios de IoT o telemetría.

    También podrías implementar procesamiento por lotes o aplicar lógica de control de flujo dentro de las funciones si es necesario.

    Recomendaciones:

    1. Para integraciones con proveedores externos, nuevamente APIM es una buena opción si el intercambio es vía REST.
    2. Asegura todos los puntos de entrada (Event Hub, APIM, Azure Functions) usando identidad administrada, RBAC y reglas de red.
    3. Asegúrate de centralizar los logs (por ejemplo, en Azure Monitor o Log Analytics) para trazabilidad y generación de alertas.

    Hazme saber si tienes alguna pregunta y estaré encantado de ayudarte.


    Si la información proporcionada fue útil, no olvide “Aceptar respuesta” y “Votar”, esto también será útil para otros miembros de la comunidad

    1 persona ha encontrado útil esta respuesta.

1 respuesta adicional

Ordenar por: Muy útil
  1. Sebastian Pacheco 286 Puntos de reputación
    2025-04-25T12:30:47.2033333+00:00

    Gracias @Smaran Thoomu por los Tips ... son de gran ayuda para clarificar un poco este tema! el tema de Azure DevOps o GitHub Actions para desplegar Function suena interesante.

    La APIM también debería ir en la misma vNet que las Function o en una vNet diferente y luego se emparejan?? que se recomienda en este caso ?

    De todas formas estaba viendo y el costo de una APIM es bastante elevado, quizás en el nivel de "Consumo" al comienzo sirva, pero este nivel no tiene Virtual Network, por lo tanto habría que irse si o si por el plan "Standar" o "Premium". Si el "Custom" no tiene vNet como le manda entonces las request a los backend, si los backend no están públicos?

    Gracias!

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.