Avaliação Final
Avaliação integradora que cobre todos os temas do curso — projete uma arquitetura completa, dos requisitos à operação.
Objetivo
Esta avaliação final integra todos os conceitos abordados nas seções anteriores: fundamentos, arquitetura, padrões, fluxos, segurança, observabilidade, implantação e versionamento. Sua tarefa é projetar uma arquitetura completa para um sistema real.
Não existe uma única resposta correta. O que importa é a qualidade do seu raciocínio, a coerência das suas decisões e a sua capacidade de justificar cada escolha.
O projeto: HealthTrack
Descrição
O HealthTrack é uma plataforma de telemedicina que conecta pacientes a médicos para consultas virtuais. A plataforma precisa lidar com:
- Cadastro e perfis de pacientes e médicos
- Agenda e consultas com disponibilidade em tempo real
- Videochamadas para consultas virtuais
- Histórico clínico com documentos e receitas
- Pagamentos por consulta com múltiplos métodos
- Notificações por email, push e SMS
- Relatórios para administradores e médicos
Requisitos não funcionais
| Requisito | Valor |
|---|---|
| Usuários cadastrados | 500,000 |
| Consultas diárias | 5,000 |
| Disponibilidade | 99.95% |
| Latência da API | p99 < 500ms |
| Dados sensíveis | Sim (dados médicos — regulamentação HIPAA/GDPR) |
| Equipe de desenvolvimento | 20 pessoas, 4 squads |
| Timeline | MVP em 6 meses |
Parte 1: Estilo arquitetônico (Fundamentos)
Perguntas
- Qual estilo arquitetônico você escolheria? Monólito, microsserviços ou híbrido?
- Como você dividiria o sistema em domínios/serviços?
- Como você distribuiria os squads entre os domínios?
Critérios de avaliação
- Justificativa clara do estilo escolhido
- Divisão de domínios coerente com o negócio
- Consideração do tamanho da equipe e da timeline
Guia de referência
Com 20 pessoas e 4 squads, microsserviços é viável, mas não obrigatório. Uma opção pragmática:
Domínios sugeridos:
- Usuários e Auth (Squad 1): cadastro, perfis, autenticação
- Consultas e Agenda (Squad 2): disponibilidade, reservas, calendário
- Consultas e Clínica (Squad 3): videochamadas, histórico, receitas
- Pagamentos e Notificações (Squad 4): cobranças, emails, push, SMS
Cada squad é dono do seu domínio e pode implantá-lo de forma independente.
Parte 2: Arquitetura de componentes (Arquitetura)
Perguntas
- Desenhe um diagrama de alto nível com os componentes principais
- Como os serviços se comunicam entre si?
- Você precisa de um API Gateway? De um BFF?
- Onde fica a lógica das videochamadas?
Critérios de avaliação
- Diagrama claro com componentes e conexões
- Justificativa de comunicação sync vs async
- Consideração de serviços externos (vídeo, pagamentos)
Guia de referência
[App Mobile/Web]
│
▼
[API Gateway + Auth]
│
├──► [Servicio de Usuarios] ──► [PostgreSQL]
├──► [Servicio de Citas] ──► [PostgreSQL + Redis]
├──► [Servicio de Consultas] ──► [PostgreSQL + S3]
├──► [Servicio de Pagos] ──► [PostgreSQL]
│
└──► [Event Bus (RabbitMQ/Kafka)]
│
├──► [Servicio de Notificaciones]
└──► [Servicio de Analytics]
[Servicio de Video: Twilio/Agora] ← integración externa
- Comunicação sync para operações do usuário (criar consulta, ver histórico)
- Comunicação async para efeitos colaterais (notificações, analytics)
- Vídeo como serviço externo — não reinventar a roda
Parte 3: Padrões aplicados (Padrões)
Perguntas
- Quais padrões de resiliência você aplicaria e onde?
- Você usaria Saga para o fluxo de reserva de consulta + pagamento? Orquestrada ou coreografada?
- Onde você aplicaria CQRS? É necessário?
- Como você garante idempotência nos pagamentos?
Critérios de avaliação
- Padrões de resiliência aplicados corretamente
- Justificativa de Saga orquestrada vs coreografada
- Idempotência em operações críticas
Guia de referência
Resiliência:
- Circuit breaker nas chamadas ao provedor de vídeo e pagamentos
- Retry com backoff para notificações
- Timeout em todas as chamadas entre serviços
- Bulkhead para isolar o serviço de vídeo do restante
Saga para reserva + pagamento (orquestrada):
- Reservar slot na agenda → 2. Processar pagamento → 3. Confirmar consulta
- Se o pagamento falhar: compensar liberando o slot
- Orquestrada porque o fluxo é linear e você precisa de controle centralizado
Idempotência nos pagamentos:
- Idempotency key gerada pelo cliente (appointmentId + timestamp)
- Verificar antes de processar; se já existir, retornar o resultado anterior
Parte 4: Segurança (Segurança)
Perguntas
- Como você gerencia a autenticação e a autorização?
- Como você protege os dados médicos sensíveis?
- Quais medidas de segurança você aplica em cada camada?
- Como você gerencia o consentimento do paciente para acessar o histórico dele?
Critérios de avaliação
- Autenticação robusta (MFA para médicos)
- Criptografia de dados sensíveis em repouso e em trânsito
- Controle de acesso granular (RBAC ou ABAC)
- Conformidade regulatória considerada
Guia de referência
Autenticação:
- JWT com refresh tokens
- MFA obrigatório para médicos
- OAuth2 para login social de pacientes
Dados sensíveis:
- Criptografia em repouso (AES-256) para o histórico clínico
- TLS 1.3 para todo o tráfego
- Dados médicos em banco de dados separado com acesso restrito
- Logs de auditoria para todo acesso a dados de pacientes
Controle de acesso:
- RBAC: papéis de paciente, médico, admin
- Um médico só pode ver o histórico dos seus pacientes
- O paciente pode revogar o acesso a qualquer momento
- Consentimento explícito registrado com timestamp
Parte 5: Observabilidade (Observabilidade)
Perguntas
- Quais métricas de negócio e técnicas você coletaria?
- Como você implementaria distributed tracing?
- Quais alertas são críticos para este sistema?
- De qual dashboard a equipe de plantão precisa?
Critérios de avaliação
- Métricas de negócio relevantes (consultas concluídas, taxa de cancelamento)
- Tracing end-to-end implementado
- Alertas priorizados por impacto ao usuário
Guia de referência
Métricas de negócio:
- Consultas reservadas vs concluídas vs canceladas por dia
- Tempo médio de espera para conseguir uma consulta
- Taxa de sucesso dos pagamentos
- NPS dos pacientes pós-consulta
Métricas técnicas:
- Latência por serviço e endpoint (p50, p90, p99)
- Taxa de erros por serviço
- Disponibilidade do serviço de vídeo
- Tamanho das filas de mensagens
Alertas críticos:
- Serviço de vídeo indisponível (impacto direto nas consultas)
- Taxa de erros de pagamento > 5%
- Latência p99 > 1s no fluxo de reserva
- Banco de dados do histórico clínico inacessível
Parte 6: Implantação e operação (Implantação)
Perguntas
- Como você implantaria os serviços? Kubernetes, serverless, PaaS?
- Qual é a sua estratégia de CI/CD?
- Como você gerencia a configuração e os segredos?
- Qual é a sua estratégia de escalabilidade?
Critérios de avaliação
- Estratégia de implantação coerente com a arquitetura
- CI/CD automatizado com gates de qualidade
- Segredos gerenciados de forma segura
- Escalabilidade definida para os componentes críticos
Parte 7: Versionamento (Versionamento)
Perguntas
- Como você versiona as APIs entre serviços?
- Como você lida com breaking changes?
- Qual estratégia de versionamento você usa para os eventos?
Critérios de avaliação
- Estratégia de versionamento clara (URL, header ou content negotiation)
- Plano para breaking changes sem downtime
- Versionamento de eventos considerado
Entrega
Sua avaliação deve incluir:
- Documento de arquitetura (1-2 páginas): diagrama de componentes, decisões-chave e justificativas
- Diagrama de fluxo para o caso de uso principal: reservar consulta → pagar → realizar consulta
- Lista de trade-offs: o que você sacrificou e por quê
- Plano de migração: como você chegaria do MVP até a arquitetura completa
Rubrica
| Critério | Peso |
|---|---|
| Coerência entre as decisões | 25% |
| Justificativa dos trade-offs | 25% |
| Consideração dos requisitos não funcionais | 20% |
| Completude (todas as partes cobertas) | 15% |
| Clareza de comunicação | 15% |
Reflexão final
Ao concluir esta avaliação, você terá praticado o processo completo de projeto arquitetônico — dos requisitos até a operação. Esse é o mesmo processo que você seguiria em um projeto real.
Lembre-se: a arquitetura não é um documento estático. É um conjunto de decisões que evoluem junto com o sistema, a equipe e o negócio. O importante não é acertar tudo desde o começo, mas ter um processo sólido para tomar decisões e se adaptar quando as coisas mudam.