Lineamientos | Stack Tecnológico
Los servicios Java desarrollados para Alpura deberán seguir el siguiente Stack tecnológico.

Los siguientes lineamientos de arquitectura se basan en los componentes seleccionados:
1. Marco de Desarrollo Principal:
Spring Boot 3.4.4: Es el marco base para el desarrollo de servicios java.
Justificación: Spring Boot proporciona una configuración rápida y sencilla, reduce significativamente la cantidad de código boilerplate y ofrece una amplia gama de características integradas (servidor embebido, gestión de dependencias, etc.). Promueve la consistencia y acelera el desarrollo, permitiendo al equipo enfocarse en la lógica de negocio en lugar de la infraestructura.
2. Entorno de ejecución y desarrollo Java:
Java JDK 21 (TEMURIN by ADOPTIUM 21.0.6 - LTS): Se debe utilizar la última versión LTS (Long-Term Support) del Java Development Kit.
Justificación: Adoptar la última versión LTS garantiza el acceso a las últimas funcionalidades del lenguaje, mejoras significativas en el rendimiento y actualizaciones de seguridad críticas durante un período extendido. Esto asegura la longevidad y la robustez de la aplicación a largo plazo.
3. Desarrollo capas Web:
Spring Web: Se debe emplear el módulo Spring Web para la construcción de APIs RESTful y aplicaciones web.
Justificación: Spring Web ofrece un marco robusto y flexible para el desarrollo de aplicaciones web y APIs. Su integración con el ecosistema Spring facilita la gestión de solicitudes, el manejo de datos, la seguridad y otras funcionalidades esenciales. Adherirse a los principios de diseño de APIs REST con Spring Web asegura la escalabilidad, la interoperabilidad y la facilidad de consumo de los servicios desarrollados.
4. Persistencia de Datos:
Spring Data JPA: Se debe utilizar Spring Data JPA para simplificar la interacción con la base de datos.
Justificación: Spring Data JPA abstrae la complejidad de la capa de acceso a datos, permitiendo a los desarrolladores interactuar con las bases de datos a través de interfaces de repositorio con mínima codificación. Esto reduce el boilerplate, mejora la legibilidad del código y facilita el cambio entre diferentes proveedores de bases de datos si fuera necesario.
5. Optimización y Boilerplate:
Lombok 1.18.36: Se debe integrar Lombok para reducir la cantidad de código boilerplate (getters, setters, constructores, etc.).
Justificación: Lombok simplifica el desarrollo al eliminar la necesidad de escribir manualmente código repetitivo. Esto resulta en un código más limpio, conciso y fácil de mantener, reduciendo la posibilidad de errores humanos y mejorando la productividad del equipo.
6. Pruebas Unitarias:
JUnit 5.9.1: Se debe utilizar JUnit 5 como el marco principal para la escritura y ejecución de pruebas unitarias.
Justificación: Las pruebas unitarias son fundamentales para asegurar la calidad y la fiabilidad del código. JUnit 5 proporciona un conjunto de herramientas potente y flexible para escribir y ejecutar pruebas de forma eficiente, permitiendo la detección temprana de errores y facilitando la refactorización segura del código.
7. Mocking:
Mockito 4.10.0 / 5.x: Se debe emplear Mockito para la creación de objetos simulados (mocks) en las pruebas unitarias. La versión base mockito-core:4.10.0 se gestiona mediante el BOM Alpura 1.0.4.
Justificación: Mockito facilita el aislamiento de las unidades de código durante las pruebas unitarias al permitir la simulación de dependencias externas. Esto hace que las pruebas sean más rápidas, deterministas y enfocadas en la lógica específica de la unidad bajo prueba, mejorando la precisión de las pruebas y la identificación de problemas.
8. Logging:
Log4j 2 / SLF4J: Se debe utilizar Log4j 2 / SLF4J como la librería de logging para registrar información relevante sobre la ejecución de la aplicación.
Justificación: Un sistema de logging robusto es esencial para el monitoreo, la depuración y el diagnóstico de problemas en la aplicación, especialmente en entornos de producción. Log4j 2 ofrece un rendimiento superior y una gran flexibilidad en la configuración de los formatos de log, los destinos y los niveles de severidad, lo que permite obtener información detallada y útil sobre el comportamiento de la aplicación.
9. Gestión de Dependencias y Construcción:
Maven 3.8+ y Bill of Materials (BOM Alpura 1.0.4): Se debe utilizar Maven como la herramienta de gestión de dependencias e importar obligatoriamente el BOM centralizado com.alpura:bom:1.0.4.
Justificación: El BOM 1.0.4 estandariza el proceso de construcción, gestión de dependencias y empaquetado de proyectos Java. Su sistema de gestión centralizada automatiza la inclusión de librerías transversales de Alpura y dependencias de terceros sin conflictos de versión.
La adopción obligatoria de estos componentes y la adhesión a estos lineamientos de arquitectura son cruciales para construir una aplicación Java moderna, robusta, mantenible y de alta calidad. Esta estandarización facilitará la colaboración, reducirá la complejidad y asegurará la consistencia en todo el ciclo de vida del desarrollo del software.