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/07 12:34]
192.168.177.52
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.
  
-===== Políticas =====+===== Manifiesto de Políticas ​y Buenas Prácticas para Desarrollo de Microservicios ​===== 
 +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.
  
-  * Todo microservicio del negocio ​debe generarse ​por medio de arquetipo. +==== Arquitectura y Tecnologías ==== 
-  ​* Todo microservicio debe entregarse a la fábrica registrado ​en el repositorio de la organización. + 
-  ​* Todo microservicio ​debe disponer de profiles ​de configuración para los ambientes ​definidos ​(default, ​dev, qa*, pre*, prod*+  - Microservicios:​ La arquitectura seguirá el patrón de microservicios desarrollados en Java versión 21 con Spring Boot 3.x. 
-  ​* Todo microservicio ​debe disponer de profiles ​de configuración CI/CD para los ambientes ​definidos (dev, qa*, pre*, prod*) +  - Contenedores Docker: Los microservicios se empaquetarán y desplegarán en contenedores Docker. 
-  ​Las entidades ​que hacen persistencia ​deben mapear todo la clase que representan. +  - CI/CD: Se implementará un pipeline de integración y entrega continuas (CI/CD) con Jenkins. ​  
-  ​* Las consultas sql que devuelven data compleja (más de una propiedad) deben tener su entidad ​utilizar las anotaciones @Immutable, @SubSelect. +  - Arquetipos Maven: Los nuevos microservicios se generarán a partir de arquetipos Maven. 
-  ​Las entidades ​solo se pueden utilizar ​en clases @Component ​no pueden ser utilizadas ​en otras clases superiores con anotaciones ​@RestController@Service. +  - Repositorio GitLab: El código fuente se gestionará en un repositorio GitLab. 
-  ​* Las entidades solo pueden pertenecer ​a un solo microservicio ​el cual se encargará de la responsabilidad ​de persistencia. +  - Documentación OpenAPI: Las APIs se documentarán utilizando especificaciones OpenAPI. 
-  ​Las entidades ​solo pueden exponerse por medio de DTOs (Data-Transfer-Objectel cual pueden devolver información parcial/​total según se requiera+ 
-  ​Las entidades ​del negocio no deben utilizar funcionalidades ​de un motor de base de datos especifico, solo debe tener código SQL estandar+==== Principios Generales ==== 
-  ​Las clases ​servicios deben utilizar la anotación ​@Service ​solo pueden orquestar ​los métodos de la solucion+ 
-  ​Las clases ​controladoras deben utilizar la anotación ​@RestController ​solo pueden exponer ​endpoints. ​+  - Dominio Acotado: Cada microservicio tendrá un dominio de negocio acotado y bien definido. 
 +  - Responsabilidad Única: Los microservicios deben seguir el principio de responsabilidad única. 
 +  - Desacoplamiento:​ Los microservicios estarán desacoplados y podrán ser desplegados de forma independiente. 
 +  - Contratos Estrictos: Las interfaces entre microservicios tendrán contratos estrictos. 
 +  - Redundancia Mínima: Se evitará la redundancia de código y datos entre microservicios. 
 +  - Tolerancia a Fallos: Los microservicios serán resistentes a fallos y se recuperarán de forma elegante. 
 + 
 +==== Arquitectura de Microservicios ==== 
 + 
 +  - Patrón API Gateway: Se utilizará un API Gateway para enrutar las solicitudes a los microservicios. 
 +  - Service Discovery: Los microservicios utilizarán un mecanismo de descubrimiento de servicios. 
 +  - Circuit Breaker: Se implementará un patrón de Circuit Breaker para evitar saturaciones. 
 +  - Equilibrio de Carga: Se realizará un balanceo de carga entre las instancias de los microservicios. 
 +  - Monitoreo Distribuido:​ Se monitoreará el estado y rendimiento de los microservicios de forma distribuida. 
 +  - Registro Centralizado:​ Los registros (logs) de los microservicios se centralizarán para facilitar el análisis. 
 + 
 +==== Diseño de Microservicios ==== 
 + 
 +  - Basado en Eventos: Los microservicios se comunicarán mediante un modelo basado en eventos cuando sea posible. 
 +  - API RESTful: Las APIs de los microservicios seguirán los principios de diseño RESTful. 
 +  - Versionamiento de APIs: Las APIs tendrán un esquema de versionamiento definido. 
 +  - Stateless: Los microservicios serán stateless siempre que sea posible. 
 +  - Almacenamiento Externo: Los microservicios no almacenarán datos localmente, utilizarán almacenes externos. 
 +  - 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. 
 +  - 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 ==== 
 + 
 +  - Generación por Arquetipo: ​Todo microservicio del negocio ​se generará ​por medio de un arquetipo ​Maven
 +  ​- Registro en Repositorio:​ Los microservicios se registrarán ​en el repositorio de la organización. 
 +  ​- Perfiles de Configuración:​ Cada microservicio ​tendrá perfiles ​de configuración para los ambientes (dev, qa, pre, prod). 
 +  ​- Perfiles CI/CD: Cada microservicio ​tendrá perfiles ​de configuración CI/CD para los ambientes. 
 +  ​- Mapeo de Entidades: ​Las entidades ​de persistencia ​mapearán toda la clase que representan. 
 +  ​- Consultas SQL Complejas: Se utilizarán entidades ​y anotaciones ​`@Immutable``@SubSelect` para consultas SQL complejas
 +  ​- Uso de Entidades: ​Las entidades ​sólo se usarán ​en clases ​`@Component`, no en `@RestController` o `@Service`
 +  ​- Responsabilidad de Persistencia:​ Cada entidad pertenecerá ​a un solo microservicio ​responsable ​de su persistencia. 
 +  ​- Exposición con DTOs: Las entidades ​se expondrán mediante ​DTOs (Data Transfer ​Objects). 
 +  ​- 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
 +  ​- Servicios Orquestadores: ​Las clases ​`@Servicesolo orquestarán ​los métodos de la solución
 +  ​- Controladores de API: Las clases ​`@RestControllersolo expondrán ​endpoints ​de API. 
 +  - 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 Unitarias: Todos los microservicios tendrán un conjunto completo de pruebas unitarias automatizadas. 
 +  - Pruebas de Integración:​ Se implementarán pruebas de integración para validar las interacciones entre microservicios. 
 +  - Pruebas de Contrato: Se utilizarán pruebas de contrato para validar las interfaces entre microservicios. 
 +  - Cobertura de Pruebas: Se establecerá un umbral mínimo de cobertura de pruebas para cada microservicio. 
 +  - Análisis Estático de Código: Se realizará un análisis estático de código para detectar problemas y vulnerabilidades. 
 +  - Revisiones de Código: Se implementarán revisiones de código por pares antes de integrar los cambios. 
 +  - Pruebas de Rendimiento:​ Se realizarán pruebas de rendimiento y carga para validar el comportamiento bajo estrés. 
 +  - Pruebas de Seguridad: Se llevarán a cabo pruebas de seguridad para identificar y mitigar vulnerabilidades. 
 +  - Control de Calidad: Se establecerá un proceso de control de calidad para validar los entregables. 
 +  - 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 ==== 
 + 
 +  - Contenedores Inmutables: Los contenedores Docker serán inmutables y se reconstruirán para cada despliegue. 
 +  - Orquestación de Contenedores:​ Se utilizará una plataforma de orquestación de contenedores como Kubernetes. 
 +  - Despliegues Automatizados:​ Los despliegues se realizarán de forma automatizada mediante el pipeline de CI/CD. 
 +  - Entornos Separados: Existirán entornos separados para desarrollo, pruebas, pre-producción y producción. 
 +  - Promoción de Entornos: Los microservicios se promoverán a través de los entornos de forma controlada. 
 +  - Versionamiento de Artefactos: Los artefactos de los microservicios tendrán un esquema de versionamiento claro. 
 +  - Registro de Artefactos: Los artefactos se almacenarán en un registro de artefactos centralizado. 
 +  - Rollbacks: Se implementará un mecanismo para realizar rollbacks de forma sencilla en caso de problemas. 
 +  - Actualizaciones Graduales: Se utilizarán estrategias de despliegue gradual para minimizar el impacto en producción. 
 +  - Monitoreo de Recursos: Se monitoreará el uso de recursos (CPU, memoria, red, disco) de los microservicios. 
 +  - Alertas y Notificaciones:​ Se configurarán alertas y notificaciones para detectar problemas de forma temprana. 
 +  - 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. 
 + 
 +==== Mejora Continua y Prácticas de Equipo ==== 
 + 
 +  - Capacitación Continua: Fomentar la capacitación continua del equipo. 
 +  - Mejora Continua: Fomentar una cultura de mejora continua en todo el ciclo de vida. 
 +  - Retrospectivas:​ Realizar retrospectivas periódicas para identificar áreas de mejora. 
 +  - Gestión de Dependencias:​ Implementar un proceso para gestionar dependencias. 
 +  - Automatización de Procesos: Automatizar los procesos de desarrollo, pruebas y despliegue. 
 +  - Análisis de Impacto: Realizar un análisis de impacto antes de cambios significativos. 
 + 
 +==== Seguridad y Cumplimiento ==== 
 + 
 +  - Pruebas de Seguridad: Realizar pruebas de seguridad periódicas para identificar vulnerabilidades. 
 +  - Cumplimiento Normativo: Asegurar el cumplimiento de normas y regulaciones relevantes. 
 +  - Auditorías de Seguridad: Realizar auditorías de seguridad externas de forma regular. 
 +  - Gestión de Riesgos: Implementar un proceso de gestión de riesgos. 
 +  - Planes de Contingencia:​ Definir y mantener planes de contingencia y recuperación de desastres. 
 +  ​
  
 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.1717763685.txt.gz · Última modificación: 2024/06/07 12:34 por 192.168.177.52