Pular para conteúdo

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

  1. Apresentação (10 min): Autor apresenta contexto, proposta e alternativas
  2. Discussão (15 min): Time debate, questiona, dá feedback
  3. 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)

Fundamentos de Qualidade (4 RFCs)

Operações e Deployment (2 RFCs)

Segurança e Gestão de Incidentes (3 RFCs)

Arquitetura e API (4 RFCs)

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

  1. Ver roadmap de implementação completo 🗺️
  2. Entender o processo completo
  3. Ver o template de RFC
  4. Agendar primeira reunião RFC

Recursos