Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:new-migracion-sicoferp:manifestcode

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:new-migracion-sicoferp:manifestcode [2024/06/13 14:11]
192.168.177.2
ada:howto:sicoferp:factory:new-migracion-sicoferp:manifestcode [2024/06/13 14:38] (actual)
192.168.177.2 [Manifiesto de Políticas y Buenas Prácticas para Desarrollo de Microservicios]
Línea 34: Línea 34:
 Busque y reciba retroalimentación constante sobre su código. Escuche atentamente las sugerencias de sus compañeros,​ usuarios y clientes. La retroalimentación le permite identificar oportunidades de mejora y adaptar su código a las necesidades reales. Busque y reciba retroalimentación constante sobre su código. Escuche atentamente las sugerencias de sus compañeros,​ usuarios y clientes. La retroalimentación le permite identificar oportunidades de mejora y adaptar su código a las necesidades reales.
  
-==== Manifiesto de Políticas y Buenas Prácticas para Desarrollo de Microservicios ==== +===== Manifiesto de Políticas y Buenas Prácticas para Desarrollo de Microservicios ​===== 
-Aquí está el manifiesto ​ampliado con más principios ​mejores ​prácticas ​de la industria ​para el desarrollo de microservicios ​con Java Spring Boot:+Este manifiesto ​establece las políticas ​buenas ​prácticas para el desarrollo de microservicios ​en Java 21 con Spring Boot 3.x, desplegados en contenedores Docker mediante CI/CD con Jenkins. Los servicios se generarán utilizando arquetipos Maven, alojados en un repositorio GitLab, y sus APIs documentadas con OpenApi.
  
-=== Arquitectura y Tecnologías === +==== Arquitectura y Tecnologías ​====
  
   - Microservicios:​ La arquitectura seguirá el patrón de microservicios desarrollados en Java versión 21 con Spring Boot 3.x.   - Microservicios:​ La arquitectura seguirá el patrón de microservicios desarrollados en Java versión 21 con Spring Boot 3.x.
Línea 46: Línea 46:
   - Documentación OpenAPI: Las APIs se documentarán utilizando especificaciones OpenAPI.   - Documentación OpenAPI: Las APIs se documentarán utilizando especificaciones OpenAPI.
  
-=== Principios Generales ===+==== Principios Generales ​====
  
   - Dominio Acotado: Cada microservicio tendrá un dominio de negocio acotado y bien definido.   - Dominio Acotado: Cada microservicio tendrá un dominio de negocio acotado y bien definido.
Línea 55: Línea 55:
   - Tolerancia a Fallos: Los microservicios serán resistentes a fallos y se recuperarán de forma elegante.   - Tolerancia a Fallos: Los microservicios serán resistentes a fallos y se recuperarán de forma elegante.
  
-=== Arquitectura de Microservicios ===+==== Arquitectura de Microservicios ​====
  
   - Patrón API Gateway: Se utilizará un API Gateway para enrutar las solicitudes a los microservicios.   - Patrón API Gateway: Se utilizará un API Gateway para enrutar las solicitudes a los microservicios.
Línea 64: Línea 64:
   - Registro Centralizado:​ Los registros (logs) de los microservicios se centralizarán para facilitar el análisis.   - Registro Centralizado:​ Los registros (logs) de los microservicios se centralizarán para facilitar el análisis.
  
-=== Diseño de Microservicios ===+==== Diseño de Microservicios ​====
  
   - Basado en Eventos: Los microservicios se comunicarán mediante un modelo basado en eventos cuando sea posible.   - Basado en Eventos: Los microservicios se comunicarán mediante un modelo basado en eventos cuando sea posible.
Línea 73: Línea 73:
   - Escalabilidad:​ El diseño permitirá la escalabilidad horizontal de los microservicios según las necesidades.   - Escalabilidad:​ El diseño permitirá la escalabilidad horizontal de los microservicios según las necesidades.
   - Seguridad: Se implementarán mecanismos de seguridad como autenticación,​ autorización y cifrado de datos.   - Seguridad: Se implementarán mecanismos de seguridad como autenticación,​ autorización y cifrado de datos.
 +  - Diseño Guiado por Dominio: Aplicar los principios del Diseño Guiado por el Dominio (DDD).
 +  - Patrones de Diseño: Utilizar patrones de diseño apropiados como CQRS, Event Sourcing, Saga, etc.
 +  - Mensajería Asíncrona: Favorecer la comunicación asíncrona entre microservicios mediante mensajería.
 +  - Gestión de Errores: Implementar una gestión sólida de errores y excepciones.
 +  - Correlación de Trazas: Implementar un mecanismo para correlacionar trazas distribuidas.
 +  - Caching Distribuido:​ Utilizar una solución de caché distribuida para mejorar el rendimiento.
 +  - API Compuesta: Implementar una API compuesta cuando sea necesario.
 +  - Separación de Concerns: Separar claramente las responsabilidades de los microservicios.
 +  - Principio SOLID: Aplicar los principios SOLID en el diseño e implementación.
  
