Como organizar componentes, conectores e dados em sistemas distribuídos. Explore cada estilo abaixo.
00 · FUNDAMENTOS
🧩
Introdução
Componentes, conectores, configuração e middleware adaptativo
conceitos base
01 · ESTILO
🗂️
Camadas
Hierarquia N→1: cada camada serve à superior e usa a inferior
layered
02 · ESTILO
🔵
Objetos
Objetos encapsulados comunicando via RPC/RMI entre máquinas
object-based
03 · ESTILO
🗄️
Dados / REST
Repositório compartilhado e recursos acessados via URI/HTTP
RESTful
04 · ESTILO
📡
Eventos
Publish-subscribe: desacoplamento total entre produtores e consumidores
event-driven
05 · INFRA
⚙️
Middleware
Wrappers, brokers e interceptadores para adaptabilidade
adaptável
06 · REVISÃO
🎯
Quiz de Fixação
Teste seus conhecimentos sobre os estilos arquitetônicos
6 questões
IF Goiano · Campus Rio VerdeProf. Andrea B. Proto SardiCiência da Computação · 7º período
00 · Fundamentos
Introdução aos Estilos Arquitetônicos
A organização dos SDs trata em grande parte dos componentes de software que constituem o sistema. Os componentes estão espalhados por várias máquinas e devem ser organizados adequadamente.
Estilo Arquitetônico = organização lógica do conjunto de componentes Arquitetura de Sistema = organização física dos componentes
Elementos que definem um estilo
🧩 Componentes
Unidades substituíveis com interfaces bem definidas. A "peça" funcional do sistema.
🔌 Conectores
Mecanismo que media comunicação e cooperação: RPC, mensageria, streaming, espaço de dados.
↔️ Troca de dados
Como a informação flui entre os componentes conectados — protocolos, formatos, semântica.
⚙️ Configuração
Como componentes e conectores são montados e orquestrados em um sistema operacional.
Meta importante dos SDs
Separar aplicações das plataformas subjacentes fornecendo uma camada de middleware.
Principal finalidade: proporcionar transparência de distribuição.
Para isso é necessário um middleware adaptativo — ou um sistema autonômico.
Os 4 estilos clássicos
ESTILO
ESSÊNCIA
CONECTOR TÍPICO
EXEMPLO
Camadas
Hierarquia N→1, cada camada serve a superior
request/response
TCP/IP, OSI, MVC
Objetos
Objetos encapsulados com chamadas remotas
RPC / RMI
CORBA, Java RMI
Dados
Componentes compartilham repositório
espaço de dados
REST, banco de dados
Eventos
Publish-subscribe sem acoplamento direto
event bus
Kafka, RabbitMQ
← InícioIF Goiano · SD · Grad.SD.02Camadas →
01 · Estilo Arquitetônico
Arquitetura em Camadas
Componentes organizados em níveis hierárquicos. Cada camada oferece serviços à superior e consome serviços da inferior. O fluxo desce na requisição e sobe na resposta.
Fluxo de requisição → resposta
Layer NAplicação
▾▾▾
Layer N-1Negócio
▾▾▾
Layer 2Dados
▾▾▾
Layer 1Infraestrutura
requisição ↓resposta ↑
Variação (a) — Downcall
Chamada sempre desce para a camada imediatamente abaixo. Request/Response clássico. Fluxo previsível e controlado.
Variação (b) — One-way call
Requisição desce pulando camadas sem retorno pelo mesmo caminho. Comunicação unidirecional.
Variação (c) — Upcall
Camada inferior chama camada superior (callback). Inverte o fluxo para tratar eventos assíncronos — ex: notificações do SO.
✓ Vantagens
Separação clara de responsabilidades · Substituição individual de camadas sem afetar o sistema · Facilita testes unitários · Amplamente padronizado (OSI, TCP/IP, MVC, 3-tier)
✗ Desvantagens
Latência adicional em cada passagem · Camadas rígidas limitam atalhos de desempenho · Dificulta comunicação entre camadas não adjacentes
Exemplo real: o modelo OSI possui 7 camadas. Cada camada adiciona um cabeçalho ao pacote (encapsulamento) na transmissão e remove na recepção — comunicação lógica par-a-par, física apenas na última camada.
Componentes são objetos que encapsulam estado e métodos. Conectam-se por chamadas de procedimento remoto (RPC/RMI). Os objetos podem residir em máquinas diferentes.
Objetos distribuídos — clique em um nó
Acamada UI
Bnegócio
Cserviço ext.
Ddados
Clique em um objeto para ver detalhes
Encapsulamento: cada objeto oculta sua implementação interna — expõe apenas a interface pública. Chamadas traversam a rede de forma transparente para a aplicação chamadora.
🔒 Estado oculto
A implementação interna não é visível externamente. Outros objetos interagem apenas pelo contrato da interface pública.
📡 RPC Transparente
O objeto pode estar em outra máquina. A chamada é executada pela rede como se fosse local — o middleware cuida da serialização.
🔄 Substituição
Qualquer objeto que implemente a mesma interface pode substituir outro sem impacto no restante do sistema.
🌐 Distribuição
Objetos residem em máquinas diferentes. O middleware oculta localização física — chamadas locais e remotas têm mesma sintaxe.
Centrado em dados: componentes leem/escrevem em repositório compartilhado. No estilo RESTful, o SD é um conjunto de recursos identificados por URI e acessados via HTTP.
Operações REST — HTTP verbs · clique para ver exemplo
PUT/api/cursos/SD-02→ cria recurso
GET/api/cursos/SD-02→ recupera estado
POST/api/cursos/SD-02→ modifica estado
DELETE/api/cursos/SD-02→ remove recurso
4 Princípios REST
1. Nomeação única
Recursos identificados por um único esquema de nomeação — a URI. Cada recurso tem um endereço único e estável no sistema.
2. Interface uniforme
Todos os serviços oferecem a mesma interface (PUT/GET/POST/DELETE). Nenhum método customizado adicional.
3. Autodescrição
Mensagens enviadas/recebidas são completamente autodescritas com metadados — sem conhecimento prévio entre as partes.
4. Stateless
Após executar uma operação, o componente esquece tudo do chamador. Sem sessão persistente no servidor.
REST vs SOAP
REST
SOAP
Paradigma
Centrado em recursos
Centrado em operações/serviços
Formato
JSON, XML, HTML…
XML obrigatório
Transporte
HTTP exclusivamente
Genérico: HTTP, SMTP, FTP…
Acoplamento
Baixo — stateless
Alto — contratos WSDL
Exemplo
PUT "http://mybucket.s3.aws.com/"
bucket.create("mybucket")
Amazon S3 RESTAPIs WebGraphQLSOAP/WS-*OpenAPI
← ObjetosGrad.SD.02Eventos →
04 · Estilo Arquitetônico
Arquitetura Baseada em Eventos
Componentes publicam eventos e assinam tópicos sem se conhecer diretamente. O barramento é o conector central. Desacoplamento total: temporal e espacial.
Publish-Subscribe · fluxo contínuo de eventos
PUBLISHERS
📦 Serviço Aordem.criada
💳 Serviço Bpagamento.ok
🚗 Serviço Centrega.atualizada
EVENT BUS
SUBSCRIBERS
📧 Notificação
📊 Analytics
🚚 Logística
Acoplamento temporal × espacial
Acoplados no tempo
Desacoplados no tempo
Acoplados por referência
Comunicação direta — ambos devem estar ativos simultaneamente
Mailbox — mensagem armazenada até receptor disponível
Desacoplados por referência
Baseado em eventos — publica sem saber quem consome
Espaço de dados compartilhado — eventos + dados persistentes
Arquitetura Publish-Subscribe = desacoplados por referência + desacoplados no tempo. É o ponto mais avançado de desacoplamento — publisher e subscriber podem existir em momentos completamente diferentes.
O middleware separa aplicações das plataformas subjacentes. Quando interfaces legadas não são adequadas, usa-se wrapper/adapter. Brokers centralizam a comunicação.
Wrapper vs Broker — complexidade O(N²) vs O(N)
1-on-1 · N×(N-1) wrappers
Broker · 2N wrappers
Fluxo de interceptadores (adaptable middleware)
Aplicação cliente
Chama B.faz-alguma-coisa(valor) normalmente — sem saber que há interceptadores
↳ Interceptor de requisição
Captura a chamada antes do middleware. Pode autenticar, transformar, redirecionar ou coletar métricas.
↳ Interceptor de mensagem
Atua no nível da mensagem enviada pelo SO local. Pode serializar, comprimir ou criptografar o payload.
Middleware objeto
Recebe a mensagem processada e encaminha ao objeto destino na rede via protocolo de transporte.
Objeto B (destino)
Executa o método. Resultado retorna pelo caminho inverso, sendo des-interceptado em sentido contrário.
🔧 Wrapper / Adapter
Interface legada inadequada? Um wrapper oferece interface aceitável para a aplicação cliente, transformando chamadas nas disponíveis no componente original.
🤖 Sistema Autonômico
SD que se adapta sem intervenção humana: auto-configuração, auto-otimização, auto-recuperação e auto-proteção — alcançando adaptabilidade dinâmica.
Java EE InterceptorsSpring AOPService MeshCORBA InterceptorsIstio / Envoy
← EventosIF Goiano · SD · Grad.SD.02Quiz →
06 · Fixação
Quiz de Fixação
6 questões sobre Estilos Arquitetônicos em Sistemas Distribuídos. Clique na resposta que julgar correta.