patterns
Fornece informações sobre padrões de design de sistemas. Ajuda a entender como construir sistemas de forma organizada e eficaz.
O que ela faz
Este documento é uma referência sobre padrões de design usados em programação, como CQRS, Event Sourcing e Saga. Ele explica o que são, quando usá-los e como funcionam.
Quando usar
- ✓Quando você quer aprender sobre padrões de design.
- ✓Para entender como organizar sistemas complexos.
- ✓Ao procurar soluções para problemas comuns de software.
Exemplo do que pedir para a IA
“Me explique o padrão Circuit Breaker.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Este documento lista e descreve vários padrões de design de software. Para cada padrão, ele detalha o que é, quando é útil, como implementá-lo e suas vantagens e desvantagens.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill patternsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/monopoly/patterns/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
MONOPOLY — Mergulho Profundo em Padrões de Design
Quando Usar
- Use esta habilidade quando a tarefa corresponder a esta descrição: Documento de referência para padrões de monopólio.
Sumário
- CQRS
- Event Sourcing
- Padrão Saga
- Circuit Breaker
- Bulkhead
- Strangler Fig
- Sidecar / Service Mesh
- Padrão Outbox
- Consistent Hashing
- Backpressure
- Leader Election
- Two-Phase Commit
1. CQRS (Command Query Responsibility Segregation)
O que é: Separa o modelo de leitura (Query) do modelo de escrita (Command) em serviços, bancos de dados ou fluxos de código distintos.
Quando usar:
- Carga de leitura é 10×+ carga de escrita (a maioria dos aplicativos web)
- Consultas de leitura são agregações complexas sobre dados de escrita
- Necessidade de otimizar os caminhos de leitura e escrita independentemente
- Modelo de domínio é complexo (contextos DDD)
Implementação:
Write Path: Client → Command API → Write DB (normalized, PostgreSQL)
Read Path: Client → Query API → Read DB (denormalized, Redis / Elasticsearch)
Sync: Write DB → CDC (Debezium) → Message Queue → Read DB updater
Trade-offs:
- ✅ Escalabilidade independente de leitura e escrita
- ✅ Esquemas otimizados para cada tipo de operação
- ❌ Consistência eventual entre os modelos de escrita e leitura
- ❌ Complexidade aumentada; dois modelos para manter
Usuários no mundo real: Amazon (serviço de pedidos), LinkedIn (feed)
2. Event Sourcing
O que é: Armazena o estado como uma sequência de eventos imutáveis em vez do estado atual. Reconstrói o estado atual reproduzindo os eventos.
Quando usar:
- Rastro de auditoria completo é um requisito regulatório (fintech, saúde)
- Necessidade de reproduzir o histórico para depuração ou análise
- Domínio complexo com muitas transições de estado
- Necessidade de derivar múltiplas projeções de leitura dos mesmos dados
Implementação:
Event Store: append-only log (Kafka, EventStoreDB)
Snapshots: periodic snapshots to speed up state rebuild
Projections: consumers build read models from events
Trade-offs:
- ✅ Histórico de auditoria completo; perfeito para conformidade
- ✅ Depuração por reprodução e viagem no tempo
- ❌ Consultar o estado atual requer manutenção de projeção
- ❌ Evolução do esquema de eventos é difícil
- ❌ Alto overhead de armazenamento ao longo do tempo
3. Padrão Saga
O que é: Gerencia transações distribuídas entre microsserviços por meio de uma sequência de transações locais, cada uma publicando um evento. Se uma etapa falhar, transações compensatórias desfazem as etapas anteriores.
Duas variantes:
- Coreografia: Serviços reagem a eventos autonomamente (descentralizado)
- Orquestração: Um Orquestrador de Saga central coordena as etapas (centralizado)
Quando usar:
- Fluxos de trabalho multi-serviço onde ACID entre serviços é impossível
- Transações de negócios de longa duração (pedido → pagamento → inventário → envio)
- Necessidade de rollback entre limites de serviço
Exemplo de Coreografia:
OrderService creates order →
[event: OrderCreated] →
PaymentService charges card →
[event: PaymentProcessed] →
InventoryService reserves stock →
[event: StockReserved] →
ShippingService books courier
Transações Compensatórias (em caso de falha):
ShippingService fails →
[event: ShippingFailed] →
InventoryService releases stock →
PaymentService refunds card →
OrderService marks order failed
Trade-offs:
- ✅ Sem bloqueio distribuído; alta disponibilidade
- ✅ Escala bem entre serviços
- ❌ Difícil de depurar; rastreamento distribuído necessário
- ❌ Transações compensatórias são complexas de implementar corretamente
4. Circuit Breaker
O que é: Um proxy que monitora chamadas para um serviço. Se a taxa de falha exceder o limite, o circuito "abre" e as chamadas falham rapidamente em vez de esperar pelo timeout.
Estados:
CLOSED → calls pass through; monitor failure rate
OPEN → calls fail immediately; no calls to downstream
HALF-OPEN → let a probe call through; if success, close; if fail, stay open
Quando usar:
- Chamando qualquer serviço externo (gateway de pagamento, SMS, e-mail)
- Microsserviços chamando uns aos outros
- Prevenindo cascata de timeouts quando o serviço downstream está lento
Ferramentas de implementação: Hystrix (descontinuado), Resilience4j, Polly (.NET), Envoy proxy
Limiares (ponto de partida):
- Abre após 50% de taxa de falha em 10 requisições
- Permanece aberto por 30 segundos
- Meio aberto: permite 1 requisição de teste
Trade-offs:
- ✅ Previne falhas em cascata
- ✅ Dá tempo para o serviço downstream se recuperar
- ❌ Adiciona overhead de latência para monitoramento
- ❌ Requer comportamento de fallback quando o circuito está aberto
5. Bulkhead
…
Perguntas frequentes
O que são 'padrões de design'?
São soluções reutilizáveis para problemas comuns que surgem no desenvolvimento de software. Eles ajudam a criar código mais organizado, eficiente e fácil de manter.
Qual a diferença entre CQRS e Event Sourcing?
CQRS separa as operações de leitura e escrita, enquanto Event Sourcing registra todas as mudanças como uma sequência de eventos.
O que é um 'Saga Pattern'?
É uma forma de gerenciar transações que envolvem múltiplos serviços, garantindo que tudo seja concluído ou revertido corretamente, mesmo que uma parte falhe.
Detalhes
Descrição original do autor
Reference document for monopoly patterns.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3619
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC