O documento discute a arquitetura cliente-servidor, definindo seus conceitos principais como cliente magro e gordo, servidor, vantagens e desvantagens. Também aborda a organização de servidores, tipos como servidor de arquivos e bancos de dados, e como funciona a comunicação cliente-servidor através de portas.
2. Objetivos deste encontro
Objetivos deste encontro
• Definição dos conceitos relacionados
– Cliente/Servidor
/
– Distribuindo papéis
– Cliente
• Gordo e magro
– Servidor
d
– Vantagens e Desvantagens da arquitetura
– Web‐Based
3. Cliente/Servidor
• O termo Cliente/Servidor refere‐se ao método
de distribuição de aplicações computacionais
ç p ç p
através de muitas plataformas. Tipicamente
essas aplicações estão divididas entre um
provedor de acesso e uma central de dados e
numerosos clientes contendo uma interface
gráfica para usuários para acessar e manipular
dados.
4. Cliente/Servidor
• Modelo onde dois ou mais computadores
interagem de modo que um oferece os
g q
serviços aos outros.
• Este modelo permite aos usuários acessarem
informações e serviços de qualquer lugar.
5. Cliente/Servidor
• Arquitetura computacional que envolve
requisições de serviços de clientes para
q ç ç p
servidores. Uma rede Cliente/Servidor é uma
extensão lógica da programação modular
modular.
6. Cliente/Servidor
• Uma aplicação Cliente/Servidor pode ser
estruturada em três níveis:
– Interface com o usuário
– Processamento
– Dados
• Simples requer dois tipos de máquinas:
– Cliente: executa programas que compreendem a
interface com o usuário;
– Servidor: implementa camadas de processamento e
de dados.
8. Cliente Servidor
Cliente Servidor
• Na alternativa (a), executa‐se no cliente só a
p
parte da interface dependente do terminal
p
• Na alternativa (b), todo o software de
interface com usuário executa no cliente
• Exemplo da alternativa (c): verificação de
consistência do preenchimento de um
formulário feito no cliente
9. Cliente Servidor
Cliente Servidor
• Na alternativa (d), a aplicação executa na
máquina cliente, indo para o servidor somente
q p
as operações sobre as base de dados.
Exemplo:
– muitas aplicações bancárias;
• Na alternativa (e), o disco local no cliente
mantêm parte dos dados.
p
• Exemplo: browser web mantendo uma cachê;
10. Cliente Servidor
Cliente Servidor
• Recentemente tem‐se evitado as alternativas
( )
(d) e (e) devido a problemas de
( ) p
gerenciamento e por tornar o software cliente
dependente da plataforma subjacente do
cliente
• Clientes gordos ( b
l (abordagens ( ) e ( ))
(d) (e)):evitar;
• Clientes magros (abordagens (a) a (c)): mais
fáceis de gerenciar.
11. Cliente
• Sempre inicia pedidos de servidores;
• Espera por respostas;
• Recebe respostas;
• Normalmente, se conecta a um pequeno
número de servidores de uma só vez; ;
• Normalmente, interage diretamente com os
usuários fi i através d qualquer i t f
á i finais t é de l interface
com o usuário , como interface gráfica do
usuário.
12. Cliente
• Cliente, também denominado de “front‐end”
e “WorkStation”, é um processo que interage
p q g
com o usuário através de uma interface gráfica
ou não permitindo consultas ou comandos
não,
para recuperação de dados e análise e
representando o meio pela qual os resultados
são apresentados.
13. Cliente
• Além disso, apresenta algumas características
distintas:
– É o processo ativo na relação Cliente/Servidor.
– Inicia e termina as conversações com os
Servidores, solicitando serviços distribuídos.
– Nã
Não se comunica com outros Clientes.
i t Cli t
– Torna a rede transparente ao usuário.
14. Servidor
• Sempre esperar por um pedido de um dos
clientes;
• Serve os clientes pedidos, em seguida,
responde com os dados solicitados aos
clientes;
• Um servidor pode se comunicar com outros
servidores, a fim de atender uma solicitação
do cliente.
15. Servidor
• Também denominado Servidor ou “back‐end”,
f
fornece um determinado serviço que fica
ç q
disponível para todo Cliente que o necessita. A
natureza e escopo do serviço são definidos
pelo objetivo da aplicação Cliente/Servidor.
16. Servidor
• Além disso, ele apresenta ainda algumas
p p
propriedades distintas:
– É o processo reativo na relação Cliente/Servidor.
– Possui uma execução contínua
contínua.
– Recebe e responde às solicitações dos Clientes.
– Não se comunica com outros Servidores enquanto
estiver fazendo o papel de Servidor.
– Presta serviços distribuídos.
– Atende a diversos Clientes simultaneamente.
Atende a diversos Clientes simultaneamente.
17. Organização de Servidores
Organização de Servidores
• Servidor interativo: o próprio servidor
manipula a requisição e, se necessário,
p q ç
retorna uma resposta ao cliente;
• Servidor concorrente: repassa para uma
thread ou processo em separado a requisição
e imediatamente espera pela próxima
l ó
requisição
18. Tipos de servidores
Tipos de servidores
• Servidor de Arquivos
• Servidor de Impressora
Servidor de Impressora
• Servidor de Banco de Dados
• Servidor de Redes
• Servidor de Telex
Servidor de Telex
• Servidor de Fax
• Servidor de Processamento e Imagens
• Servidor de Comunicação e etc.
Servidor de Comunicação e etc
19. Comunicação Cliente/Servidor
Comunicação Cliente/Servidor
• Através de portas conhecidas designadas pela
Autoridade para Atribuição de Números na
p ç
Internet (Iana). Ex: FTP‐21, HTTP‐80
• Através de um daemon que registra os
servidores em execução
• Através de um superservidor, que escuta em
várias portas e repassa a requisição a um
servidor específico.
21. Vantagens
• Na maioria dos casos, a arquitetura
cliente/servidor permite que os papéis e
p q p p
responsabilidades de um sistema de
computação possam ser distribuídos entre
vários computadores independentes que são
conhecidos por si só através de uma rede
rede.
22. Vantagens
• Isso cria uma vantagem adicional para essa
q
arquitetura:
– Maior facilidade de manutenção. Por exemplo, é
possível substituir, reparar, atualizar ou mesmo
realocar um servidor de seus clientes, enquanto
continuam a ser a consciência e não afetado por
essa mudança;
23. Vantagens
• Todos os dados são armazenados nos
servidores, q
que g
geralmente p
possuem
controles de segurança muito maior do que a
maioria dos clientes
clientes.
• Servidores podem controlar melhor o acesso e
recursos, para garantir que apenas os clientes
l
com as permissões adequadas podem acessar
e alterar dados;
24. Vantagens
• O armazenamento de dados é centralizada, as
atualizações dos dados são muito mais fáceis
ç
de administrar, em comparação com o
paradigma P2P onde uma arquitetura P2P
P2P, P2P,
atualizações de dados podem precisar ser
distribuída e aplicada a cada ponto na rede
rede,
que é o timeconsuming é passível de erro,
como pode haver milhares ou mesmo milhões
de pares;
25. Vantagens
• Muitas tecnologias avançadas de
clientes/servidor já estão disponíveis, que
j p q
foram projetadas para garantir a segurança,
facilidade de interface do usuário e facilidade
de uso;
• Funciona com vários clientes diferentes de
á l f
capacidades diferentes.
26. Vantagens
• Confiabilidade
– Se uma máquina apresenta algum problema,
q p g p ,
ainda que seja um dos Servidores, parte do
Sistema continua ativo.
• Matriz de Computadores agregando
capacidade de processamento
capacidade de processamento
– A arquitetura Cliente / Servidor provê meios para
que as tarefas sejam feitas sem a monopolização
dos recursos. Usuários finais podem trabalhar
localmente.
27. Vantagens
• O Sistema cresce facilmente
– Torna‐se fácil modernizar o Sistema quando
q
necessário.
• O Cliente e o Servidor possuem ambientes
operacionais individuais / Sistemas Abertos
– Pode‐se misturar várias plataformas para melhor
atender às necessidades individuais de diversos
setores e usuários.
28. Desvantagens
• Redes de tráfego de bloqueio é um dos
p
problemas relacionados com o modelo
cliente/servidor.
– Como o número de solicitações simultâneas de
cliente para um determinado servidor, o servidor
pode ficar sobrecarregado;
29. Desvantagens
• O paradigma cliente/servidor não tem a
robustez de uma rede P2P.
– Sob cliente/servidor, se um servidor crítico falhar,
os pedidos dos clientes não podem ser cumpridos.
– Em redes P2P, os recursos são normalmente
distribuídos entre vários nós Mesmo se um ou
nós.
mais nós partem e abandonam baixar um arquivo,
por exemplo os nós restantes ainda deve ter os
exemplo,
dados necessários para completar o download.
30. Desvantagens
• Manutenção
– As diversas partes envolvidas nem sempre
p p
funcionam bem juntas. Quando algum erro
ocorre, existe uma extensa lista de itens a serem
,
investigados.
• Ferramentas
– A escassez de ferramentas de suporte, não raras
vezes obriga o d
bi desenvolvimento d f
l i de ferramentas
próprias. Em função do grande poderio das novas
linguagens d programação, esta difi ld d está
li de ã dificuldade á
se tornando cada vez menor.
31. Desvantagens
• Treinamento
– A diferença entre a filosofia de desenvolvimento
ç
de software para o microcomputador de um
fabricante para o outro, não é como a de uma
p ,
linguagem de programação para outra. Um
treinamento mais efetivo torna‐se necessário.
• Gerenciamento
–A
Aumento d complexidade d ambiente e a
da l id d do bi
escassez de ferramentas de auxílio tornam difícil o
gerenciamento d rede.
i da d
32. Arquitetura Web‐Based
Arquitetura Web Based
• Então, usamos o Browser como Cliente
Universal
• Conceito de Intranet
• A camada d aplicação se quebra em d
d de li ã b duas:
Web e Aplicação
• Evitamos instalar qualquer software no
desktop e portanto,
portanto problemas de
manutenção
33. Arquitetura Web‐Based
Arquitetura Web Based
• Evitar instalação em computadores de
clientes, parceiros, fornecedores, etc.
p
• Às vezes, continua se a chamar isso de 3
camadas porque as camadas Web e Aplicação
frequentemente rodam na mesma máquina
(para pequenos volumes)
( l )
34. Arquitetura Web‐Based
Arquitetura Web Based
Classe Mãe
Generaliza
Especializa
E i li
Classe Filha
35. Problemas da Web‐Based
Problemas da Web Based
• Não há suporte a Thin Clients (PDA, celulares,
smart cards, quiosques, ...)
q q )
– preciso usar um browser (pesado) no cliente
• Dificuldade de criar software reutilizável
– cadê a componentização?
36. Problemas da Web‐Based
Problemas da Web Based
• Fazer aplicações distribuídas multicamadas é
difícil. Pois deve‐se
– Implementar persistência (impedance mismatch
entre o mundo OO e o mundo dos BDs
relacionais)
– Implementar tolerância a falhas com failover
Implementar tolerância a falhas com failover
– Implementar gerência de transações distribuídas
– Implementar balanceamento de carga
– Implementar resource pooling
p p g
38. Referências
• (AMARAL,1993) Amaral, W. H. “Arquitetura
j
Cliente/Servidor Orientada a Objeto” Tese de
Mestrado, IME, 1993.
• (NAVATHE 1994) Navathe Shamkant B &
(NAVATHE,1994) Navathe, Shamkant B. &
Elmasri, Ramez “Fundamentals of Database
Systems” 2nd Ed., Benjamin Cummings, CA,
”
1994.