Este directorio contiene guías y mejores prácticas para desarrollar en el sistema de microservicios.
- Developer Setup Guide - 🚀 Configuración inicial para nuevos desarrolladores
- Product Owner Guide - Manual del Product Owner con Kanban
- Kanban Guide - Guía de Kanban para el equipo
- Project Config Usage - 📊 Uso de project_config.yaml para métricas
- Idea to Task Flow - Flujo de ideas a tareas ejecutables
- ClickUp Integration - Integración con ClickUp
- 🤖 Quick Start: Procesador de Ideas - Guía rápida de 5 minutos
- 🔄 Integración del Procesador - Workflows híbridos y mejores prácticas
- 🚀 GitHub Actions Setup - Procesamiento automático con GitHub Actions
- Version Control Workflow - 🌳 Estrategia de Trunk-Based Development
- Version Control Comparison - 📊 Comparación de estrategias y guía de decisión
- Git Quick Reference - 📋 Comandos rápidos para el día a día
- Feature Flags Guide - 🚩 Gestión de feature toggles
- Code Review Guidelines - 👥 Proceso de revisión de código
- CI/CD Pipeline - 🚀 Pipeline de integración y despliegue continuo
- Saga Pattern - Transacciones distribuidas
- CQRS Pattern - Separación de comandos y consultas
- Event-Driven Patterns - Patrones de comunicación por eventos
- Observability Best Practices - 🎯 Guía completa de observabilidad con OpenTelemetry, Prometheus, Grafana, Jaeger y Loki
- IIS Configuration - Configuración de IIS para microservicios
- Event Bus Setup - Configuración de RabbitMQ/Service Bus
- Database Migrations - Gestión de migraciones
- Coding Standards - Estándares de código .NET
- API Design - Diseño de APIs REST
- Error Handling - Manejo de errores
- Logging - Estrategia de logging estructurado
- Testing Strategy - Estrategia general de testing
- Unit Testing - Testing de unidades
- Integration Testing - Testing de integración
- Contract Testing - Testing de contratos de eventos
- Deployment - Proceso de despliegue
- Observability Best Practices - 🔍 Stack completo de observabilidad (traces, metrics, logs)
- Monitoring - Monitoreo y observabilidad
- Troubleshooting - Resolución de problemas comunes
- Security Guidelines - Guías de seguridad
- PCI Compliance - Cumplimiento PCI para pagos
- BIT Components - Desarrollo con BIT
- Versioning Strategy - Estrategia de versionado
- Single Responsibility: Cada clase tiene una sola razón para cambiar
- Open/Closed: Abierto para extensión, cerrado para modificación
- Liskov Substitution: Las subclases deben ser sustituibles por sus clases base
- Interface Segregation: Interfaces específicas mejor que generales
- Dependency Inversion: Depender de abstracciones, no de concreciones
- Extraer código repetido a funciones/clases
- Usar BIT components para compartir código entre servicios
- Crear utilidades comunes en shared libraries
- La solución más simple que funcione
- No sobre-ingeniería
- Código fácil de entender
- No implementar funcionalidad hasta que sea necesaria
- Evitar "prepararse para el futuro"
- Iterar basado en necesidades reales
- Revisar arquitectura existente
- Documentar decisiones (ADRs si es significativo)
- Diseñar eventos si es necesario
- Crear branch desde
mainsiguiendo Version Control Workflow - Seguir coding standards
- Escribir tests
- Actualizar documentación
- Usar Feature Flags para trabajo incompleto
- Unit tests (mínimo 80% coverage)
- Integration tests para flujos críticos
- Contract tests para eventos
- Seguir Code Review Guidelines
- Al menos 1 approval requerido (2 para cambios críticos)
- Verificar que sigue estándares
- Validar tests
- CI/CD automático a dev
- Manual promotion a staging
- Approval requerido para production
C# / .NET
- PascalCase para clases, métodos, propiedades
- camelCase para variables locales y parámetros
- Interfaces con prefijo
I(ej:IOrderRepository) - Async methods con sufijo
Async(ej:GetOrderAsync)
Archivos
- Nombre de archivo = nombre de clase principal
- Un tipo público por archivo (excepto nested types)
Bases de datos
- PascalCase para tablas
- PascalCase para columnas
- Plural para tablas de entidades (ej:
Orders,Products)
// NOTA: Ejemplo conceptual de estructura
namespace Company.Service.Layer
{
// 1. Using statements (ordenados)
using System;
using System.Collections.Generic;
using Company.Shared;
// 2. Clase con XML comments
/// <summary>
/// Description of the class
/// </summary>
public class MyClass
{
// 3. Fields (private)
private readonly IService _service;
// 4. Constructor
public MyClass(IService service)
{
_service = service;
}
// 5. Properties
public string Name { get; set; }
// 6. Public methods
public void PublicMethod()
{
// Implementation
}
// 7. Private methods
private void PrivateMethod()
{
// Implementation
}
}
}Utilizamos Trunk-Based Development como estrategia principal de control de versiones.
main: Producción (siempre desplegable)feature/TASK-XXX-description: Ramas de características (1-3 días máximo)hotfix/FIX-description: Correcciones urgentes (< 1 día)- Release tags:
vX.Y.Z(no ramas)
Formato de commit messages siguiendo Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: Nueva featurefix: Bug fixdocs: Documentaciónstyle: Formato (no afecta lógica)refactor: Refactorizacióntest: Testschore: Mantenimiento
Ejemplo:
feat(orders): add order cancellation endpoint
Implement POST /api/orders/{id}/cancel endpoint
that allows users to cancel their pending orders.
Closes TASK-123
Ver Version Control Workflow para guía detallada de:
- Creación de branches
- Proceso de commit y push
- Mantenimiento de branches actualizados
- Proceso de Pull Request
- Gestión de releases
- Proceso de hotfixes
- Resolución de conflictos
- Mejores prácticas
Para permitir merge de trabajo incompleto sin afectar producción, utilizamos feature flags. Ver Feature Flags Guide para detalles completos.
- Visual Studio 2022
- Visual Studio Code con extensiones C#
- GitHub Copilot
- SonarLint
- .NET Core Test Explorer
- GitLens
- SonarQube para code quality
- ReSharper / Rider para refactoring
- "Domain-Driven Design" - Eric Evans
- "Building Microservices" - Sam Newman
- "Clean Code" - Robert C. Martin
- "Design Patterns" - Gang of Four
- Pluralsight: Microservices Architecture
- Microsoft Learn: ASP.NET Core Path
- Slack: #architecture channel
- Teams: Desarrollo team
- Email: architecture@company.com
- Martes 2-3pm: Consultas de arquitectura
- Jueves 10-11am: Code review sessions
Antes de crear PR:
- Código sigue coding standards
- Tests escritos y pasando (>80% coverage)
- Observabilidad implementada: traces, metrics, logs estructurados ✅
- Dashboard creado en Grafana para el servicio ✅
- Documentación actualizada
- ADR creado si es decisión significativa
- Eventos documentados en catálogo
- Logs estructurados agregados
- Error handling implementado
- No hay secrets hardcoded
- Performance considerado
- Security review realizado