-## Desarrollo de Microservicios+==== Desarrollo de Microservicios ​====
  
-26. Generación por Arquetipo: Todo microservicio del negocio se generará por medio de un arquetipo Maven. +  - Generación por Arquetipo: Todo microservicio del negocio se generará por medio de un arquetipo Maven. 
-27. Registro en Repositorio:​ Los microservicios se registrarán en el repositorio de la organización. +  ​- ​Registro en Repositorio:​ Los microservicios se registrarán en el repositorio de la organización. 
-28. Perfiles de Configuración:​ Cada microservicio tendrá perfiles de configuración para los ambientes (dev, qa, pre, prod). +  ​- ​Perfiles de Configuración:​ Cada microservicio tendrá perfiles de configuración para los ambientes (dev, qa, pre, prod). 
-29. Perfiles CI/CD: Cada microservicio tendrá perfiles de configuración CI/CD para los ambientes. +  ​- ​Perfiles CI/CD: Cada microservicio tendrá perfiles de configuración CI/CD para los ambientes. 
-30. Mapeo de Entidades: Las entidades de persistencia mapearán toda la clase que representan. +  ​- ​Mapeo de Entidades: Las entidades de persistencia mapearán toda la clase que representan. 
-31. Consultas SQL Complejas: Se utilizarán entidades y anotaciones `@Immutable`,​ `@SubSelect` para consultas SQL complejas. +  ​- ​Consultas SQL Complejas: Se utilizarán entidades y anotaciones `@Immutable`,​ `@SubSelect` para consultas SQL complejas. 
-32. Uso de Entidades: Las entidades sólo se usarán en clases `@Component`,​ no en `@RestController` o `@Service`. +  ​- ​Uso de Entidades: Las entidades sólo se usarán en clases `@Component`,​ no en `@RestController` o `@Service`. 
-33. Responsabilidad de Persistencia:​ Cada entidad pertenecerá a un solo microservicio responsable de su persistencia. +  ​- ​Responsabilidad de Persistencia:​ Cada entidad pertenecerá a un solo microservicio responsable de su persistencia. 
-34. Exposición con DTOs: Las entidades se expondrán mediante DTOs (Data Transfer Objects). +  ​- ​Exposición con DTOs: Las entidades se expondrán mediante DTOs (Data Transfer Objects). 
-35. Código SQL Estándar: Las entidades utilizarán código SQL estándar, sin depender de un motor de base de datos específico. +  ​- ​Código SQL Estándar: Las entidades utilizarán código SQL estándar, sin depender de un motor de base de datos específico. 
-36. Servicios Orquestadores:​ Las clases `@Service` solo orquestarán los métodos de la solución. +  ​- ​Servicios Orquestadores:​ Las clases `@Service` solo orquestarán los métodos de la solución. 
-37. Controladores de API: Las clases `@RestController` solo expondrán endpoints de API. +  ​- ​Controladores de API: Las clases `@RestController` solo expondrán endpoints de API. 
-38. Clonación de Objetos: No se utilizarán interfaces `Clonable`, se implementarán métodos de clonación.+  ​- ​Clonación de Objetos: No se utilizarán interfaces `Clonable`, se implementarán métodos de clonación
 +  - Estándares de Codificación:​ Definir y adherirse a estándares de codificación consistentes. 
 +  - Inyección de Dependencias:​ Utilizar inyección de dependencias para desacoplamiento y testabilidad. 
 +  - Configuración Externalizada:​ Externalizar la configuración de los microservicios. 
 +  - Gestión de Secretos: Implementar una solución segura para la gestión de secretos. 
 +  - Registro Estructurado:​ Utilizar un formato de registro estructurado y estandarizado. 
 +  - Correlación de Registros: Correlacionar los registros de diferentes microservicios.
  
-## Pruebas y Calidad+==== Pruebas y Calidad ​====
  
