Arquitetura de Sistemas
Estudo sobre arquitetura de sistemas de software, abordando conceitos, atividades essenciais, ciclos de vida e padrões. Destinado a estudantes e profissionais de computação.
Cartões · 50
- O que é arquitetura de sistemas?
- É a estrutura fundamental de um software, definindo componentes, relações e princípios de design. Exemplo: a planta de uma casa, definindo vigas e encanamento antes de construir.
- Qual a diferença entre arquitetura e design de software?
- A arquitetura trata de decisões de alto nível difíceis de mudar (ex: usar microsserviços), enquanto o design trata de detalhes de baixo nível (ex: usar o padrão Factory).
- Quatro atividades essenciais: Especificação
- Fase de levantar e detalhar o que o sistema deve fazer e seus limites técnicos. Exemplo: definir que o app bancário precisa suportar 10.000 transações por segundo.
- Quatro atividades essenciais: Desenvolvimento
- Processo de implementação da arquitetura planejada em código real. Exemplo: codificar os serviços base e integrar os bancos de dados conforme projetado.
- Quatro atividades essenciais: Validação
- Verificação se a arquitetura atende aos requisitos de negócio e de performance. Exemplo: executar testes de carga para confirmar se a Black Friday não derrubará o site.
- Quatro atividades essenciais: Evolução
- Adaptação contínua do sistema a novas tecnologias ou regras de negócio. Exemplo: migrar um módulo de pagamentos monolítico para a nuvem.
- Ciclo da arquitetura: Requisitos e Análise
- Mapear restrições, atributos de qualidade e objetivos de negócio. Exemplo: analisar que a LGPD exige criptografia ponta a ponta nos dados de clientes.
- Ciclo da arquitetura: Design Arquitetônico
- Escolha de padrões, tecnologias e divisão de responsabilidades do sistema. Exemplo: optar pelo padrão MVC ou Event-Driven para processar pagamentos.
- Ciclo da arquitetura: Documentação Arquitetônica
- Registro das decisões, diagramas e padrões adotados. Exemplo: criar diagramas C4 ou ADRs (Architectural Decision Records) no repositório.
- Ciclo da arquitetura: Avaliação Arquitetônica
- Inspeção crítica para identificar riscos antes do fim do projeto. Exemplo: usar o método ATAM para verificar vulnerabilidades de segurança.
- O que é Business Software Architecture (BSA/BSE)?
- Alinhamento da arquitetura de software às metas e processos de negócio da empresa. Exemplo: desenhar um ERP para acelerar a emissão de notas fiscais nas filiais.
- Dificuldades da arquitetura: Obsolescência do modelo
- O sistema muda no código real e o modelo inicial fica ultrapassado. Exemplo: desenhar arquitetura em 2020 e em 2024 o código ter módulos não mapeados.
- Dificuldades da arquitetura: Documentação desatualizada
- Falta de sincronia entre o que está documentado e o que roda em produção. Exemplo: um novo desenvolvedor seguir um diagrama e descobrir portas fechadas.
- Dificuldades da arquitetura: Erosão arquitetural
- Degradação gradual da arquitetura por 'gambiarras' e atalhos rápidos. Exemplo: acessar o banco de dados direto da interface ignorando camadas de serviço.
- Arquitetura Genérica em Camadas (Layered)
- Separa o sistema em camadas com papéis distintos (apresentação, negócio, dados). Exemplo: app com Interface gráfica, camada de Regras e Banco MySQL.
- Cliente-Servidor: Conceito básico
- Divisão onde o cliente requisita recursos e o servidor processa e responde. Exemplo: navegador web acessando o site do Google.
- Cliente-Servidor em Duas Camadas (2-Tier)
- Cliente conecta-se diretamente ao servidor de banco de dados. Exemplo: sistema legado em Delphi instalado no PC acessando diretamente o Oracle.
- Cliente-Servidor em Três Camadas (3-Tier)
- Insere uma camada de aplicação entre o cliente e o banco de dados. Exemplo: app mobile que chama API em Java, que por sua vez acessa o PostgreSQL.
- Cliente-Servidor Multicamadas (N-Tier)
- Divide responsabilidades em múltiplas camadas independentes de serviço e cache. Exemplo: e-commerce com CDN, frontend, API Gateway, microsserviços e cache Redis.
- Model-View-Controller (MVC): Conceito
- Separa a lógica de dados (Model), interface (View) e mediação de eventos (Controller). Exemplo: o framework Django ou Ruby on Rails.
- MVC: O papel do Model
- Gerencia os dados, regras de validação e comunicação com o banco. Exemplo: classe 'Produto' que calcula desconto e salva no banco de dados.
- MVC: O papel da View
- Apresenta a informação ao usuário em formato visual. Exemplo: página HTML que exibe a listagem de produtos e botões de compra.
- MVC: O papel do Controller
- Recebe as entradas do usuário, aciona o Model e escolhe a View de retorno. Exemplo: rota que recebe o clique de 'Comprar' e manda salvar o pedido.
- Arquitetura Orientada a Serviços (SOA)
- Integração de serviços corporativos autônomos via Enterprise Service Bus (ESB). Exemplo: sistema de RH integrado ao de faturamento de uma multinacional via ESB.
- Arquitetura Baseada em Microsserviços
- Divide o sistema em serviços pequenos, independentes e focados em um domínio. Exemplo: o streaming da Netflix com serviços separados de busca, catálogo e vídeo.
- Microsserviços vs. Monólito
- O monólito roda em um único bloco de código; microsserviços rodam isoladamente em rede. Exemplo: falha no chat derruba o e-commerce monólito, mas não no microsserviço.
- Arquitetura Serverless
- Execução de código orientada a funções sem gerenciar servidores físicos ou virtuais. Exemplo: AWS Lambda redimensionando fotos enviadas ao bucket S3.
- Vantagens da arquitetura Serverless
- Custo baseado apenas no tempo de execução e escalabilidade automática quase infinita. Exemplo: pagar zero dólares se o site não receber visitas de madrugada.
- Arquitetura Orientada a Eventos (EDA)
- Sistemas que reagem à captura, produção e consumo de eventos em tempo real. Exemplo: Uber alertando motoristas vizinhos no momento em que uma corrida é pedida.
- Mensageria e EDA (Brokers)
- Uso de intermediários para tráfego assíncrono de eventos sem acoplamento direto. Exemplo: Apache Kafka ou RabbitMQ processando filas de pedidos.
- Inteligência Artificial e Machine Learning na arquitetura
- Inclusão de pipelines de ingestão de dados, treino e inferência de modelos em produção. Exemplo: sistema de antifraude bancário que analisa o risco via modelo ML em milissegundos.
- Arquitetura Centrada em Dados (Data-Centric)
- O dado compartilhado e persistente é o núcleo em torno do qual os módulos operam. Exemplo: Data Lakehouse corporativo onde BI, CRM e IA consom a mesma base unificada.
- Micro Frontend
- Divisão da interface de usuário em pequenos componentes geridos por times diferentes. Exemplo: página do Mercado Livre onde o carrinho, busca e produto são feitos por times distintos.
- SOAP (Simple Object Access Protocol)
- Protocolo formal e padronizado baseado em XML e contratos rígidos (WSDL). Exemplo: integração antiga de emissão de boletos entre bancos e seguradoras.
- REST (Representational State Transfer)
- Estilo arquitetural que utiliza o protocolo HTTP para trafegar recursos via URIs. Exemplo: API usando GET /usuarios/1 para obter dados em formato JSON.
- REST vs. RESTful
- REST é o conjunto de restrições arquiteturais; RESTful é o sistema que aplica todas essas regras. Exemplo: usar verbos HTTP corretos (POST, PUT, DELETE) e código de status 200/404.
- Diferença essencial: SOAP vs. REST
- SOAP é um protocolo estrito focado em segurança/operações; REST é um estilo leve focado em recursos. Exemplo: SOAP usa XML pesado; REST usa JSON leve no tráfego web.
- Arquitetura Cloud Native
- Sistemas criados especificamente para explorar a elasticidade e resiliência da nuvem. Exemplo: app rodando em containers autoescaláveis na AWS usando observabilidade integrada.
- O que é Containerização?
- Empacotar o código e todas as suas dependências em uma unidade isolada e leve. Exemplo: criar um pacote que roda de forma idêntica no laptop do dev e no servidor de produção.
- Docker: O que é e qual o seu papel?
- Plataforma líder para criar, rodar e compartilhar containers. Exemplo: gerar uma imagem Docker com Python e PostgreSQL que sobe com um único comando.
- O que é uma Imagem Docker?
- Molde somente-leitura com as instruções para criar containers. Exemplo: imagem oficial do 'node:18-alpine' contendo o runtime e bibliotecas essenciais.
- Kubernetes (K8s): O que é?
- Orquestrador de containers que automatiza implantação, escala e gestão de clusters. Exemplo: reiniciar automaticamente um container do WhatsApp que caiu por falta de memória.
- Kubernetes: O que é um Pod?
- A menor unidade de execução do Kubernetes, contendo um ou mais containers compartilhados. Exemplo: um container com a API da loja e outro com um coletor de logs ao lado.
- Docker vs. Kubernetes
- Docker cria e roda containers individuais; Kubernetes gerencia centenas de containers em rede. Exemplo: Docker é o barco; Kubernetes é o capitão gerenciando a frota.
- Nuvem Híbrida (Hybrid Cloud)
- Ambiente que combina infraestrutura local (on-premises) com nuvem pública. Exemplo: hospital mantendo prontuários de pacientes em servidores locais e o app na AWS.
- Backend for Frontend (BFF): O que é?
- Padrão onde se cria uma camada de backend sob medida para cada tipo de interface de usuário. Exemplo: um BFF para o App Mobile (dados resumidos) e outro para o Desktop Web (dados detalhados).
- Por que usar o padrão BFF?
- Evita sobrecarregar clientes mobile com dados excessivos e chamadas de rede desnecessárias. Exemplo: o BFF mobile junta 3 chamadas de API em uma única resposta compacta.
- Resiliência na Arquitetura Moderna
- Capacidade do sistema de se recuperar graciosamente de falhas de componentes. Exemplo: padrão Circuit Breaker impedindo que lentidão no checkout trave todo o site de vendas.
- API Gateway
- Ponto de entrada único que roteia, autentica e limita requisições para os microsserviços. Exemplo: Kong ou AWS API Gateway validando token JWT antes de enviar ao serviço interno.
- Escalabilidade Horizontal vs. Vertical
- Horizontal adiciona mais máquinas; Vertical adiciona mais potência (RAM/CPU) à mesma máquina. Exemplo: K8s subindo 10 containers novos vs. pagar o dobro por um servidor com 64GB de RAM.