1) O documento descreve a evolução da computação, desde os mainframes centralizados nas décadas de 1970 até os sistemas distribuídos atuais. 2) Fatores como o aumento da capacidade dos microcomputadores e o desenvolvimento das redes permitiram a distribuição dos sistemas e aplicações. 3) Isso levou ao surgimento de arquiteturas cliente-servidor e modelos de computação ubíqua, permitindo maior escalabilidade e tolerância a falhas.
2. Mainframes
• Década de 1970
– Soluções computacionais eram baseadas em
computadores de grande porte (mainframes)
– Redes de computadores ainda estavam em seus
primeiros passos
• Confiabilidade ainda não era satisfatória
• Os computadores de pequeno porte ainda não
possuíam capacidade suficiente para suportar
aplicações “sérias”
3. Mainframes
• O modelo baseado em mainframes começou a sofrer
saturação
– Aumento de demanda: mais aplicações e mais usuários
– Limitações na capacidade de crescimento dos
equipamentos
– Overhead associado aos sistema operacionais
• O mercado começa a perceber que a solução
centralizada não é o melhor caminho
– Distribuir melhor a carga de trabalho é mais interessante
4. Microcomputadores
• Os PCs começam a evoluir
– Mais poder de processamento e armazenamento
– Mais acessibilidade (interfaces amigáveis)
– Preço atraente (aumento do público consumidor)
– O termo “computador pessoal” começa a deixar de
fazer sentido
– Algumas configurações mais robustas atendem
perfeitamente certas necessidades empresariais
5. Microcomputadores
• O mercado de TI começa a migrar para plataformas
baixas buscando:
– Redução de custos
– Extensibilidade e Modularidade
– Distribuição de carga computacional
– Suporte à distribuição geográfica
• Novas soluções trazem novos desafios
– Administração e manutenção do ambiente
– Segurança da informação
– Desenvolvimento de aplicações
– Integração entre ambientes
6. Microcomputadores
• Tornou-se necessário repensar soluções,
antes baseadas em um mundo centralizado
• IMPORTANTE: A evolução dos PCs não decretou o fim da
plataforma mainframe
• Cerca de 26% do mercado brasileiro e 10% do mercado mundial
ainda se baseia em mainframes, embora este percentual esteja
em queda
• Bancos, governos e grandes corporações ainda possuem um
imenso legado de aplicações nessa plataforma (especialmente
aquelas classificadas como “missão crítica”)
• É preciso considerar o custo de migração ou redesenho de
soluções
• Ainda existem demandas específicas para supercomputadores
7. Evolução das Redes
– Redes em grande escala (WAN) e redes locais
(LAN)
• Novas tecnologias altamente confiáveis
• Custos mais atraentes
• Grande potencial de distribuição
– Miniaturização de componentes (hardware)
• Disseminação da tecnologia de informação e as
telecomunicações
• Exemplo: celulares, notebooks, players mp3, ...
8. Evolução das Redes
– Surgimento das conexões sem fio (wireless)
• Ampliação do potencial de interligação entre
dispositivos em qualquer lugar
– A Internet se torna parte do dia-a-dia das pessoas
• Diretamente:
– Milhões de usuários conectados e transações
• Indiretamente:
– Empresas envolvidas em atividades que afetam o
consumidor final
– Exemplos: RFIDs, notas fiscais eletrônicas, transações de
cartões de crédito, ...
9. Panorama Econômico
• A evolução tecnológica gera novas formas de fazer
negócio, obrigando as empresas a acompanhar essa
evolução para se manterem competitivas
• Mudanças na economia e política mundial a partir da
segunda metade do século XX abriram caminho para
novas abordagens da tecnologia de informação como
ferramenta para ampliar possibilidades de negócio
10. Lei de Moore
• A cada 24 meses o poder de processamento
dos computadores se duplica e o custo de
mantém constante
• Teoria elaborada por Gordon Moore, um dos
fundadores da Intel
• Esta redução de custo contribuiu para tranformar os
computadores em um artigo comum em nosso dia-a-dia
• O impacto não se restringe a computadores – afeta
todos os sistemas digitais (exemplo: telecomunicações)
11. Lei de Moore
• Observações importantes
• O próprio Moore adimite que sua “lei” só se manterá
correta enquanto a indústria mantiver as técnicas atuais
de produção.
• Sua estimativa é de 10 a 15 anos até que surjam inovações
tecnológicas que invalidem sua teoria
• Este tipo de evolução não aconteceu em nenhuma outra
tecnologia conhecida
13. Lei de Metcalfe
• O valor de um sistema de comunicação cresce
na razão do quadrado do número de usuários
do sistema
• Lei formulada por Robert Metcalfe, inventor do sistema
Ethernet de redes locais
• Fórmula: (n(n-1))/2
• Isso significa que quanto maior o número de usuários de
um sistema de comunicação, menor é o custo individual
e maior o valor global do sistema
14. Lei de Metcalfe
• Exemplos: Telefonia e Internet
– Quanto mais usuários, maior o valor da rede de
telefonia
– O custo individual para se acessar a internet é cada vez
menor
• Observação importante
• Embora alguns estudos mais recentes discordem
do cálculo proposto por Metcalfe (pois superestima
o valor de conexões adicionais) a idéia de agregar
valor pela quantidade de usuários abriu novos
horizontes para as empresas de tecnologia
– Exemplos: Netscape, Google, ...
15. Lei da Disrupção Tecnológica
• O custo de uma transação pode reduzir-se
mais facilmente no mercado do que no interior
de um empresa, através da interligação de
sistemas de informação
– Empresas que exploram as inovações tecnológicas
e a interligação adequadamente podem atingir
custos menores que as empresas resistentes à
evolução
16. Lei da Disrupção Tecnológica
• Observação Importante
– Empresas que não se adaptam a processos
inovadores correm o risco de se defrontar com
competidores que possuem custos transacionais
menores, o que permite ofertas de produtos mais
atraentes e margens de lucro mais interessantes
– Obs: disrupção, em termos físicos, é salto de uma faísca
entre dois corpos carregados de electricidade (só ocorre
devido a “colaboração” dos mesmos)
17. Consequências da Evolução
– Aumento da disponibilidade
• Distribuição de tecnologia e informações em escala
mundial
– Novas formas de compartilhamento
• Hardware (impressoras, servidores, ...)
• Recursos (espaço em disco, bancos de dados, tempo de
cpu, ...)
• Serviços (processamentos, pesquisas, ...)
18. Consequências da Evolução
– Heterogeneidade
• Diversas soluções, plataformas e modos de interligação
• Novas tecnologias surgindo a cada momento
– Sistemas abertos
• Soluções independentes de fornecedores
• Aumento da competitividade
– Escalabilidade
• A medida que a demanda por um recurso aumenta é
possível ampliá-lo sem comprometer custos ou
desempenho
19. Consequências da Evolução
– Tratamento de Falhas
• Investir em qualidade de software minimiza a ocorrência
de falhas, mas só isso não garante que as mesmas não
ocorrerão
• É igualmente importante desenvolver métodos de
tolerância a falhas para suportar desastres inevitáveis
– Segurança
• É preciso garantir não só a segurança da informação
armazenada, mas sua preservação durante o tráfego
20. Computação Ubíqua
• Também conhecida como Computação Pervasiva
• Objetivo
• Distribuir e interligar recursos computacionais de forma a
tornar a presença destes algo natural (quase imperceptível),
melhorando as interfaces de uso para que as mesmas não se
tornem um obstáculo para o usuário final
• Na computação pervasiva, o homem seria inundado por tantos
computadores que ele estaria interagindo mesmo sem
perceber.
21. Computação Ubíqua
– Evolução tecnológica e competitividade
• Novos dispositivos estão surgindo
• Miniaturização de dispositivos
• Renovação de tecnologia
• Incorporação de capacidade de processamento em aparelhos
comuns
• A capacidade de se ligar a redes wireless
• Aumento na integração entre dispositivos diversos e sistemas
distribuídos
– Telefones celulares navegando na internet
– Dispositivos GPS ou captadores de mídia em veículos
22. Convergência Tecnológica
• Conceito de convergência tecnológica:
• Integração de tecnologias relacionadas a telecomunicações,
computação (especialmente Internet) e captura/difusão de
informações para fornecer ao usuário aplicações mais acessíveis
– Independentes de localização
– Em qualquer rede computacional
– Usando qualquer canal de comunicação disponível
• A convergência tecnológica une técnicas de sistemas
distribuídos com sistemas de telecomunicações para
obter integração entre vídeos, dados, voz e imagens
de forma única e transparente para o usuário
23. Convergência Tecnológica
• Alguns tipos de convergência tecnológica:
– Convergência de Redes
» Uma mesma rede suporta serviços distintos
(exemplo: rede de voz e dados)
– Convergência de Serviços
» Um mesmo serviço adapta-se a diferentes meios
(exemplo: telefonia fixa, celular, TV a cabo e Internet)
– Convergência de Terminais
» Um mesmo terminal fornecendo acesso a distintas
redes e serviços (exemplo: PC e terminal móvel)
24. Interoperabilidade e Convergência
• Cuidado para não confundir os dois conceitos
APLICAÇÃO
CONVERGENTE
Aplicação 1
Aplicação 2
Interoperabilidade
Aplicação 1
Aplicação 2
25. Arquitetura Cliente/Servidor
• Nascimento da Arquitetura Cliente/Servidor
– Objetivo:
• Integrar sistemas que usavam bancos de dados corporativos
aos microcomputadores de usuários
– Esta arquitetura separa as aplicações corporativas e o
processamento de transações em duas partes:
• Execução no SERVIDOR
– Mais segureança
– Garantia de integridade
• Execução no CLIENTE
– Interface amigavel
– Exibição personalizada
– Problema:
• A solução tem um custo alto de suporte e manutenção
26. Internet
– É o surgimento de um novo modelo para
integração de sistemas
– Trabalha com padrões abertos, o que permite
independência de fornecedores
– Adoção em larga escala de HTML e outras
tecnologias associadas
– Surgimento de grupos de trabalho colaborativo
sem dependência geográfica
– Corporações adotam o modelo em seus
ambientes e o adaptam (Intranet) em número
cada vez maior
• Baixo custo
• Facilidade de implementação
27. Cliente/Servidor
• A solução técnica ideal:
– CLIENTE é qualquer equipamento (ou processo) que
depende de outro para executar seu trabalho
– SERVIDOR é este outro equipamento (ou processo) que
atende ao cliente
– Para que esta relação de solicitação e atendimento
aconteça, é necessária a existência de meios de
conexão entre as duas partes (meios públicos, privados
ou mistos)
– Qualquer equipamento (ou processo) pode atuar como
cliente ou servidor, dependendo do momento, devido
à troca de informações
• CLIENTES solicitam serviços
• SERVIDORES fornecem serviços
28. Cliente/Servidor Distribuído
• É o estágio mais complexo da computação distribuída
proporcionado pelo modelo Cliente/Servidor
• Pode conectar:
– Diversos tipos de redes
– Pontos geograficamente dispersos
– Configurações heterogêneas (hardware, software ou
ambos)
• Um usuário conectado a este ambiente pode recuperar
dados, processar informações ou disparar processos
espalhados por um ambiente sem limitações de
tamanho ou localização, agindo como se todos os
recursos necessários estivessem em sua máquina.
29. Resumo da Evolução
• Modelos
– Centralizado
– Centralizado Multiterminal
– Cliente/Servidor Local
• Máquinas setoriais
• Redução de custo
– Cliente/Servidor Multiplataforma
• Dados no mainframe
• Gateways conectando redes
– Cliente/Servidor Distribuído
• Redes, hardware e software heterogêneos
• Pouquíssima ou nenhuma restrição geográfica
• SGBDs e arquivos distribuídos
30. Arquitetura em Camadas
• Duas camadas ou 2-tier
– O cliente comunica-se diretamente com o servidor
– O servidor hospeda a base de dados
– A lógica da aplicação pode ser distribuída pelo modelo
das seguintes maneiras:
• Totalmente no cliente ou
• Dividida entre o cliente e o servidor
– A aplicação que é executada no cliente precisa ser
instalada em todas as máquinas que podem vir a se
tornar clientes
– Quaisquer alterações na lógica da aplicação afetam o
cliente e sua base de dados
31. Arquitetura em Camadas
• Duas Camadas (2-tier)
CLIENTE
SERVIDOR
PROCESSAMENTO PROCESSAMENTO
PROCESSAMENTO
DADOSDADOS
32. Arquitetura em Camadas
• Três camadas (3-tier ou n-tier)
– Uma ou mais camadas são criadas entre o cliente e
o servidor
– O cliente é responsável apenas pela interface com
o usuário final
– Alterações na lógica da aplicação se tornam mais
“regionais”:
• As modificações que não se refiram a interface ou a
forma como os dados estão armazenados podem ser
feitas sem afetar o cliente ou o SGBD
• Alterações na estrutura dos dados podem ser feitas sem
que o restantes do ambiente seja afetado
• Alterações de interface podem ser realizadas sem que o
banco de dados ou sua lógica de aplicação seja afetada
33. Arquitetura em Camadas
• Três Camadas (3-tier ou n-tier)
CLIENTE
SERVIDOR
BANCO DE
DADOS
SERVIDOR
APLICAÇÕES
34. Arquitetura em Camadas
• Três Camadas (3-tier ou n-tier)
CLIENTE
SERVIDOR
BANCO DE
DADOS
SERVIDOR
WEB
CLIENTE
CLIENTE
SERVIDOR
WEB
SERVIDOR
APLICAÇÕES
SERVIDOR
APLICAÇÕES
SERVIDOR
BANCO DE
DADOS
SERVIDOR
BANCO DE
DADOS
SERVIDOR
APLICAÇÕES
SERVIDOR
BANCO DE
DADOS
38. Conceitos e Terminologias
• Privilégios e complexidade
– Servidores normalmente precisam executar acesso a dados,
grandes volumes de computação e manipulação de
protocolos. Isso tudo exige privilégios especiais no
ambiente.
– O cliente não precisa ter estes mesmos privilégios, já que
suas necessidades são bem mais simples
– Para funcionar com mais eficiência os servidores
geralmente tentam trabalhar com as requisições de forma
concorrente, o que torna o projeto e a implementação de
servidores muito mais complexos que os clientes
39. Conceitos e Terminologias
• Tipos de interação
• Ao se projetar uma aplicação cliente/servidor,
os desenvolvedores devem estabelecer de que
forma os servidores vão interagir com cada
cliente.
• Isso define o grau de disponibilidade que a
aplicação terá.
41. Conceitos e Terminologias
• Controle de estado
• As informações que o servidor mantém sobre a
situação atual da interação dele com o cliente é
chamada de state information (informação de
estado)
43. Requisitos para Distribuição
• Do ponto de vista dos USUÁRIOS:
– Transparência
• Não deve ser perceptível ao usuário questões referentes
a implementação da solução
– Compartilhamento de informação
– Confiabilidade
• O sistema se mantém funcionando corretamente sob
quaisquer circunstâncias de falha ou sobrecarga
– Disponibilidade
• Fração de tempo que o sistema se apresenta disponível
para uso
44. Requisitos para Distribuição
• Do ponto de vista dos USUÁRIOS (cont.):
– Tipos de Transparência
– De Localização:
Não se conhece a localização real dos recursos
– De Migração:
A mudança da localização física de um recursos é imperceptível
e deve haver controle sobre dependências residuais
– De Replicação:
A quantidade de cópias de um recurso não é conhecida e não
afeta o desempenho nem a continuidade de serviços
– De Concorrência:
Não se percebe a existência de outros usuários disputando
pelo mesmo recurso
– De Paralelismo:
O usuário não interfere na decisão de que tarefas o sistema vai
executar de forma paralela para atendê-lo
45. Requisitos p/ Distribuição
• Do ponto de vista dos GESTORES de Recursos e
Informação:
– Modularidade e extensibilidade
• Sistemas monolíticos não são ideais para distribuição
• Deve se levar em conta a possibilidade do sistema crescer ou
evoluir
– Baixo custo
• Investimento, manutenção, expansão, ...
– Desempenho
• Estabelecimento de métricas para avaliar o desempenho
– Segurança
• Autenticidade: Comprovação de identidade
• Autorização: Controle de acesso a recursos
• Privacidade: Visibilidade de informação restrita por escopos
• Integridade: Proteção contra corrupção ou alteração indevida
• Não-repudiação (ou registro): Dispositivos de auditoria
46. Requisitos p/ Distribuição
• Do ponto de vista dos DESENVOLVEDORES de
aplicações:
– Interfaces padronizadas
• Para suportar a heterogeneidade de ambientes, os
desenvolvedores necessitam que as interfaces entre cada parte do
sistema distribuído obedeça algum padrão que permita o
desenvolvimento e execução de módulos em diferentes
plataformas, para que a comunicação entre estes ocorra sem a
necessidade de tratar diferenças ambientais
– Ambientes de programação independentes
• Hardware, redes, ...
– Flexibilidade e Escalabilidade
• O acréssimo de novos módulos ou a substituição de partes deve
ocorrer de forma simples
– Tolerância a Falhas
• Ferramentas e procedimentos para mascarar e tratar falhas
• Procedimentos alternativos (exemplo: redundância de hardware
e/ou software)
47. Definição de SD
• Sistema Distribuído
– “Um sistema distribuído é aquele no qual os
componentes localizados em computadores
interligados em rede se comunicam e coordenam suas
ações apenas passando mensagens”
– Colouris/ Dollimore / Kindberg em “Sistemas Distribuídos”
– Ênfase na distribuição e comunicação entre as partes distribuídas
– “...é uma coleção de computadores independentes
que se apresentam para os usuários como um
equipamento único.”
– Tanenbaum em “Distributed Systems: Principles and Paradigms”
– Ênfase na transparência da distribuição
– Ambas as definições incorporam os conceito de:
• Compartilhamento de recursos
• Heterogeneidade
• Modularidade
48. Aspectos Fundamentais
• Qualquer modelo de arquitetura de SD possui
uma preocupação em comum:
–Toda solução é composta de processos que
se comunicam entre si por meio de
mensagens que trafegam em uma rede de
comunicação
49. Aspectos Fundamentais
• Outra preocupação importante de qualquer
modelo de arquitetura de SD:
– É preciso deixar de lado a abordagem sequencial e
pensar em algoritmos distribuídos, onde:
• Deve-se levar em consideração o tempo de trânsito das
mensagens, o que exige preocupação com latência
– Latência é o tempo entre o início da transmissão e o início da
recepção da mensagem
• Não há um tempo global único, por isso devem existir
controles de temporização e sincronismo
– Relógios físicos ou lógicos
• A ordenação de eventos pode ou não ser relevante
– SDs síncronos ou assíncronos
50. Dificuldades dos SDs
• Comunicação por mensagens
– Com a distribuição, assume-se que as partes
envolvidas contam com recursos locais que nem
sempre podem ser compartilhados
• É preciso haver mecanismos de comunicação entre cada
“nó”
– A troca de mensagens está sujeita a alguns fatores
que afetam seu desempenho:
• Erros de transmissão e sequência de mensagens,
tempos de transmissão elevados, ...
– Exigem a existência de protocolos
– Possuem modelos de programação mais complexos
51. Dificuldades dos SDs
• Segurança
– É preciso ampliar as estratégias de gerenciamento,
considerando os diferentes ambientes, o que diz
respeito a:
• Validação de identidade, controle de privilégios,
vulnerabilidades,...
• Distribuição do Sistema Operacional
– Sincronização
• Em sistemas distribuídos não há garantias de igualdade de
condições em cada máquina, o que obriga a existência de
mecanismos mais sofisticados de coordenação
(particionamento, replicação, sincronia, tratamento de
tempo)
– Projetar um SO distribuído é complexo
52. Dificuldades dos SDs
• Modelos de Falhas
– A rede de comunicação já possui um conjunto
próprio de falhas características
• Falhas de hardware (cabos, roteadores, ...)
• Falhas de software (perdas de pacote, erros de
interoperabilidade, ...)
– A necessidade de coordenação entre diversos
pontos de distribuição acrescenta mais problemas
• Detectar as falhas que não acontecem localmente nem
sempre é simples
• É preciso tratar situações de indisponibilidade parcial
• Existem problemas mais abstratos, como o
congestionamento do serviço
53. Vantagens dos SDs
• SDs são adaptáveis à distribuição geográfica
– É uma característica natural dos sistemas
distribuídos considerar que nem todas as suas
partes se encontram fisicamente próximas
• SDs são modulares
– O sistema pode evoluir por partes, de acordo com
necessidades específicas, ganhando novos módulos
sem afetar o restante dos componentes já
existentes
– A replicação de módulos pode aumentar a
capacidade de desempenhar certas tarefas já
existentes
54. Vantagens dos SDs
• SDs possuem extensibilidade
– Potencialmente, a capacidade de expansão de um
SD é virtualmente ilimitada, visto que não é
limitada pelo hardware ou tecnologia adotada.
• Maior disponibilidade
– A existência de máquinas independentes pode
assegurar a continuidade de determinado serviço
mesmo diante da falha de uma delas
– É possível replicar serviços essenciais
55. Vantagens dos SDs
• Desempenho otimizado
– Permite atribuir tarefas com exigências específicas
para máquinas mais adequadas para sua execução
• Volume de dados, cálculos, processamento, ...
• Custo
– A redução gradativa de preços de equipamentos
aumenta a possibilidade de elevar a capacidade
computacional a custos baixos
– Embora haja sempre a necessidade de investir em
equipamentos de comunicação, a relação custo-
benefício compensa