-39. Pruebas Unitarias: Todos los microservicios tendrán un conjunto completo de pruebas unitarias automatizadas. +  - Pruebas Unitarias: Todos los microservicios tendrán un conjunto completo de pruebas unitarias automatizadas. 
-40. Pruebas de Integración:​ Se implementarán pruebas de integración para validar las interacciones entre microservicios. +  ​- ​Pruebas de Integración:​ Se implementarán pruebas de integración para validar las interacciones entre microservicios. 
-41. Pruebas de Contrato: Se utilizarán pruebas de contrato para validar las interfaces entre microservicios. +  ​- ​Pruebas de Contrato: Se utilizarán pruebas de contrato para validar las interfaces entre microservicios. 
-42. Cobertura de Pruebas: Se establecerá un umbral mínimo de cobertura de pruebas para cada microservicio. +  ​- ​Cobertura de Pruebas: Se establecerá un umbral mínimo de cobertura de pruebas para cada microservicio. 
-43. Análisis Estático de Código: Se realizará un análisis estático de código para detectar problemas y vulnerabilidades. +  ​- ​Análisis Estático de Código: Se realizará un análisis estático de código para detectar problemas y vulnerabilidades. 
-44. Revisiones de Código: Se implementarán revisiones de código por pares antes de integrar los cambios. +  ​- ​Revisiones de Código: Se implementarán revisiones de código por pares antes de integrar los cambios. 
-45. Pruebas de Rendimiento:​ Se realizarán pruebas de rendimiento y carga para validar el comportamiento bajo estrés. +  ​- ​Pruebas de Rendimiento:​ Se realizarán pruebas de rendimiento y carga para validar el comportamiento bajo estrés. 
-46. Pruebas de Seguridad: Se llevarán a cabo pruebas de seguridad para identificar y mitigar vulnerabilidades. +  ​- ​Pruebas de Seguridad: Se llevarán a cabo pruebas de seguridad para identificar y mitigar vulnerabilidades. 
-47. Control de Calidad: Se establecerá un proceso de control de calidad para validar los entregables. +  ​- ​Control de Calidad: Se establecerá un proceso de control de calidad para validar los entregables. 
-48. Métricas de Calidad: Se definirán y monitorearán métricas de calidad para cada microservicio.+  ​- ​Métricas de Calidad: Se definirán y monitorearán métricas de calidad para cada microservicio
 +  - Pruebas de Regresión: Ejecutar pruebas de regresión automatizadas antes de despliegues. 
 +  - Pruebas de Caja Negra: Implementar pruebas de caja negra para el comportamiento externo. 
 +  - Pruebas de Estrés: Realizar pruebas de estrés y carga para validar condiciones extremas. 
 +  - Pruebas de Caos: Considerar la implementación de pruebas de caos para validar resiliencia. 
 +  - Gestión de Datos de Prueba: Implementar una estrategia para la gestión de datos de prueba. 
 +  - Pruebas Exploratorias:​ Realizar pruebas exploratorias para identificar escenarios no previstos. 
 +  - Pruebas de Usabilidad: Llevar a cabo pruebas de usabilidad para validar la experiencia de usuario. 
 +  - Pruebas de Accesibilidad:​ Implementar pruebas de accesibilidad para garantizar la inclusión.
  
-## Operaciones y Despliegue+==== Operaciones y Despliegue ​====
  
