Logo ← Voltar ao Portal da Disciplina Conheça meu trabalho como perito

Disciplina: Sistemas Distribuídos

SOA, SOAP e Arquitetura REST


Prof. Dr. Lincoln Sposito

📅 16 de Março de 2026

🕒 19h - 21h30

Roteiro de Atividades

Agenda do Dia

  • 01 Revisão: Componentização e Middleware
  • 02 Pesquisa: Você aprendeu (Componentização e Middleware)?
  • 03 Aula Expositiva: SOA, SOAP e Arquitetura REST
  • 04 Atividade Prática: Modelagem de Recursos REST
  • 05 Conclusão: Critérios de Escolha Arquitetural
  • 06 Recapitulação: Statelessness e Contratos de Interface
  • 07 Pesquisa de Satisfação (Excelente, Bom, Ruim, Péssimo)
  • 08 Recursos e downloads

01 | Revisão: O que são Sistemas Distribuídos?

"Um sistema distribuído é uma coleção de computadores independentes que se apresenta aos seus usuários como um sistema único e coerente."
— Tanenbaum & Steen (2007)

Concorrência

Componentes executam tarefas simultaneamente em diferentes nós da rede (Coulouris, 2013).

Falhas Parciais

Diferente de sistemas locais, em um SD, um nó pode falhar enquanto outros continuam operando (Monteiro, 2020).

A rede deixa de ser um "cabo" e passa a ser um componente ativo e incerto.

Slide 2/2 - Seção de Revisão

01 | Revisão: Componentização e Middleware

Componentização: Segundo Coulouris et al. (2013), a componentização permite que sistemas distribuídos sejam estendidos e reconfigurados de forma independente, facilitando a evolução do software através de unidades autônomas que interagem via interfaces bem definidas.

Middleware: Conforme definido por Tanenbaum & Steen (2007), o middleware atua como uma camada de software que provê um modelo de programação comum, mascarando a heterogeneidade dos nós e permitindo que componentes distintos operem como um sistema único e transparente.

Interoperabilidade: A visão moderna de Monteiro et al. (2020) reforça que o sucesso da distribuição reside na capacidade de comunicação entre sistemas heterogêneos, garantida pelo uso rigoroso de padrões de projeto e protocolos de rede.

Utilize as setas ← → para navegar

01 | Revisão: SD no Mundo Real (Streaming)

📱

Interface (Nó A)

O App solicita a lista de filmes via API.

⚙️

Middleware

Autentica o usuário e roteia o pedido.

🗄️

Serviço (Nó B)

O componente busca os dados no NoSQL.

O "Pulo do Gato": Se o Nó B falhar, o Middleware redireciona para uma réplica. O usuário nem percebe a falha. Isso é a Transparência de Falha descrita por Coulouris (2013).

02 | Pesquisa: Você aprendeu?

Antes de seguirmos para SOA e REST...

Compreendo por que um Sistema Distribuído é diferente de um Monólito?

Sei explicar o papel do Middleware como "camada de transparência"?

Entendo que a falha em SD é parcial e precisa ser tratada?

03 | Aula Expositiva: SOA, SOAP e REST

O Contrato como Base da Distribuição

A integração de sistemas heterogêneos exige que a comunicação ignore a implementação interna e foque estritamente em interfaces bem definidas. Segundo Coulouris et al. (2013), essa formalização é o que permite que componentes escritos em diferentes linguagens e rodando em diversos SOs colaborem de forma confiável.

Antigamente Complexidade da Rede

Protocolos proprietários e acoplamento forte.

Hoje (SOA/REST) Formalização de Contratos

Interoperabilidade baseada em padrões abertos.

"O contrato garante que o provedor e o consumidor do serviço falem a mesma língua."

03 | Aula Expositiva: SOA, SOAP e REST

SOA: Estratégia além da Tecnologia

A arquitetura SOA (Service-Oriented Architecture) não é um software, mas um estilo para organizar recursos de TI em serviços reutilizáveis. Para Monteiro et al. (2020), o foco reside na agilidade organizacional e na redução do tempo de resposta ao mercado.

Desacoplamento

Serviços funcionam de forma independente, sem conhecer a tecnologia vizinha.

Contrato

Regras rígidas de entrada e saída, garantindo que o diálogo nunca falhe.

Composicionalidade

Novas soluções são criadas apenas combinando serviços já existentes.

