microservices-patterns
Diseña Arquitecturas de Microservicios con Patrones Comprobados
Construir sistemas distribuidos con microservicios introduce complejidad en los límites de servicios, comunicación entre servicios y tolerancia a fallos. Esta habilidad proporciona patrones probados en batalla para la descomposición de servicios, arquitectura orientada a eventos, coordinación de sagas e implementación de circuit breaker para ayudarte a construir sistemas resilientes y escalables.
Descargar el ZIP de la skill
Subir en Claude
Ve a Configuración → Capacidades → Skills → Subir skill
Activa y empieza a usar
Pruébalo
Usando "microservices-patterns". ¿Cómo debo descomponer una plataforma de e-commerce en microservicios?
Resultado esperado:
- Para una plataforma de e-commerce, recomiendo organizar los servicios alrededor de capacidades de negocio:
- 1. **Order Service** - Gestiona el ciclo de vida de pedidos, carrito e historial de pedidos
- 2. **Payment Service** - Maneja procesamiento de pagos, reembolsos y métodos de pago
- 3. **Inventory Service** - Rastrea stock de productos, reservas y ubicaciones de almacén
- 4. **Catalog Service** - Listados de productos, búsqueda y gestión de categorías
- 5. **User Service** - Autenticación, perfiles y preferencias
- 6. **Shipping Service** - Seguimiento de entregas, generación de etiquetas e integración con transportistas
- Cada servicio posee su propia base de datos y se comunica a través de APIs bien definidas o eventos. El Order Service publica eventos OrderCreated que los servicios Payment e Inventory consumen para procesar sus respectivas operaciones asincrónicamente.
Usando "microservices-patterns". ¿Cómo manejo un fallo de pago en mi saga de cumplimiento de pedidos?
Resultado esperado:
- Cuando el paso de pago falla en el OrderFulfillmentSaga, el orquestador de saga activa acciones compensatorias en orden inverso:
- 1. Pago fallido - no se necesita compensación para el pago
- 2. Compensar inventario: Liberar la reserva llamando a InventoryService.release(reservation_id)
- 3. Compensar pedido: Cancelar el pedido llamando a OrderService.cancel(order_id)
- 4. Devolver un resultado fallido con detalles del error al cliente
- La clave es diseñar cada acción compensatoria para que sea idempotente y manejar casos donde la compensación misma puede fallar parcialmente. Registra todas las acciones compensatorias y alerta a los operadores para intervención manual cuando sea necesario.
Usando "microservices-patterns". ¿Por qué mi circuit breaker se abre inmediatamente y cómo debo ajustarlo?
Resultado esperado:
- Un circuit breaker se abre cuando los fallos exceden el failure_threshold dentro de una ventana deslizante. Causas comunes y soluciones:
- **Si se abre demasiado fácilmente:**
- - Aumentar failure_threshold (prueba 10 en lugar de 5)
- - Aumentar recovery_timeout (prueba 60 segundos en lugar de 30)
- - Añadir un success_threshold para requerir múltiples éxitos antes de cerrar
- **Si permanece abierto demasiado tiempo:**
- - Disminuir recovery_timeout para pruebas más rápidas
- - Usar umbrales adaptativos basados en el volumen de tráfico
- **Mejores prácticas:**
- - Establecer failure_threshold basado en la tasa de error normal de tu servicio
- - Establecer recovery_timeout más largo que tu duración típica de interrupción
- - Monitorear cambios de estado del circuito para ajustar parámetros
Auditoría de seguridad
SeguroStatic analysis detected 36 patterns across 2 files. All findings evaluated as false positives or safe educational content. The 18 weak crypto alerts match on words like design and description in documentation. The 11 external command alerts are markdown code fences for syntax highlighting. Network patterns are legitimate example URLs for teaching microservices communication. No actual security risks identified.
Factores de riesgo
🌐 Acceso a red (7)
Puntuación de calidad
Lo que puedes crear
Migrar un Monolito a Microservicios
Aplicar el patrón Strangler Fig para extraer gradualmente funcionalidad de un monolito heredado en servicios desplegables independientemente mientras se mantiene la estabilidad del sistema.
Construir Procesamiento de Pedidos Orientado a Eventos
Diseñar un sistema de gestión de pedidos donde los servicios de Order, Payment e Inventory se comunican asincrónicamente a través de eventos Kafka con compensación basada en sagas para transacciones fallidas.
Añadir Resiliencia a Llamadas de Servicio
Implementar circuit breakers y reintentos con backoff exponencial para proteger servicios de fallos en cascada y mejorar la confiabilidad general del sistema bajo interrupciones parciales.
Prueba estos prompts
Ayúdame a descomponer mi aplicación {application_type} en microservicios. La aplicación tiene estas funciones principales: {list_functions}. ¿Cómo debo definir los límites de servicios y qué estrategia de descomposición debo usar?Diseña un patrón API gateway para mi arquitectura de microservicios. Tengo estos servicios: {list_services}. ¿Cómo debe el gateway manejar autenticación, limitación de tasa y agregación de solicitudes?Ayúdame a implementar un patrón saga para un {business_process} que involucra estos pasos: {list_steps}. ¿Qué acciones compensatorias debo definir para cada paso y cómo debo manejar fallos parciales?Tengo un servicio {service_name} que ocasionalmente experimenta picos de latencia. ¿Cómo debo configurar los parámetros del circuit breaker (failure_threshold, recovery_timeout, success_threshold) e integrarlo con mi cliente HTTP existente?Mejores prácticas
- Definir límites de servicios claros alineados con capacidades de negocio en lugar de capas técnicas para asegurar bajo acoplamiento y alta cohesión
- Usar comunicación asíncrona orientada a eventos para operaciones que pueden tolerar consistencia eventual para mejorar la resiliencia del sistema y reducir dependencias bloqueantes
- Siempre implementar circuit breakers en llamadas entre servicios y configurar timeouts que sean más cortos que el presupuesto de timeout impuesto por el cliente
Evitar
- Monolito Distribuido - Crear microservicios que están fuertemente acoplados a través de bases de datos compartidas o cadenas síncronas de dependencias, perdiendo los beneficios del despliegue independiente
- Servicios Parlanchines - Diseñar servicios que requieren docenas de llamadas de ida y vuelta para completar una sola solicitud de usuario, aumentando la latencia y puntos de fallo
- Todo Síncrono - Usar comunicación request-response para toda comunicación entre servicios, creando acoplamiento fuerte e impidiendo escalado independiente y aislamiento de fallos
Preguntas frecuentes
¿Cuándo debo elegir microservicios sobre un monolito?
¿Cómo mantengo la consistencia de datos a través de microservicios sin transacciones distribuidas?
¿Cuál es la diferencia entre choreography y orchestration para sagas?
¿Cómo manejo la autenticación a través de múltiples microservicios?
¿Qué valores de timeout debo usar para llamadas entre servicios?
¿Cómo pruebo microservicios que dependen entre sí?
Detalles del desarrollador
Autor
wshobsonLicencia
MIT
Repositorio
https://github.com/wshobson/agents/tree/main/plugins/backend-development/skills/microservices-patternsRef.
main
Estructura de archivos
📄 SKILL.md