Servicio Incrustado
Un Servicio Incrustado se refiere a un componente de software o funcionalidad que se integra directamente dentro de una aplicación o sistema más grande, en lugar de ser accedido como un microservicio externo y separado a través de una llamada de red. En lugar de realizar una solicitud de API remota, la lógica del servicio o un envoltorio ligero se implementa junto con o directamente dentro del entorno de tiempo de ejecución de la aplicación anfitriona.
La incrustación de servicios cambia significativamente el perfil operativo de una aplicación. Al co-ubicar la funcionalidad, los desarrolladores pueden reducir la latencia de red, minimizar la sobrecarga de comunicación entre procesos y simplificar la complejidad de implementación para ciertas características fuertemente acopladas. Este enfoque a menudo se elige cuando las ganancias de rendimiento al eliminar saltos de red superan los beneficios de la desacoplamiento total del servicio.
La implementación varía según la pila tecnológica. En algunos casos, la lógica del servicio se compila directamente en el binario principal de la aplicación. En otros, puede ejecutarse como un proceso sidecar dentro del mismo contenedor o espacio de proceso, comunicándose a través de mecanismos en memoria (como memoria compartida o llamadas a funciones directas) en lugar de HTTP/RPC a través de una red.
Los servicios incrustados se utilizan frecuentemente para operaciones de baja latencia y alta frecuencia. Los ejemplos incluyen la validación de datos en tiempo real, comprobaciones de autenticación ligeras realizadas inmediatamente después de la entrada del usuario o lógica especializada de transformación de datos que debe ejecutarse dentro de la tubería de solicitud principal.
Las ventajas principales incluyen la reducción de la latencia, la simplificación de la depuración local y una posible reducción de los costos operativos asociados con la gestión de numerosos puntos finales de red independientes. Para operaciones de ruta crítica, la incrustación garantiza un rendimiento predecible.
La principal desventaja es la reducción de la modularidad. El acoplamiento estrecho de los servicios hace que la escalabilidad y actualización independientes sean más complejas. Un fallo en el servicio incrustado puede hacer que toda la aplicación anfitriona se caiga, aumentando el radio de explosión.
Este concepto contrasta con la arquitectura tradicional de Microservicios, donde los servicios están intencionalmente desacoplados. Comparte similitudes con los Patrones Sidecar, aunque el nivel de integración (en proceso frente a co-ubicado) difiere significativamente.