💡 Caso Colégio Mirassol: Ao criar um Serviço de Mensalidade, o colégio pode usá-lo tanto no App dos pais quanto na Secretaria, sem precisar programar a lógica financeira duas vezes.

03 | Aula Expositiva: SOA, SOAP e REST

SOAP: O Protocolo do Rigor Corporativo

O SOAP (Simple Object Access Protocol) é um protocolo baseado em XML que define um framework de mensagens para troca de informações estruturadas. Conforme Tanenbaum & Steen (2007), sua força reside na padronização e na capacidade de atravessar firewalls via HTTP.

  • • Envelope: A raiz do documento XML que define a mensagem.
  • • Header: Atributos de segurança e transação (opcional).
  • • Body: O conteúdo principal (a "carga útil" ou payload).
  • • Fault: Tratamento de erros e status da requisição.
SOAP ENVELOPE
Header (Segurança/Meta)
SOAP BODY
<DadosDoContrato />
SOAP Fault (Erro)

"Diferente do REST, o SOAP é independente do protocolo de transporte (pode rodar em SMTP, FTP ou TCP)."

03 | Aula Expositiva: SOA, SOAP e REST

REST: Recursos e Verbos HTTP

O REST (Representational State Transfer) utiliza a infraestrutura nativa da Web para a comunicação. Para Monteiro et al. (2020), sua simplicidade e natureza stateless o tornam o padrão ideal para a escalabilidade em nuvem.

Verbo HTTP Ação (CRUD) Exemplo de Endpoint
GET Leitura / Busca /alunos/123
POST Criação /alunos
PUT / PATCH Atualização /alunos/123
DELETE Exclusão /alunos/123

"No REST, as URIs identificam Substantivos (Recursos), enquanto os verbos HTTP definem as Ações."

03 | Aula Expositiva: SOA, SOAP e REST

Tomada de Decisão: SOAP vs. REST

A escolha entre SOAP e REST não é sobre qual é "melhor", mas qual atende aos requisitos do projeto. Para Monteiro et al. (2020), entender esses trade-offs é vital para a arquitetura de sistemas escaláveis.

Característica SOAP (Rigor) REST (Agilidade)
Formato de Dados Apenas XML JSON (leve), XML, HTML
Protocolo Independente (HTTP, SMTP, etc.) Estritamente HTTP / HTTPS
Estado (State) Pode ser Stateful Obrigatoriamente Stateless
Cache Não cacheável nativamente Nativo e eficiente (Performance)
Melhor Uso Sistemas Bancários / Segurança Web APIs / Apps Mobile / Cloud

Dica do Analista: O SOAP exige mais banda devido ao XML pesado. O REST economiza recursos, sendo vital para dispositivos móveis com conexões instáveis.

03 | Aula Expositiva: SOA, SOAP e REST

Adendo: Retenção de Estado (State)

A gestão do "Estado" define como o servidor lembra de interações passadas. Conforme Tanenbaum & Steen (2007), a escolha entre manter ou não o estado impacta diretamente a tolerância a falhas do sistema.

🧠 Stateful (SOAP)

O servidor guarda a memória da conversa. Cada requisição depende do que aconteceu na anterior.

  • Complexo para escalar (Sticky Sessions)
  • Ideal para transações bancárias longas

☁️ Stateless (REST)

O servidor não guarda memória. Cada requisição deve conter toda a informação necessária (Self-contained).

  • Alta escalabilidade (Cloud Native)
  • Facilita o Cache e a Recuperação de Falhas

"No modelo Stateless, se um servidor falha, qualquer outro nó pode assumir a requisição imediatamente."
— Monteiro et al. (2020)

03 | Aula Expositiva: SOA, SOAP e REST

Mecanismo de Sessão: Quem guarda o quê?

Contexto no SERVIDOR (Stateful)

O servidor abre um "envelope" para o cliente e o mantém aberto.

Risco: Se o servidor reiniciar ou o cliente for direcionado para outro nó, o "envelope" é perdido.
(Ref: Tanenbaum & Steen, 2007)

[ID_Sessao: 9982 -> User: DrLincoln]

Contexto no CLIENTE (Stateless)

O cliente carrega seu próprio "envelope" (Token/JSON) e o apresenta em cada pedido.

Vantagem: Qualquer servidor pode atender o cliente a qualquer momento.
(Ref: Monteiro et al., 2020)

[HTTP Header -> Authorization: Bearer JWT...]

