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 | ||
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 y mejores prácticas de la industria para el desarrollo de microservicios con Java y Spring Boot: | + | Este manifiesto establece las políticas y 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 y mejores prácticas adicionales para complementar el manifiesto: | + | ==== Mejora Continua y Prácticas de Equipo ==== |
- | 61. Diseño Guiado por Dominio: Aplicar los principios del Diseño Guiado por el Dominio (DDD) en el diseño de los microservicios. | + | - Capacitación Continua: Fomentar la capacitación continua del equipo. |
- | 62. Patrones de Diseño: Utilizar patrones de diseño apropiados como CQRS, Event Sourcing, Saga, etc. | + | - Mejora Continua: Fomentar 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 y 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 y 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]] |