Arquitetura de software : Cliente-Servidor
-
Upload
alexsandro-oliveira -
Category
Software
-
view
377 -
download
4
Transcript of Arquitetura de software : Cliente-Servidor
Agenda● Modelo Cliente - Servidor
○ Contextualização○ Solução○ Vantagens○ Desvantagens
● Quando Utilizar (Exemplo)○ LoLNews
● Quando Não Utilizar (Exemplo)○ Notificações
● Caso de Sucesso○ Internet ○ SGBDs○ Servidor de Arquivos Samba
Contextualização do Modelo Cliente - ServidorContexto : Existem recursos e serviços compartilhados que um grande número de clientes distribuídos desejam acessar. Deseja-se controlar esse acesso e a qualidade do serviço.
Problema : Ao gerir um conjunto de recursos e serviços compartilhados, podemos promover manutenibilidade e reuso a partir da fatoração de serviços. Sendo assim, queremos melhorar a disponibilidade e escalabilidade, centralizando o controle, enquanto os recursos e serviços são distribuídos em um ou vários servidores.
Solução do Modelo Cliente - ServidorOs clientes interagem solicitando recursos e/ou serviços de servidores, que fornecem esse conjunto de recursos e serviços.
Os componentes podem agir como clientes ou servidores.
Pode haver um servidor central ou múltiplos servidores distribuídos.
Solução do Modelo Cliente - ServidorResumo ● Clientes iniciam interações com Servidores, por
meio da requisição de serviços quando necessitarem e esperando a resposta dessas requisições
Elementos ● Cliente, Servidor e Conector Requisição/Resposta
Relações ● Attachment Relation (Relação de Ligação)
Restrições ● Clientes são conectados a Servidores apenas por regras de Requisição/Resposta
● Servidores podem ser clientes apenas de outros Servidores
● Restrições de números de clientes por servidores e de quantidade de serviço provido pelo servidor
Vantagens● Integridade● Confiabilidade● Manutenibilidade*● Disponibilidade*● Escalabilidade*● Segurança
● É possível substituir, reparar, atualizar ou mesmo realocar um servidor sem que os clientes sejam afetados
● Os dados são armazenados no servidor, o que facilita a centralização da segurança
● Atualizações nos dados são mais fáceis de administrar
● Funciona com vários clientes de capacidades diferentes
● Gerenciamento de Performance e Taxa de Transferência
Desvantagens● Manutenibilidade*● Disponibilidade*● Escalabilidade*
● Servidor pode ser um gargalo● O Servidor pode representar um ponto
de falha único● Decisões de onde colocar
funcionalidades (lado cliente ou servidor) são geralmente complexas de mudar depois do sistema pronto
● Clientes podem solicitar serviços, mas não podem oferecê-los para outros clientes, sobrecarregando o servidor, pois quanto mais clientes, mais informações que irão demandar mais banda
Quando Utilizar (Exemplo) : LoLNewsExemplo de um sistema em Java EE, utilizando o tomcat como
servidor.
Quando Não Utilizar (Exemplo) : App com Notificação
Exemplo de um sistema em Android, utilizando o apache2 como servidor.
Repositórios do GitHub LOLNews : https://bitbucket.org/luanchaoskk/trabalhoweb.git
Notificação : https://bitbucket.org/luanchaoskk/app-notifica-o-arquitetura.git
ReferênciasArchLinux, Samba. Disponível em <https://wiki.archlinux.org/index.php/Samba>. Acesso em 5 de novembro.
DevMedia, Google Clouding Messaging : Introdução. Disponível em <http://www.devmedia.com.br/google-cloud-messaging-introducao/29776>. Acesso em 4 de Novembro.
SEI, Reasoning About Software Quality Attributes. Disponível em <http://www.sei.cmu.edu/architecture/start/reasoning.cfm>. Acesso em 5 de Novembro.
Reviewer-Herzog, J. (2015). Software Architecture in Practice Third Edition Written by Len Bass, Paul Clements, Rick Kazman. ACM SIGSOFT Software Engineering Notes, 40(1), 51-52.