"No Stateless, a transação é autocontida. No Stateful, a transação é fragmentada e dependente de histórico."

03 | Aula Expositiva: SOA, SOAP e REST

O Ciclo Request-Response na Prática

1. CLIENTE GET /laudo/45
2. MIDDLEWARE Valida Contrato
3. SERVIÇO Processa Lógica
4. RESPOSTA 200 OK (JSON)
// Chamada da API
fetch('https://sposito.pro/api/laudo/45')
/* Payload de Resposta */
{
  "id": 45,
  "status": "concluído",
  "perito": "Dr. Lincoln"
}

"A transparência de acesso é garantida quando o cliente interage com a interface do serviço sem preocupar-se com a localização do dado."
— Coulouris et al. (2013)

04 | Atividade Prática: Modelagem de Recursos REST

Desafio: API Colégio Mirassol

Cenário: O Colégio precisa integrar o sistema de Notas com o App dos Pais. Você deve definir os contratos de interface.

Sua Tarefa (Em Duplas):

  • 🔹 Identificar o Recurso principal (Substantivo).
  • 🔹 Definir a URI para listar todas as notas de um aluno.
  • 🔹 Definir o Verbo HTTP para lançar uma nova nota.
Exemplo de Resposta Esperada POST /notas

(Para criar um novo registro no banco)

"A modelagem correta de URIs é o primeiro passo para a escalabilidade horizontal."
— Monteiro et al. (2020)

04 | Atividade Prática: Resolução e Feedback

Resolução Técnica: API Mirassol

❌ Abordagem Amadora

POST /getNotasAlunos?id=123

  • • Usa verbos na URI (getNotas).
  • • Usa POST para uma leitura.
  • • Viola o princípio de "Recurso".

✅ Padrão RESTful

GET /alunos/123/notas

  • • URI identifica Substantivos (Recursos).
  • • Hierarquia lógica: Notas pertencem a Alunos.
  • • Verbo GET para busca de dados.

Fundamentação: Ao utilizar GET /alunos/{id}/notas, criamos uma interface autodocumentada e previsível. Segundo Coulouris et al. (2013), essa padronização reduz a carga cognitiva do desenvolvedor que irá consumir o serviço, facilitando a interoperabilidade entre o sistema acadêmico e o App mobile.

Baixe o PDF explicativo!

05 | Conclusão: Critérios de Escolha Arquitetural

Decisão Técnica: Qual caminho seguir?

🛡️ PROTOCOLO SOAP
  • Segurança: Exige WS-Security em nível de mensagem.
  • Transações: Necessita de atomicidade complexa (ACID).
  • Legado: Integração com sistemas corporativos rígidos.
🚀 ESTILO REST
  • Performance: Foco em escalabilidade e nuvem.
  • Mobile: Dados leves via JSON (baixo parsing).
  • Web: Uso eficiente de cache nativo HTTP.

"A arquitetura moderna privilegia o REST pela aderência aos princípios de sistemas abertos."
— Monteiro et al. (2020)

06 | Recapitulação: Statelessness e Contratos de Interface

O que não podemos esquecer hoje?

📜 Contratos de Interface

É a "lei" do sistema. Define como os componentes conversam (Verbos e URIs), independente da linguagem (Java, Node, Python).

Ref: Coulouris et al. (2013)

☁️ Statelessness

O servidor não guarda passado. Cada requisição é autocontida. Sem isso, não há escalabilidade em nuvem.

Ref: Tanenbaum & Steen (2007)

Sem contrato, não há conversa. Sem Stateless, não há escala.

07 | Pesquisa de Satisfação

Como foi a aula de hoje sobre SOA e REST?

Sua opinião é fundamental para o ajuste contínuo da nossa disciplina.
Seu voto é anônimo.

Próxima Aula: Implementação prática de Microserviços e Segurança em APIs.
Até breve, Analistas!

08 | Recursos e Downloads

Material de Apoio e Revisão

📄
Aula 16/03: SOA, SOAP e REST sistemas-distribuidos-aula-16-03-2026-soa-soap-e-arquitetura-rest.pdf
📚
Revisão 02/03: Componentização e Middleware sistemas-distribuidos-revisao-aula-02-03-2026-componentizacao-middleware.pdf

💡 Dica: Utilize o material de revisão para fundamentar os exercícios do Módulo 04.

Arquivos disponibilizados para uso acadêmico exclusivo - Prof. Dr. Lincoln Sposito