Sistemas Distribuídos · Grad.SD.02 · IF Goiano

Estilos
Arquitetônicos

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 Verde Prof. Andrea B. Proto Sardi Ciê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

ESTILOESSÊNCIACONECTOR TÍPICOEXEMPLO
CamadasHierarquia N→1, cada camada serve a superiorrequest/responseTCP/IP, OSI, MVC
ObjetosObjetos encapsulados com chamadas remotasRPC / RMICORBA, Java RMI
DadosComponentes compartilham repositórioespaço de dadosREST, banco de dados
EventosPublish-subscribe sem acoplamento diretoevent busKafka, RabbitMQ
← Início IF Goiano · SD · Grad.SD.02 Camadas →

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.
TCP/IP StackOSI ModelMVC3-Tier WebMiddleware layerSpring MVC
← Introdução Grad.SD.02 Objetos →

02 · Estilo Arquitetônico

Arquitetura Baseada em Objetos

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ó
RPC RPC call
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.
CORBAJava RMIgRPCMicroservicesCOM/DCOM.NET Remoting
← Camadas Grad.SD.02 Dados/REST →

03 · Estilo Arquitetônico

Dados / REST

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

RESTSOAP
ParadigmaCentrado em recursosCentrado em operações/serviços
FormatoJSON, XML, HTML…XML obrigatório
TransporteHTTP exclusivamenteGenérico: HTTP, SMTP, FTP…
AcoplamentoBaixo — statelessAlto — contratos WSDL
ExemploPUT "http://mybucket.s3.aws.com/"bucket.create("mybucket")
Amazon S3 RESTAPIs WebGraphQLSOAP/WS-*OpenAPI
← Objetos Grad.SD.02 Eventos →

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 tempoDesacoplados 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.
✓ Vantagens
Alto desacoplamento · Escalabilidade natural · Fácil adicionar novos subscribers · Tolerância a falhas parciais
✗ Desvantagens
Difícil depurar fluxo de eventos · Sem garantia de ordem · Complexidade no tratamento de falhas · Risco de eventos perdidos
Apache KafkaRabbitMQAWS SNS/SQSRedis Pub/SubWebSocketsNATS
← Dados/REST Grad.SD.02 Middleware →

05 · Infraestrutura

Middleware & Adaptabilidade

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
A B C D 12 conexões para N=4
Broker · 2N wrappers
Broker central A B C D 8 conexões para N=4

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
← Eventos IF Goiano · SD · Grad.SD.02 Quiz →

06 · Fixação

Quiz de Fixação

6 questões sobre Estilos Arquitetônicos em Sistemas Distribuídos. Clique na resposta que julgar correta.

0 / 6 respondidas
← Middleware ↺ Reiniciar Quiz Início →