Versão: 1.0
Data: 23 Março 2026
Objetivo: Migração gradual de módulos PHP para serviços Go independentes
Este diretório contém toda a documentação e templates necessários para análise e execução de migrações de módulos do monolito PHP para microserviços Go.
- Database per Service (OBRIGATÓRIO) - Cada serviço tem seu próprio banco de dados
- Análise Baseada em Fatos - Nunca fazer suposições, sempre analisar código
- Avaliação Honesta - Identificar quando migração NÃO faz sentido
- Evitar Over-Engineering - Soluções práticas e diretas
- Migração Gradual - Sem big bang, sempre incremental
migration-project/
├── README.md # Este arquivo
├── LLM_MIGRATION_ANALYSIS_GUIDE.md # Guia completo para LLM
├── TEMPLATE_01_VIABILITY_ANALYSIS.md # Template: Análise de Viabilidade
├── TEMPLATE_02_GO_SPECIFICATION.md # Template: Especificação Go
├── TEMPLATE_03_BREAKING_CHANGES.md # Template: Breaking Changes
├── TEMPLATE_04_ARCHITECTURE_PROPOSAL.md # Template: Arquitetura
├── TEMPLATE_05_TEST_PLAN.md # Template: Plano de Testes
└── examples/ # Exemplos de análises completas
└── documents-module/ # Exemplo: módulo de documentos
├── 01_viability_analysis.md
├── 02_go_specification.md
├── 03_breaking_changes.md
├── 04_architecture_proposal.md
└── 05_test_plan.md
Arquivo: LLM_MIGRATION_ANALYSIS_GUIDE.md
Este é o documento mais importante. Contém:
- Missão completa da LLM
- Processo de análise passo a passo (5 fases)
- Princípios fundamentais
- Checklist completo
- Erros comuns a evitar
SEMPRE comece lendo este guia antes de iniciar qualquer análise.
O usuário fornecerá:
- Nome do módulo (ex: "Documents", "Entities", "Processes")
- Localização no código (ex:
/modules/Documentsou/clinic/Models) - Contexto adicional (opcional)
Seguir o guia rigorosamente:
- Identificar módulo
- Mapear models e database schema
- Mapear controllers e endpoints
- Mapear services e business logic
- Identificar dependências externas
Ferramentas:
grep_search "class.*Model" modules/{NOME}
find modules/{NOME} -name "*.php"
read_file /path/to/controller.phpOutput: Inventário completo do módulo
- Avaliar acoplamento (score)
- Avaliar complexidade (score)
- Avaliar benefícios (score)
- Avaliar riscos (matriz)
- Decisão: Migrar ou Não Migrar
Template: TEMPLATE_01_VIABILITY_ANALYSIS.md
Output: Documento de viabilidade completo
- Database per service (isolado)
- Models Go completos (código)
- Repositories (código)
- Services (código)
- API Handlers (código)
- Estratégia de sync (event-driven/CDC/polling)
Templates:
TEMPLATE_02_GO_SPECIFICATION.md- Código GoTEMPLATE_04_ARCHITECTURE_PROPOSAL.md- Arquitetura e sync
Output: Especificação técnica completa + Proposta de arquitetura
- Identificar componentes PHP afetados
- Queries que quebram (sem JOINs)
- Estratégia de migração em 4 fases
- Rollback procedures
- Métricas de sucesso
Template: TEMPLATE_03_BREAKING_CHANGES.md
Output: Análise de impacto completa
- Unit tests (> 80% coverage)
- Integration tests
- E2E tests
- Performance tests
- Consistency tests
Template: TEMPLATE_05_TEST_PLAN.md
Output: Plano de testes completo
Ao final, você terá criado:
- 01_viability_analysis.md - Decisão fundamentada (migrar ou não)
- 02_go_specification.md - Código Go completo e pronto
- 03_breaking_changes.md - Impacto e estratégia de migração
- 04_architecture_proposal.md - Database per service + sync
- 05_test_plan.md - Garantia de qualidade
Salvar em: /docs/migration-project/modules/{NOME_MODULO}/
# 1. Decidir qual módulo analisar
# Ex: Módulo "Notifications"
# 2. Solicitar à LLM
# "Analise o módulo Notifications em /modules/Notifications para migração para Go"
# 3. LLM executará as 5 fases e produzirá os 5 documentos
# 4. Revisar documentos gerados
ls docs/migration-project/modules/Notifications/
# 5. Discutir com time (decisão de prosseguir ou não)
# 6. Se aprovado, usar documentos como guia de implementaçãoDocumentos de referência:
02_go_specification.md- Copiar/adaptar código Go04_architecture_proposal.md- Implementar sync strategy03_breaking_changes.md- Seguir fases de migração05_test_plan.md- Implementar testes
Ordem de implementação:
Sprint 1-2: Preparação
- Criar database Go
- Implementar models (copiar de
02_go_specification.md) - Implementar repositories
- Implementar services
- Unit tests (> 80%)
Sprint 3-4: Sync
- Implementar event publishers (PHP)
- Implementar event consumers (Go)
- Implementar reconciliation job
- Integration tests
Sprint 5-6: API
- Implementar handlers
- E2E tests
- Deploy staging
- Performance tests
Sprint 7-8: Dual-Write (Fase 2)
- Implementar dual-write em PHP
- Feature flags
- Gradual rollout (10% → 100%)
- Monitoramento
Sprint 9-10: Dual-Read (Fase 3)
- PHP lê de Go API
- Fallback para DB
- Gradual rollout
- Cache tuning
Sprint 11-12: Finalização (Fase 4)
- Remover código PHP antigo
- Deprecar endpoints
- Limpeza
- Retrospectiva
# Consultar documentos
cd docs/migration-project/modules/{NOME}/
# Verificar status vs plano
cat 03_breaking_changes.md # Ver fase atual
cat 05_test_plan.md # Ver checklist de testes
# Validar consistência
./scripts/verify_sync_consistency.sh
# Atualizar documentos se necessário
# (manter docs sincronizados com realidade)- Documento 01 (Viabilidade) criado
- Documento 02 (Especificação Go) criado
- Documento 03 (Breaking Changes) criado
- Documento 04 (Arquitetura) criado
- Documento 05 (Plano de Testes) criado
- Decisão tomada: Migrar/Não Migrar
- Aprovação do Tech Lead
- Aprovação do Product Manager (se aplicável)
- Database Go criado e isolado
- Models Go implementados (100%)
- Repositories implementados (100%)
- Services implementados (100%)
- Unit tests > 80% coverage
- Event publishers (PHP) implementados
- Event consumers (Go) implementados
- Reconciliation job implementado
- Integration tests passando
- API handlers implementados
- E2E tests passando
- Performance tests validados
- Deploy em staging bem-sucedido
- Fase 1 (Preparação) - Completa
- Fase 2 (Dual-Write) - Iniciada
- Fase 2 (Dual-Write) - 100% rollout
- Fase 3 (Dual-Read) - Iniciada
- Fase 3 (Dual-Read) - 100% rollout
- Fase 4 (Finalização) - Código PHP removido
- Documentação atualizada
- Monitoramento configurado
- Alertas funcionando
- Runbooks criados
- Retrospectiva realizada
- Lições aprendidas documentadas
| Módulo | Status | Decisão | Fase Atual | Responsável | Data Início | ETA |
|---|---|---|---|---|---|---|
| Documents | ✅ Concluído | Migrar | Fase 4 | - | 2026-01 | 2026-03 |
| [Novo] | - | - | - | - | - | - |
Legenda de Status:
- 📋 Análise - Em análise
- ✅ Aprovado - Aprovado para migração
⚠️ Pausado - Migração pausada- 🔴 Rejeitado - Não migrar
- ✅ Concluído - Migração completa
-
Alto Valor, Baixa Complexidade - Migrar primeiro
- Benefícios claros
- Baixo acoplamento
- Complexidade moderada
-
Alto Valor, Alta Complexidade - Migrar depois
- Benefícios justificam esforço
- Requer planejamento cuidadoso
-
Baixo Valor, Baixa Complexidade - Avaliar
- Pode não valer a pena
- Considerar manter em PHP
-
Baixo Valor, Alta Complexidade - NÃO migrar
- Esforço não justifica benefício
- Manter em PHP
Alta Complexidade
│
Avaliar │ Migrar Depois
Caso a Caso │ (Planejamento)
│
─────────────────────────────────────────── Baixo Valor/Alto Valor
│
NÃO Migrar │ Migrar Primeiro
(Manter PHP) │ (Quick Wins)
│
Baixa Complexidade
Localização: /docs/migration-project/examples/documents-module/
Este exemplo serve como referência para:
- Como preencher cada template
- Nível de detalhamento esperado
- Qualidade de análise
- Código Go de exemplo
Use como base para novos módulos.
- Acoplamento > 50% - Módulo muito acoplado
- Sem benefícios claros - Score < 2/5
- Dados altamente relacionais - JOINs complexos impossíveis de resolver
- Mudanças raras - Módulo estável, sem necessidade de escalar
- Time pequeno - Não há capacidade para manter dois sistemas
- Deadline apertado - Migração introduz risco desnecessário
Nesses casos, considere:
- Refatorar código PHP existente
- Otimizar queries atuais
- Adicionar cache
- Melhorar testes
- Reavaliar em 6-12 meses
- Sempre consultar
LLM_MIGRATION_ANALYSIS_GUIDE.md - Seguir checklist rigorosamente
- Quando em dúvida, perguntar ao usuário
- Consultar documentos do módulo específico
- Discutir com Tech Lead antes de grandes decisões
- Usar exemplos como referência
- Atualizar documentos conforme progresso
Versão 1.0 (23 Março 2026)
- Documentação inicial
- Templates completos
- Guia para LLM
- Exemplos de documentos
Próximas versões:
- Adicionar mais exemplos
- Refinar templates baseado em feedback
- Criar scripts de automação
- Dashboard de métricas
Se encontrar oportunidades de melhoria:
- Documentar problema/sugestão
- Propor mudança específica
- Atualizar template
- Atualizar versão
- Comunicar ao time
Se identificar necessidade de novos templates:
- Propor estrutura
- Criar exemplo
- Validar com 1-2 módulos
- Adicionar ao projeto
Documentação viva - mantenha atualizada! 📚
Para iniciar análise de um módulo:
# 1. LLM lê este README
# 2. LLM lê LLM_MIGRATION_ANALYSIS_GUIDE.md
# 3. Usuário fornece módulo: "Analise módulo X"
# 4. LLM executa 5 fases
# 5. LLM produz 5 documentos
# 6. Time revisa e decide
# 7. Se aprovado, time implementa usando documentos como guiaSimples assim! 🚀