Lab — transforme um RNF vago em cenário verificável
Preencha os seis elementos. A saída vira uma frase que já orienta arquitetura e teste.
Lab — pressão → tática candidata → custo
Atividade aula 1 — 6 questões fundamentais
Q1 — Startup de e-commerce com instabilidades e picos de acesso
Tarefa: explique como uma visão de alto nível, componentes e interações poderiam ter evitado o cenário.
Resposta-modelo: a arquitetura deveria tornar explícitos volume/picos, ponto único de falha, dependências e caminhos críticos. Separar responsabilidades, permitir replicação da camada de aplicação, colocar balanceamento, revisar conexões com banco/cache e validar carga antes da produção. O ponto não é “adicionar servidores”, mas desenhar uma estrutura em que o gargalo possa ser identificado e escalado sem bloquear o sistema inteiro.
Q2 — Modernizar um sistema monolítico antigo: responsabilidades do arquiteto
Quatro responsabilidades fortes: (1) entender objetivos/restrições e priorizar qualidades; (2) mapear módulos, dependências e riscos; (3) comparar alternativas e selecionar tecnologias por critérios explícitos; (4) registrar decisões, orientar implementação e acompanhar evolução. A seleção tecnológica importa porque cria dependências de longo prazo, afeta operação, competências da equipe, custo e capacidade de evolução.
Q3 — “Arquitetura e Engenharia de Software são a mesma coisa”
Refutação: Engenharia cobre o ciclo completo; Arquitetura foca decisões estruturais, fronteiras, relações e atributos de qualidade com impacto sistêmico. São complementares: a arquitetura orienta construção/teste/operação e recebe evidências dessas etapas para evoluir.
Q4 — Streaming precisa de atualizações rápidas e independentes
Microserviços podem ser uma alternativa coerente quando busca, player e pagamento realmente precisam de implantação e escala independentes e a organização possui maturidade operacional. Benefício: autonomia e escala seletiva. Custo: rede, observabilidade, dados distribuídos, deploy e consistência. A resposta fica melhor quando compara com monólito modular e explica por que a independência justifica a complexidade.
Q5 — Sistema bancário: arquitetura como ferramenta de comunicação
Uma arquitetura bem documentada define responsabilidades, contratos e dependências. Isso reduz sobreposição de trabalho, facilita impacto de mudanças, ajuda equipes a discutir decisões no mesmo vocabulário e permite que cada alteração seja avaliada contra princípios e restrições arquiteturais.
Q6 — Vendas online piora conforme cresce o número de usuários
Investigue gargalo antes de escolher tática. Possibilidades: aplicações stateless replicadas, balanceador, cache de leituras, pool/conexões e índices no banco, separação de tarefas assíncronas por fila, particionamento/replicação quando necessário. Cada mudança deve apontar a pressão atendida e um teste de carga que valide o ganho.
1. Contexto e visão da arquitetura
Escolha um sistema Web ou Mobile, real ou proposto, e produza uma visão inicial. O objetivo não é desenhar tudo: é deixar claro para que existe, quem usa, como cresce e quais fronteiras/importantes dependências existem.
2. Cenários de estresse: force a arquitetura a revelar fraquezas
Defina pelo menos 3 cenários. A folha sugere exemplos como pico de usuários, falha de serviço externo, indisponibilidade de banco, ataque, implantação com erro etc.
Pico de carga
Estímulo: 10× requisições em 5 min. Resposta: manter p95 dentro do limite sem perda de dados.
Serviço externo lento
Estímulo: e-mail demora 15 s. Resposta: confirmar operação principal sem bloquear e reprocessar notificação.
Banco indisponível
Estímulo: conexão primária falha. Resposta: detectar, degradar/failover e preservar consistência.
Sem internet
Estímulo: app perde rede por horas. Resposta: registrar localmente e sincronizar com idempotência quando conexão voltar.
3–5. Requisitos, atributos de qualidade e matriz RF × RNF
Requisitos
Defina no mínimo 7 RFs identificados (RF01, RF02...) e RNFs mensuráveis/testáveis associados aos comportamentos.
Atributos de qualidade
Classifique RNFs em categorias como Experiência, Operação, Segurança, Evolução e Ambiente/Integração. A folha pede uso de pelo menos quatro categorias.
Matriz RF × RNF
A matriz mostra quais qualidades realmente pressionam cada comportamento. Isso ajuda a encontrar ASRs: um RNF que afeta muitos RFs ou um fluxo crítico merece mais atenção arquitetural.
6. Architecturally Significant Requirement
Selecione 1 ASR forte, mensurável e capaz de influenciar decisões arquiteturais. Depois descreva Fonte, Estímulo, Ambiente, Artefato, Resposta e Medida.
Por que é arquiteturalmente significativo?
Porque exige persistência local, protocolo de sincronização, identificadores estáveis, política de conflito, idempotência, retries, observabilidade e tratamento de falha parcial.
Permite operação offline.
Exige migração/criptografia/limpeza de dados no dispositivo.
Retoma envio automaticamente.
Precisa controlar backlog e evitar tempestade de retries.
Reduz duplicação e detecta conflitos.
Mais metadados, regras de merge e lógica de domínio.
Mais resiliência e disponibilidade percebida.
Maior complexidade de consistência e teste.
Lab — qual recorte C4 responde à pergunta?
Operação offline + sincronização posterior
Cenário: aplicativo móvel coleta observações, localização, fotos e informações em campo. Parte das coletas acontece sem internet e os dados precisam ser sincronizados posteriormente.
Tarefa: proponha estratégia arquitetural para operação offline e sincronização; discuta armazenamento no dispositivo, sincronização e tratamento de falhas, duplicidades e conflitos; relacione aos atributos de qualidade.
Resposta-modelo completa
Armazenamento: banco local transacional com UUID por coleta, estado de sincronização, timestamp/versão, hash/metadados de anexos e criptografia se houver dados sensíveis.
Sincronização: fila local de operações pendentes; worker em background quando houver conectividade; lotes pequenos; retry com backoff; confirmação por operação antes de removê-la da fila.
Duplicidades: chave idempotente/UUID conhecido por cliente e servidor; reenviar a mesma operação não cria novo registro.
Conflitos: versionamento otimista; regra explícita por campo/entidade; em casos ambíguos, marcar para resolução em vez de sobrescrever silenciosamente.
Qualidades: disponibilidade (trabalhar offline), confiabilidade/integridade (não perder/duplicar), desempenho (upload em background), segurança (dados locais e em trânsito), usabilidade (estado de sync visível).
Software de logística e operação aeroportuária
Cenário: sistema coordena atividades de solo, atualização do status de operações e comunicação entre setores. Funciona 24×7, tem poucos usuários simultâneos, integra serviços externos e indisponibilidade pode afetar a operação do aeroporto.
Quais são os drivers principais?
Disponibilidade, confiabilidade, interoperabilidade e observabilidade são mais centrais do que escalabilidade por volume. Poucos usuários não tornam a falha aceitável.
Que decisões/táticas fazem sentido?
Redundância de aplicação, health checks/failover, banco com estratégia de alta disponibilidade e backup/restore testado, timeout + retry controlado + circuit breaker para integrações, filas para desacoplar mensagens importantes, logs/métricas/alertas e modo degradado quando dependência externa falhar.
Escalabilidade deve ser o principal driver?
Não necessariamente. A carga pequena reduz a pressão por escala horizontal para capacidade, mas disponibilidade pode ainda justificar múltiplas instâncias por redundância. Escala e disponibilidade são atributos diferentes.
Projeto arquitetural em grupo — checklist de execução
O trabalho pede uma proposta coerente e defensável, sem necessidade de implementar o software. O foco é conectar stakeholders, requisitos, decisões e visões.
Se escolher 4+1
Faça visão lógica, desenvolvimento, processos e física. O +1 descreve os dois cenários e mostra como atravessam as quatro visões.
Se escolher C4
Contexto, Contêineres, Componentes de um contêiner central e diagrama dinâmico do fluxo principal; explique também a falha. Código é opcional e implantação pode complementar infraestrutura.