-49. Contenedores Inmutables: Los contenedores Docker serán inmutables y se reconstruirán para cada despliegue. +  - Contenedores Inmutables: Los contenedores Docker serán inmutables y se reconstruirán para cada despliegue. 
-50. Orquestación de Contenedores:​ Se utilizará una plataforma de orquestación de contenedores como Kubernetes. +  ​- ​Orquestación de Contenedores:​ Se utilizará una plataforma de orquestación de contenedores como Kubernetes. 
-51. Despliegues Automatizados:​ Los despliegues se realizarán de forma automatizada mediante el pipeline de CI/CD. +  ​- ​Despliegues Automatizados:​ Los despliegues se realizarán de forma automatizada mediante el pipeline de CI/CD. 
-52. Entornos Separados: Existirán entornos separados para desarrollo, pruebas, pre-producción y producción. +  ​- ​Entornos Separados: Existirán entornos separados para desarrollo, pruebas, pre-producción y producción. 
-53. Promoción de Entornos: Los microservicios se promoverán a través de los entornos de forma controlada. +  ​- ​Promoción de Entornos: Los microservicios se promoverán a través de los entornos de forma controlada. 
-54. Versionamiento de Artefactos: Los artefactos de los microservicios tendrán un esquema de versionamiento claro. +  ​- ​Versionamiento de Artefactos: Los artefactos de los microservicios tendrán un esquema de versionamiento claro. 
-55. Registro de Artefactos: Los artefactos se almacenarán en un registro de artefactos centralizado. +  ​- ​Registro de Artefactos: Los artefactos se almacenarán en un registro de artefactos centralizado. 
-56. Rollbacks: Se implementará un mecanismo para realizar rollbacks de forma sencilla en caso de problemas. +  ​- ​Rollbacks: Se implementará un mecanismo para realizar rollbacks de forma sencilla en caso de problemas. 
-57. Actualizaciones Graduales: Se utilizarán estrategias de despliegue gradual para minimizar el impacto en producción. +  ​- ​Actualizaciones Graduales: Se utilizarán estrategias de despliegue gradual para minimizar el impacto en producción. 
-58. Monitoreo de Recursos: Se monitoreará el uso de recursos (CPU, memoria, red, disco) de los microservicios. +  ​- ​Monitoreo de Recursos: Se monitoreará el uso de recursos (CPU, memoria, red, disco) de los microservicios. 
-59. Alertas y Notificaciones:​ Se configurarán alertas y notificaciones para detectar problemas de forma temprana. +  ​- ​Alertas y Notificaciones:​ Se configurarán alertas y notificaciones para detectar problemas de forma temprana. 
-60. Respaldo y Recuperación:​ Se implementarán mecanismos de respaldo y recuperación de datos.+  ​- ​Respaldo y Recuperación:​ Se implementarán mecanismos de respaldo y recuperación de datos
 +  - Gestión de Incidentes: Establecer un proceso para la gestión y resolución de incidentes. 
 +  - Gestión de Cambios: Implementar un proceso de gestión de cambios. 
 +  - Documentación Actualizada:​ Mantener la documentación técnica y operativa actualizada. 
 +  - Pruebas de Humo: Implementar pruebas de "​humo"​ para validar los despliegues. 
 +  - Canary Releases: Utilizar despliegues canarios para pruebas de producción controladas. 
 +  - Separación de Responsabilidades:​ Separar responsabilidades de desarrollo, operaciones y seguridad.
  
-Aquí están 40 principios ​mejores prácticas adicionales para complementar el manifiesto:+==== Mejora Continua ​Prácticas de Equipo ====
  
