Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
simo:documentos:tecnicos:recomendaciones [2017/11/14 21:21] lgomez [Reingeniería a sistema de notificaciones y citaciones] |
simo:documentos:tecnicos:recomendaciones [2017/11/14 21:26] (actual) lgomez [Integración con Orfeo] |
||
---|---|---|---|
Línea 155: | Línea 155: | ||
Las librerías Spring Boot y Dojo Toolkit se encuentran desactualizadas, se recomienda realizar una actualización a las últimas versiones, esto trae múltiples beneficios como: | Las librerías Spring Boot y Dojo Toolkit se encuentran desactualizadas, se recomienda realizar una actualización a las últimas versiones, esto trae múltiples beneficios como: | ||
- | Corrección de bugs | + | * Corrección de bugs |
- | Nuevas capacidades y funcionalidades | + | * Nuevas capacidades y funcionalidades |
- | Seguridad | + | * Seguridad |
- | Ajuste a las nuevas tecnologías | + | * Ajuste a las nuevas tecnologías |
- | Optimizaciones | + | * Optimizaciones |
Según una evaluación previa, la actualización es muy transparente y no debe ocasionar mayores problemas, sin embargo, es indispensable realizar pruebas de regresión exhaustivas para garantizar que la actualización de librerías no afecte la correctitud del sistema. | Según una evaluación previa, la actualización es muy transparente y no debe ocasionar mayores problemas, sin embargo, es indispensable realizar pruebas de regresión exhaustivas para garantizar que la actualización de librerías no afecte la correctitud del sistema. | ||
Por otro lado, también existen nuevas versiones de la librerías dgrid, sin embargo, esta nueva versión involucra que también se deba reemplazar el módulo dojo/store por la librería dstore, lo cual también hace necesario reescribir una muy buena parte del código Javascript, en consecuencia no se recomienda la actualización de esta librería a no ser que se haga en conjunto con la actualización del componente base SimpleCrud y sus clases de soporte. La actualización de este componente significa por sí misma una refactorización de la arquitectura del sistema, pero este tema se trata a mayor profundidad en una recomendación posterior. | Por otro lado, también existen nuevas versiones de la librerías dgrid, sin embargo, esta nueva versión involucra que también se deba reemplazar el módulo dojo/store por la librería dstore, lo cual también hace necesario reescribir una muy buena parte del código Javascript, en consecuencia no se recomienda la actualización de esta librería a no ser que se haga en conjunto con la actualización del componente base SimpleCrud y sus clases de soporte. La actualización de este componente significa por sí misma una refactorización de la arquitectura del sistema, pero este tema se trata a mayor profundidad en una recomendación posterior. | ||
Línea 183: | Línea 183: | ||
La funcionalidad que permite a los aspirantes revisar sus exámenes escritos y confrontarlos contra las hojas de respuestas está proporcionada por un aplicativo separado, se recomienda integrar esta funcionalidad dentro de SIMO teniendo en cuenta que | La funcionalidad que permite a los aspirantes revisar sus exámenes escritos y confrontarlos contra las hojas de respuestas está proporcionada por un aplicativo separado, se recomienda integrar esta funcionalidad dentro de SIMO teniendo en cuenta que | ||
- | Se puede utilizar el sistema de autenticación existente | + | - Se puede utilizar el sistema de autenticación existente |
- | Se puede integrar la funcionalidad al sistema de reclamaciones | + | - Se puede integrar la funcionalidad al sistema de reclamaciones |
- | Es posible otorgar acceso a las hojas de respuesta en ventanas de tiempo específicas evitando cargas excesivas sobre el sistema, | + | - Es posible otorgar acceso a las hojas de respuesta en ventanas de tiempo específicas evitando cargas excesivas sobre el sistema |
==== Cargue estructurado de preguntas y respuestas ==== | ==== Cargue estructurado de preguntas y respuestas ==== | ||
Línea 205: | Línea 204: | ||
El siguiente paso natural en esta línea de desarrollo, es integrar un sistema de pruebas virtuales al sistema, este sistema permitiría: | El siguiente paso natural en esta línea de desarrollo, es integrar un sistema de pruebas virtuales al sistema, este sistema permitiría: | ||
- | Crear pruebas virtuales por parte de las Universidades | + | - Crear pruebas virtuales por parte de las Universidades |
- | Presentar pruebas por parte del ciudadano utilizando su usuario SIMO | + | - Presentar pruebas por parte del ciudadano utilizando su usuario SIMO |
- | Obtener resultados preliminares de las pruebas inmediatamente tras su presentación e integrar estos resultados en la base de datos SIMO | + | - Obtener resultados preliminares de las pruebas inmediatamente tras su presentación e integrar estos resultados en la base de datos SIMO |
- | Almacenar pruebas en estándar QTI. | + | - Almacenar pruebas en estándar QTI. |
==== Cachés de servidor distribuídos ==== | ==== Cachés de servidor distribuídos ==== | ||
Línea 221: | Línea 220: | ||
Normalmente este problema se soluciona invalidando los cachés manualmente de modo que tengan que ser repoblados, sin embargo esta operación es manual y solo se realiza cuando se evidencian inconsistencias. | Normalmente este problema se soluciona invalidando los cachés manualmente de modo que tengan que ser repoblados, sin embargo esta operación es manual y solo se realiza cuando se evidencian inconsistencias. | ||
Se recomienda entonces instalar un sistema de memoria distribuido como REDIS que proporciones una visión unificada de los cachés, este enfoque tiene las siguientes ventajas. | Se recomienda entonces instalar un sistema de memoria distribuido como REDIS que proporciones una visión unificada de los cachés, este enfoque tiene las siguientes ventajas. | ||
- | Soportado transparentemente por el sistema de cachés de Spring Boot | + | * Soportado transparentemente por el sistema de cachés de Spring Boot |
- | No necesita de mecanismos de replicación puesto que el servidor REDIS es desplegado en un solo nodo el cual es accedido por todos los nodos de SIMO a través de la red. | + | * No necesita de mecanismos de replicación puesto que el servidor REDIS es desplegado en un solo nodo el cual es accedido por todos los nodos de SIMO a través de la red. |
- | Puede ser utilizado también para almacenar información de sesión evitando así depender de las sesiones pegadizas del firewall (Ver recomendación de CSRF) | + | * Puede ser utilizado también para almacenar información de sesión evitando así depender de las sesiones pegadizas del firewall (Ver recomendación de CSRF) |
- | De muy fácil instalación y mantenimiento | + | * De muy fácil instalación y mantenimiento |
- | Puede ser utilizado también para almacenar índices Lucene (Ver siguiente recomendación) | + | * Puede ser utilizado también para almacenar índices Lucene (Ver siguiente recomendación) |
==== Directorios de índices Lucene ==== | ==== Directorios de índices Lucene ==== | ||
Línea 238: | Línea 236: | ||
En una primera instancia, se implementó un sistema distribuido Infinispan que mantenía sincronizados los índices, pero debido a la alta concurrencia y a que existían muchos más objetos indexados, este mecanismo fue desmontado en favor de los directorios Infinispan locales. | En una primera instancia, se implementó un sistema distribuido Infinispan que mantenía sincronizados los índices, pero debido a la alta concurrencia y a que existían muchos más objetos indexados, este mecanismo fue desmontado en favor de los directorios Infinispan locales. | ||
Con el objeto de evitar la sincronización manual que actualmente se realiza, se recomienda adoptar alguna de las siguientes estrategias: | Con el objeto de evitar la sincronización manual que actualmente se realiza, se recomienda adoptar alguna de las siguientes estrategias: | ||
- | Utilizar Infinispan respaldado por REDIS (Ver recomendación anterior). Al ser REDIS un servidor central no se tienen problemas de replicación de índices, puesto que cuando se actualiza un índice en un nodo, dicha actualización solo tiene que ser notificada al servidor REDIS y no a todos los otros nodos. | + | * Utilizar Infinispan respaldado por REDIS (Ver recomendación anterior). Al ser REDIS un servidor central no se tienen problemas de replicación de índices, puesto que cuando se actualiza un índice en un nodo, dicha actualización solo tiene que ser notificada al servidor REDIS y no a todos los otros nodos. |
- | Utilizar ElasticSearch como proveedor de los servicios de indexamiento, este enfoque minimiza la complejidad y es muy configurable y manejable pero reduce un poco el desempeño puesto que todo el sistema de indexamiento queda centralizado en un servidor central y es necesario acceder a las funciones de búsqueda a través de la red. | + | * Utilizar ElasticSearch como proveedor de los servicios de indexamiento, este enfoque minimiza la complejidad y es muy configurable y manejable pero reduce un poco el desempeño puesto que todo el sistema de indexamiento queda centralizado en un servidor central y es necesario acceder a las funciones de búsqueda a través de la red. |
- | Utilizar índices en FileSystem con replicación automática y preferiblemente utilizando una implementación en memoria como MMapDirectory para evitar el acceso continuo a disco. | + | * Utilizar índices en FileSystem con replicación automática y preferiblemente utilizando una implementación en memoria como MMapDirectory para evitar el acceso continuo a disco. |
==== Sistema de archivos distribuido ==== | ==== Sistema de archivos distribuido ==== | ||
Línea 269: | Línea 267: | ||
Se propone implementar un recomendador basado en inteligencia artificial que sugiera empleos a los ciudadanos basados en su hoja de vida (estudios, experiencia laboral) y/o en empleos escogidos por ciudadanos con características similares. | Se propone implementar un recomendador basado en inteligencia artificial que sugiera empleos a los ciudadanos basados en su hoja de vida (estudios, experiencia laboral) y/o en empleos escogidos por ciudadanos con características similares. | ||
Para crear este sistema se debe | Para crear este sistema se debe | ||
- | Escoger un modelo de aprendizaje, es decir, el algoritmo y los datos | + | - Escoger un modelo de aprendizaje, es decir, el algoritmo y los datos |
- | Entrenar el modelo y validar | + | - Entrenar el modelo y validar |
- | Implementar algoritmo en producción y enlazarlo a la interfaz de usuario | + | - Implementar algoritmo en producción y enlazarlo a la interfaz de usuario |
- | Por eficiencia es mejor calcular las recomendaciones en horas de baja concurrencia y solo hacerlo para los ciudadanos que hayan habilitado la función de recomendación. | + | - Por eficiencia es mejor calcular las recomendaciones en horas de baja concurrencia y solo hacerlo para los ciudadanos que hayan habilitado la función de recomendación. |
- | También es importante implementar una encuesta donde los ciudadanos califiquen si las recomendaciones han sido útiles y utilizar esta calificación como dato de aprendizaje | + | - También es importante implementar una encuesta donde los ciudadanos califiquen si las recomendaciones han sido útiles y utilizar esta calificación como dato de aprendizaje |
===== Recomendaciones y desarrollos a largo plazo ===== | ===== Recomendaciones y desarrollos a largo plazo ===== | ||
Línea 285: | Línea 283: | ||
Se recomienda implementar una integración entre Orfeo y el sistema de reclamaciones de SIMO de tal forma que: | Se recomienda implementar una integración entre Orfeo y el sistema de reclamaciones de SIMO de tal forma que: | ||
- | Al radicar una PQR referente a SIMO en Orfeo se despliegue un formulario especial que cree una reclamación SIMO por medio de una URL REST | + | - Al radicar una PQR referente a SIMO en Orfeo se despliegue un formulario especial que cree una reclamación SIMO por medio de una URL REST |
- | Al contestar una reclamación SIMO se actualice la respuesta al radicado original en ORFEO | + | - Al contestar una reclamación SIMO se actualice la respuesta al radicado original en ORFEO |
==== Integración con BNLE ==== | ==== Integración con BNLE ==== | ||