KF Cadernos interativos
Arquitetura de Software
Guia de resolução

Como responder uma questão arquitetural sem cair em resposta genérica

1. ContextoQuem usa, carga, criticidade, restrições e dependências.
2. DriverQual RF/RNF/ASR realmente força uma decisão?
3. AlternativasCompare pelo menos duas opções plausíveis.
4. EvidênciaDefina teste, métrica e comportamento de falha.
Estrutura de resposta: “Como o cenário exige Y, eu escolheria X. Isso melhora A, mas custa B. A hipótese seria validada por W.”
Aula 03

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.

Cheque: há carga/condição? há limite? existe forma de testar? Se a resposta for “não”, o RNF ainda está fraco.
Revisão P1

Lab — pressão → tática candidata → custo

Atividade de Fixação 1

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.

Atividade aula 2 — folha enviada

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.

Propósito e públicoO que o sistema resolve? Quem depende dele?
Usuários e acessosPerfis, permissões, frequência, simultaneidade e canais.
CrescimentoEstimativa de crescimento anual ou de picos.
Tipo de arquiteturaMonólito modular, camadas, cliente-servidor, serviços etc., com justificativa.
InfraestruturaOn-premise, cloud ou híbrida; dependências externas e impacto de indisponibilidade.
Exemplo de resposta curta: “Sistema mobile de coleta científica usado por pesquisadores em campo. Funciona online e offline, armazena coletas localmente e sincroniza depois. O backend centraliza dados e autenticação; armazenamento local é parte crítica da arquitetura por causa da conectividade intermitente.”
Atividade aula 2

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.

Para cada cenário: informe estímulo, ambiente, artefato afetado, resposta aceitável e critério de falha/sucesso.
Atividade aula 2

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.

RF01Registrar coleta
RNF-DISPOperar 8 h offline
RNF-INTSem duplicar registros
RNF-PERFSalvar localmente < 1 s
RF02Sincronizar coleta
RNF-CONFRetomar após falha
RNF-SEGTLS + autenticação
RNF-INTIdempotência

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.

Atividade aula 2 — ASR

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.

Exemplo ASR: “Durante operação sem conectividade por até 8 horas, o aplicativo deve permitir registrar todas as coletas localmente e, quando a conexão retornar, sincronizar sem perda e sem criar duplicatas; 99,9% das operações válidas devem chegar ao servidor em até 10 min após restabelecimento da rede.”

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.

Tática 1 · armazenamento local transacional

Permite operação offline.

Exige migração/criptografia/limpeza de dados no dispositivo.

Tática 2 · fila local + retry exponencial

Retoma envio automaticamente.

Precisa controlar backlog e evitar tempestade de retries.

Tática 3 · idempotência + versionamento

Reduz duplicação e detecta conflitos.

Mais metadados, regras de merge e lógica de domínio.

Trade-off

Mais resiliência e disponibilidade percebida.

Maior complexidade de consistência e teste.

Aula 05

Lab — qual recorte C4 responde à pergunta?

Escolha uma perguntaO nível correto depende do tipo de detalhe necessário.
Questão enviada em foto

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).

Questão discursiva enviada

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.

Atividade Avaliativa 2

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.

Contexto e escopoProblema, fronteira, premissas e pelo menos 4 stakeholders, cobrindo negócio/uso e técnico/operação.
Levantamento5 RFs prioritários + 3 RNFs verificáveis, com origem e prioridade.
Decisões3 decisões estruturais justificadas: responsabilidades, comunicação e dados/implantação; compare ao menos 2 alternativas em cada.
VisõesEscolha 4+1 OU C4 e conecte diagramas aos requisitos/stakeholders.
CenáriosPercorra um fluxo principal e uma exceção/falha relevante.
MatrizStakeholder | preocupação | interação | participação na arquitetura | visão/nível | elemento/relação que atende.

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.

Consistência visual: mantenha os mesmos nomes e fronteiras entre diagramas. Cada desenho precisa ter título, escopo, elementos, direção/significado das relações e legenda/tecnologias quando necessárias.