-61. Diseño Guiado por DominioAplicar los principios ​del Diseño Guiado por el Dominio (DDD) en el diseño de los microservicios+  - Capacitación ContinuaFomentar la capacitación continua ​del equipo
-62. Patrones de DiseñoUtilizar patrones de diseño apropiados como CQRS, Event Sourcing, Saga, etc. +  - Mejora ContinuaFomentar ​una cultura ​de mejora continua ​en todo el ciclo de vida
-63. Mensajería Asíncrona: Favorecer la comunicación asíncrona entre microservicios mediante mensajería (p.ej. Apache Kafka). +  ​- ​Retrospectivas:​ Realizar retrospectivas periódicas para identificar áreas de mejora. 
-64. Gestión de Errores: Implementar ​una gestión sólida ​de errores y excepciones ​en los microservicios. +  ​- ​Gestión de Dependencias:​ Implementar un proceso para gestionar dependencias. 
-65. Correlación de Trazas: Implementar un mecanismo para correlacionar trazas distribuidas entre microservicios. +  ​- ​Automatización de Procesos: Automatizar los procesos de desarrollo, pruebas y despliegue. 
-66. Caching Distribuido:​ Utilizar una solución de caché distribuida para mejorar ​el rendimiento. +  ​- ​Análisis de Impacto: Realizar un análisis de impacto antes de cambios significativos. 
-67. API Compuesta: Implementar una API compuesta cuando sea necesario para simplificar el consumo ​de microservicios+ 
-68. Separación de Concerns: Separar claramente las responsabilidades de los microservicios (CRUD, procesamiento,​ etc.). +==== Seguridad ​Cumplimiento ==== 
-69. Principio SOLID: Aplicar los principios SOLID en el diseño e implementación de los microservicios. + 
-70. Estándares de Codificación:​ Definir y adherirse a estándares de codificación consistentes. +  ​- ​Pruebas de Seguridad: Realizar pruebas de seguridad periódicas para identificar vulnerabilidades. 
-71. Inyección de Dependencias:​ Utilizar inyección de dependencias para fomentar el desacoplamiento y la testabilidad. +  ​- ​Cumplimiento Normativo: Asegurar el cumplimiento de normas y regulaciones relevantes. 
-72. Configuración Externalizada:​ Externalizar la configuración de los microservicios para facilitar su administración. +  ​- ​Auditorías de Seguridad: Realizar auditorías de seguridad externas de forma regular. 
-73. Gestión de Secretos: Implementar una solución segura para la gestión y rotación de secretos (claves, contraseñas,​ etc.). +  ​- ​Gestión de Riesgos: Implementar un proceso de gestión de riesgos. 
-74. Registro Estructurado:​ Utilizar un formato de registro estructurado y estandarizado (p.ej. JSON). +  ​- ​Planes de Contingencia:​ Definir y mantener planes de contingencia y recuperación de desastres. 
-75. Correlación de Registros: Correlacionar los registros de diferentes microservicios para facilitar el diagnóstico. +  
-76. Gestión de Incidentes: Establecer un proceso claro para la gestión y resolución de incidentes. +
-77. Gestión de Cambios: Implementar un proceso de gestión de cambios para controlar las modificaciones en los microservicios. +
-78. Documentación Actualizada:​ Mantener la documentación técnica y operativa actualizada en todo momento. +
-79. Pruebas de Humo: Implementar pruebas de "​humo"​ (smoke tests) para validar los despliegues en producción. +
-80. Canary Releases: Utilizar despliegues canarios (canary releases) para realizar pruebas de producción controladas. +
-81. Separación de Responsabilidades:​ Separar claramente las responsabilidades de desarrollo, operaciones y seguridad. +
-82. Capacitación Continua: Fomentar la capacitación continua del equipo en tecnologías y buenas prácticas. +
-83. Retrospectivas:​ Realizar retrospectivas periódicas para identificar áreas de mejora. +
-84. Gestión de Dependencias:​ Implementar un proceso para gestionar ​y actualizar las dependencias ​de los microservicios+
-85. Automatización de Procesos: Automatizar ​al máximo ​los procesos de desarrollo, pruebas y despliegue. +
-86. Análisis de Impacto: Realizar un análisis de impacto antes de implementar ​cambios significativos. +
-87. Pruebas de Regresión: Ejecutar pruebas de regresión automatizadas antes de cada despliegue. +
-88. Pruebas de Caja Negra: Implementar pruebas de caja negra para validar el comportamiento externo de los microservicios. +
-89. Pruebas de Estrés: Realizar pruebas de estrés ​carga para validar el comportamiento bajo condiciones extremas. +
-90. Pruebas de Caos: Considerar la implementación de pruebas de caos para validar la resiliencia del sistema. +
-91. Gestión de Datos de Prueba: Implementar una estrategia para la gestión de datos de prueba (generación,​ enmascaramiento,​ etc.). +
-92. Pruebas Exploratorias:​ Realizar pruebas exploratorias para identificar escenarios no previstos. +
-93. Pruebas de Usabilidad: Llevar a cabo pruebas de usabilidad para validar la experiencia de usuario. +
-94. Pruebas de Accesibilidad:​ Implementar pruebas de accesibilidad para garantizar la inclusión. +
-95. Pruebas de Seguridad: Realizar pruebas de seguridad periódicas para identificar ​y mitigar ​vulnerabilidades. +
-96. Cumplimiento Normativo: Asegurar el cumplimiento de normas y regulaciones relevantes ​(GDPR, PCI-DSS, etc.)+
-97. Auditorías de Seguridad: Realizar auditorías de seguridad externas de forma regular. +
-98. Gestión de Riesgos: Implementar un proceso de gestión de riesgos ​para identificar y mitigar los riesgos asociados+
-99. Planes de Contingencia:​ Definir y mantener ​actualizados los planes de contingencia y recuperación de desastres. +
-100. Mejora Continua: Fomentar una cultura de mejora continua en todos los aspectos del ciclo de vida del software.+
  
 Recuerde: El Manifiesto de Codificación no es una lista rígida de reglas, sino una guía flexible que se adapta a las necesidades de cada proyecto. Adopte estos principios y adáptelos a su contexto para crear software de alta calidad que resista el paso del tiempo. Recuerde: El Manifiesto de Codificación no es una lista rígida de reglas, sino una guía flexible que se adapta a las necesidades de cada proyecto. Adopte estos principios y adáptelos a su contexto para crear software de alta calidad que resista el paso del tiempo.
  
 [[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp|←Regresar]] [[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp|←Regresar]]
ada/howto/sicoferp/factory/new-migracion-sicoferp/manifestcode.1718287868.txt.gz · Última modificación: 2024/06/13 14:11 por 192.168.177.2