es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Separar el marco de trabajo web de la aplicación principal.

Tengo una pregunta sobre el diseño/arquitectura de software. Quiero construir una aplicación que proporcione una API REST y ejecute varios algoritmos en segundo plano. Mi objetivo principal es separar estrictamente estas dos funciones. Idealmente, no importaría para cualquier persona que esté desarrollando los algoritmos qué marco de trabajo se está utilizando actualmente. El marco web sería responsable de proporcionar la API y realizar llamadas a cualquier servicio/base de datos necesario para la aplicación principal.

Mi primera idea para lograr esta arquitectura sería tener una “API interna” entre el marco web y la aplicación principal. Sin embargo, estoy confundido sobre cómo diseñar dicha API. La implementación sería en Java, pero creo que el primer objetivo de la arquitectura debería ser proporcionar una estructura que pueda implementarse en cualquier lenguaje orientado a objetos.

Dado que no tengo experiencia en el diseño de software, quiero preguntar amablemente si esta arquitectura tiene sentido y si alguien podría indicarme recursos que describan algo similar. Hasta ahora, no pude encontrar realmente lo que quiero. Tal vez simplemente esté pasando por alto las palabras clave correctas para describir mi problema.

Gracias por su ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Construyendo una aplicación con funciones separadas usando API REST y algoritmos

    Como experto en TI especializado en patrones de diseño, arquitectura y arquitectura web, me gustaría proporcionar una solución a la siguiente pregunta:

    Declaración del problema:

    El usuario desea construir una aplicación que proporcione una API RESTful y ejecute algoritmos en segundo plano, donde las dos funciones estén estrictamente separadas. La aplicación debe permitir que cualquier desarrollador trabaje en los algoritmos, independientemente del marco actual utilizado. El marco web debe ser responsable de proporcionar la API y realizar llamadas a cualquier servicio/base de datos necesario para la aplicación principal. La implementación debe ser en Java, pero la arquitectura debe estar estructurada en cualquier lenguaje orientado a objetos (OOP).

    Solución:

    Para lograr esta arquitectura, se puede utilizar un diseño orientado a microservicios. El objetivo es tener múltiples servicios independientes que se comuniquen entre sí mediante API. Debemos identificar tres servicios principales: el servicio web, el servicio algorítmico y el servicio de API interno.

    1. Servicio web

    El servicio web es responsable de construir la API RESTful y realizar llamadas a los servicios externos. La implementación puede ser en Java con el uso de frameworks como Spring o Java EE. Aparte de eso, el marco puede variar con el tiempo, y cualquier desarrollador familiarizado con Java debería poder contribuir al proyecto.

    2. Servicio algorítmico

    El servicio algorítmico maneja los algoritmos que se ejecutan en segundo plano de la aplicación. Puede ser construido en cualquier lenguaje de programación adecuado para la tarea. Como se solicita, la arquitectura debe estar estructurada independientemente del lenguaje de implementación.

    3. Servicio de API interno

    El servicio de API interno permite la comunicación entre el servicio web y el servicio algorítmico. Debe proporcionar la flexibilidad de cambiar ambos servicios sin afectar al otro. La implementación del servicio de API interno debe ser en el mismo lenguaje de programación que el servicio algorítmico.

    Comunicación

    La implementación de la comunicación entre los servicios se puede lograr a través de HTTP/REST. La estandarización de la comunicación entre servicios mediante el uso de HTTP/REST permite reemplazar soluciones existentes con otras tecnologías sin ningún impacto significativo, como pasar de una API sincrónica o RESTful a un enfoque asíncrono basado en eventos.

    Conclusión:

    En conclusión, se puede utilizar un diseño orientado a microservicios para construir una aplicación que proporcione una API RESTful y ejecute algoritmos en segundo plano. Los servicios web, algorítmicos y de API interna deben estar desacoplados, lo que permite la independencia en su implementación con diferentes lenguajes de programación. Proporcionar una estructura que pueda implementarse con cualquier lenguaje orientado a objetos debe ser la máxima prioridad de la arquitectura. La comunicación entre los servicios se puede facilitar a través de HTTP/REST, permitiendo la flexibilidad de cambiar las tecnologías de servicios sin afectar a los demás.

Comments are closed.