RFC Process
O que são RFCs?
RFC significa Request for Comments (Pedido de Comentários). É um documento que propõe mudanças técnicas significativas e busca feedback do time antes da implementação.
Por que usar RFCs?
✅ Documentação de decisões: Registro permanente de por que escolhemos determinada solução
✅ Discussão estruturada: Formato padronizado facilita análise completa
✅ Alinhamento do time: Todos entendem o contexto e trade-offs
✅ Histórico de aprendizados: RFCs antigas são referência para futuras decisões
✅ Transparência: Processo aberto e colaborativo
Quando criar uma RFC?
Uma RFC deve ser criada para:
- ✅ Mudanças arquiteturais significativas
- ✅ Adoção de novos serviços ou tecnologias
- ✅ Mudanças em processos do time
- ✅ Decisões que impactam múltiplos componentes ou times
- ✅ Padrões de código ou convenções importantes
- ✅ Mudanças em infraestrutura (novos serviços AWS, etc.)
- ✅ Alterações no modelo de dados / schema do banco
Não precisa de RFC:
- ❌ Bug fixes simples
- ❌ Refatorações locais que não afetam API
- ❌ Melhorias de performance pontuais
- ❌ Atualizações de dependências
Status das RFCs
Toda RFC passa por um ciclo de vida com os seguintes status:
- 🟡 Draft: RFC em elaboração, ainda não apresentada
- 🔵 Em Revisão: RFC apresentada e em discussão na reunião
- ✅ Aprovada: RFC aprovada pelo time, pronta para implementação
- ❌ Rejeitada: RFC rejeitada após discussão
- 🟠 Deprecada: RFC anteriormente aprovada mas não mais válida
Fluxo de RFC
flowchart TD
Start[Identificar necessidade de RFC] --> CreateDraft[Criar RFC - Status: Draft]
CreateDraft --> PR[Abrir Pull Request]
PR --> ReviewStatus[Atualizar Status: Em Revisão]
ReviewStatus --> Meeting[Reunião RFC Quinzenal]
Meeting --> Discussion{Decisão da Reunião}
Discussion -->|Precisa ajustes| FeedbackLoop[Coletar feedback e iterar]
FeedbackLoop --> UpdateDraft[Atualizar RFC]
UpdateDraft --> NextMeeting[Próxima reunião]
NextMeeting --> Meeting
Discussion -->|Aprovada| Approved[Status: Aprovada + Merge PR]
Discussion -->|Rejeitada| Rejected[Status: Rejeitada + Fechar PR]
Approved --> Implementation[Implementar decisão]
Implementation --> Monitor[Monitorar implementação]
Monitor --> Review{Revisar RFC?}
Review -->|Não funciona| Deprecated[Status: Deprecada]
Review -->|Funciona| Maintained[Manter como referência]
Deprecated --> NewRFC[Criar nova RFC]
Reuniões RFC
As reuniões de RFC acontecem quinzenalmente:
- 🗓️ Calendário: 1ª e 3ª sexta-feira de cada mês
- ⏰ Horário: [Definir horário fixo com o time]
- 📍 Local: [Presencial/Online - Link da reunião]
- ⏱️ Tempo por RFC: 20-30 minutos
Estrutura da Reunião
- Apresentação (10 min): Autor apresenta contexto, proposta e alternativas
- Discussão (15 min): Time debate, questiona, dá feedback
- Decisão (5 min): Aprovar / Rejeitar / Solicitar revisão
Níveis de RFC
- Alto Impacto - 30 minutos
- Mudanças arquiteturais, novas tecnologias/serviços
- Requer apresentação completa + aprovação de todo o time
- Padrão - 20 minutos
- Padrões de código, processos do time
- Requer apresentação resumida + aprovação de 2+ pessoas
- Informativa - 10 minutos
- Documentação de decisões já tomadas
- Não requer aprovação formal, apenas para conhecimento
🗂️ RFCs por Status
🟡 Em Draft (15)
Todas as RFCs abaixo estão em fase de elaboração e aguardam apresentação e discussão nas reuniões quinzenais.
flowchart LR
subgraph fase1 [Fase 1: Fundamentos]
RFC001[RFC-001: Processo RFC]
RFC002[RFC-002: Git Flow]
RFC003[RFC-003: Coding Standards]
RFC004[RFC-004: Testes]
RFC005[RFC-005: Code Review]
end
subgraph fase2 [Fase 2: Infraestrutura]
RFC006[RFC-006: Migrations]
RFC007[RFC-007: Deployment]
RFC014[RFC-014: IaC]
end
subgraph fase3 [Fase 3: Segurança]
RFC008[RFC-008: Observability]
RFC009[RFC-009: Security]
RFC010[RFC-010: Secrets]
RFC011[RFC-011: Incidents]
end
subgraph fase4 [Fase 4: APIs]
RFC012[RFC-012: API Design]
RFC013[RFC-013: Error Handling]
RFC015[RFC-015: Django+FastAPI]
RFC016[RFC-016: Performance]
end
fase1 --> fase2
fase2 --> fase3
fase3 --> fase4
style RFC001 fill:#fff3cd
style RFC002 fill:#fff3cd
style RFC003 fill:#fff3cd
style RFC004 fill:#fff3cd
style RFC005 fill:#fff3cd
style RFC006 fill:#fff3cd
style RFC007 fill:#fff3cd
style RFC008 fill:#fff3cd
style RFC009 fill:#fff3cd
style RFC010 fill:#fff3cd
style RFC011 fill:#fff3cd
style RFC012 fill:#fff3cd
style RFC013 fill:#fff3cd
style RFC014 fill:#fff3cd
style RFC015 fill:#fff3cd
style RFC016 fill:#fff3cd
Processo e Workflow (2 RFCs)
- RFC-001: Processo de RFC com Reuniões Quinzenais ✅
- RFC-002: Git Flow Simplificado com Rebase Obrigatório 🟡
Fundamentos de Qualidade (4 RFCs)
- RFC-003: Padrões de Código e Ferramentas de Linting 🟡
- RFC-004: Estratégia de Testes e Coverage Targets 🟡
- RFC-005: Processo de Code Review e SLAs 🟡
- RFC-006: Estratégia de Database Migrations (Django + Alembic) 🟡
Operações e Deployment (2 RFCs)
Segurança e Gestão de Incidentes (3 RFCs)
- RFC-009: Security Standards e Compliance 🟡
- RFC-010: Secrets Management Strategy 🟡
- RFC-011: Incident Response Process e SLAs 🟡
Arquitetura e API (4 RFCs)
- RFC-012: API Design Standards e Versionamento 🟡
- RFC-013: Error Handling e Logging Standards 🟡
- RFC-014: Infrastructure as Code Standards 🟡
- RFC-015: Django e FastAPI Integration Strategy 🟡
Performance (1 RFC)
Estatísticas
- Total de RFCs: 16
- 🟡 Draft: 15
- 🔵 Em Revisão: 0
- ✅ Aprovadas: 1
- ❌ Rejeitadas: 0
- 🟠 Deprecadas: 0
Ver todas as decisões → | Ver roadmap de implementação →
Próximos Passos
- Ver roadmap de implementação completo 🗺️
- Entender o processo completo
- Ver o template de RFC
- Agendar primeira reunião RFC
Recursos
- Roadmap de Implementação 🗺️
- Template de RFC
- Processo detalhado
- Agenda de reuniões 📅
- Canal Slack: #rfc-discussions 💬