O documento apresenta uma aula introdutória sobre sistemas distribuídos ministrada pelo professor Thomás da Costa. A aula define sistemas monolíticos e distribuídos, discute as vantagens dos sistemas distribuídos como escalabilidade e alta disponibilidade, e apresenta exemplos de tecnologias para integração de aplicações como RPC, RMI, MOM e WebServices.
3. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• São sistemas construídos em um único bloco ou em uma única unidade.
Neste modelo o sistema é escrito como um todo, com isso podemos possuir
um único ponto de falha, ou seja, se a aplicação parar de funcionar o
sistema todo fica indisponível.
• Nos sistemas monolíticos podemos possuir uma separação lógica interna.
No caso da linguagem Java a separação pode ser em pacotes ou em
projetos.
• Neste modelo fica difícil a manutenção pois caso seja necessário uma
atualização devemos parar o sistema como um todo causando
indisponibilidade.
• Para sanar este tipo de problema foi pensando o modelo de sistemas
distribuídos.
Sistemas Monolíticos
Detalhes:
INTRODUÇÃO
4. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
“Um sistema distribuído é um conjunto de computadores independentes que
se apresenta a seus usuários como um sistema único e coerente”
Tanenbaum (2007)
Sistema Distribuído
O que é?:
INTRODUÇÃO
5. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Sistema Distribuído
INTRODUÇÃO
1960 - 1980 1980 - 2010 2010 - Atual
Mainframe Computing Client/Server Computing Cloud Computing
6. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Usuário não tem conhecimento onde o sistema está fisicamente localizado.
• Um sistema distribuído possui vários componentes.
• Pode rodar em vários computadores em diferentes locais do mundo.
• Possui simplicidade em sua escalabilidade
• A maioria dos sistemas distribuídos utilizam de máquinas virtuais para
facilitar a instalação, configuração e expansão.
• Deve possuir simplicidade em sua escalabilidade.
• Além disso um sistema distribuído tem como objetivo compartilhar
recursos.
Sistema Distribuído
Detalhes:
INTRODUÇÃO
8. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Uma das metas de um sistema distribuído é ser transparente, ocultando
processos e recursos.
• Em um sistema distribuído devemos verificar a velocidade de como as
informações são replicadas de um local para outro. Por exemplo as
informações de um banco de dados.
• Deve possuir um meio de comunicação aberto, ou seja, protocolos de
comunicação que são definidos por interfaces conhecido como IDL ou
Interface Definition Language.
Sistema Distribuído
Detalhes:
INTRODUÇÃO
9. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Virtualização:
• Nos dias atuais a maioria dos sistemas distribuídos utilizam-se de máquinas
virtuais.
• As máquinas virtuais tornam a manutenção e a configuração mais simples.
Em alguns provedores a criação dos computadores é através de alguns
cliques.
• Empresas pelo mundo utilizam de provedores de serviços virtualizados. O
maior deles é a Amazon AWS.
INTRODUÇÃO
Sistema Distribuído
10. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Virtualização:
• SaaS – Software as Service
• Aplicativos são oferecidos como serviços na qual o usuário pode utilizar
pelo próprio browser sem a necessidade de instalação de algum
software. Por exemplo: Gmail, OneDrive e etc.
• PaaS – Plataform as Service
• São ferramentas para o uso de desenvolvimento de software. Por
exemplo: banco de dados, servidores de aplicações, servidores web e
etc.
• IaaS - Infrastructure as a Service
• Tem como principal objetivo oferecer serviços de infraestrutura como
computadores, storage entre outros. Possuem escalabilidade,
flexibilidade e disponibilidade em seus serviços.
INTRODUÇÃO
Sistema Distribuído
11. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
• Interoperabilidade é uma características essencial dentro de um sistema
distribuído que é definido quando dois sistemas de tecnologias diferentes se
comunicam de forma transparente.
• Alguns sistemas distribuídos devem possuir portabilidade para rodar em
sistemas operacionais diferentes. A tecnologia que possui esse tipo de
característica é o Java.
Sistema Distribuído
Detalhes:
INTRODUÇÃO
12. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
É quando o sistema possui a característica de se expandir facilmente de acordo
com o aumento de carga por ele processado. Por exemplo o aumento de
usuários ou o aumento do processamento de uma determinada tarefa.
Escalabilidade
O que é?:
INTRODUÇÃO
13. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Escalabilidade
Detalhes:
INTRODUÇÃO
• Vertical
• A expansão do sistema acontece em sua própria unidade de execução.
Por exemplo: expandir a memória de um computador, incluir mais uma
instância do software que deve ser escalado.
• Horizontal
• A expansão acontece fora de sua unidade de execução. Neste caso
podemos incluir um novo computador para trabalhar em paralelo e
distribuir o processamento da unidade de execução original.
14. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
É quando um sistema computacional é resistente a possíveis falhas de
hardware e de software, mantendo a aplicação ou o conjuntos de aplicações o
maior tempo possível online para seus utilizadores.
Alta Disponibilidade
O que é?:
INTRODUÇÃO
15. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Alta Disponibilidade
Detalhes:
INTRODUÇÃO
• Conhecido pela sigla HA (High-Availability).
• Para possuir alta disponibilidade é necessário a utilização de mais de um
computador dentro da rede ou mais uma instância do mesmo software.
• O sistema computacional deve possuir formas de garantir a disponibilidade
da aplicação caso ocorra uma falha.
• Quando acontecer a falha o processamento da informação não pode ser
perdida.
16. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Replicação
Detalhes:
INTRODUÇÃO
• Como em um sistema distribuído trabalhamos com vários computadores ou
vários recursos, é necessário que as informações sejam consistentes em
cada nó da aplicação.
• Para isso algumas aplicações possuem o processo de replicação de
informações de acordo com a quantidade de nós configurados.
• Normalmente é uma configuração da aplicação ou do banco de dados
utilizado.
17. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Tipos de Sistemas Distribuídos
Detalhes:
INTRODUÇÃO
• Sistemas de computação em cluster:
• É um conjunto de hardware e software conectados em uma rede de
alta velocidade para processamento de uma determinada aplicação.
Neste formato os computadores do cluster possui o mesmo sistema
operacional.
• É muito utilizado para programação em paralelo.
• Sistemas de computação em grade:
• É composto por grupos de sistemas distribuídos onde cada um pode ser
montado por hardware e softwares diferentes.
• Este modelo possui o formato canônico de trocas de informações.
18. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Cluster
INTRODUÇÃO
Escalabilidade
Desempenho
Disponibilidade
Balanceamento
Sistema de fácil expansão e configuração, tanto
verticalmente como horizontalmente.
Possui alta performance para uma grande volume
de processamento.
Sistema possui tolerância a falhas no hardware e
no software.
Distribui a carga entre os nós dentro de um cluster
melhorando o processamento e o acesso dos
utilizadores.
19. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SISTEMAS EMPRESARIAIS
INTRODUÇÃO
20. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SOA
Detalhes:
INTRODUÇÃO
• Conhecido como Service-Oriented Architecture, ou Arquitetura Orientada
a Serviços.
• De acordo com o Gartner Group é uma abordagem arquitetural corporativa
que permite a criação de serviços de negócios interoperáveis que podem
facilmente ser reutilizados e compartilhados dentro das aplicações de uma
empresa.
• SOA é um conjunto de conceitos não é uma tecnologia.
• Em uma arquitetura SOA os objetos são canônicos.
• No modelo de arquitetura SOA existe o conceito do barramento que efetua
a comunicação dos serviços entre aplicações conhecido como ESB
(Enterprise Service Bus).
22. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
EAI
Detalhes:
• Conhecido como Enterprise Application Integration ou Integração de
Aplicações Empresariais.
• É um conceito caracterizado pela integração de diferentes aplicações
independentes de suas tecnologias.
• A integração acontece com as principais aplicações corporativas. Por
exemplo aplicações financeiras, recursos humanos, contas a pagar e
receber.
INTRODUÇÃO
23. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
Detalhes:
• RPC - Remote Procedure Call ou Chamadas de Procedimento Remoto
• Tem como objetivo executar procedimentos em aplicações remotas
localizadas em computadores dentro da mesma rede ou em redes
diferentes.
• RMI - Remote Method Invocations ou Invocação de Método Remoto
• É semelhante ao RPC mas efetua a execução de um método contido em
um objeto remoto.
• Os dois meios de comunicação são altamente acoplados pois precisam
conhecer exatamente como efetuar a referência ao objeto ou aplicação
remota.
INTRODUÇÃO
24. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
25. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
Detalhes:
• MOM - Message-oriented Middleware
• Conhecido também como servidores de filas. Neste modelo as
aplicações enviam mensagens para uma fila e outros sistemas
consomem as mensagens. Este modelo é conhecido também como
publicar/subscrever.
• Em Java, a API JMS (Java Mesage Service) efetua operações com
servidores de fila.
• Existem vários desenvolvedores de servidores de fila no mercado:
Apache ActiveMQ, RabbitMQ, Apache Kafka, IBM MQ entre outros.
INTRODUÇÃO
26. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
27. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
Detalhes:
• WebServices
• É a troca de informações através de um protocolo conhecido como
SOAP baseado em XML.
• Muito utilizado em aplicações corporativas e em aplicações que
possuem o conceito do SOA.
• REST - Representational State Transfer
• É uma forma de integração de sistema baseado no protocolo HTTP e
seus métodos de requisição (POST, PUT, DELETE, GET)
• Simplifica a implementação de serviços em comparação com os
WebServices.
• Suas informações e identificadores são compostas pelas URL.
INTRODUÇÃO
28. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
29. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Resumo
• Sistemas Monolíticos são construídos em um único bloco possuindo um
único ponto de falha.
• Os sistemas distribuídos são transparentes para o usuários e não possuem
um único ponto de falha.
• São facilmente escaláveis, possuem alto desempenho e alta disponibilidade.
• Existem os sistemas de computação em cluster e em grade.
• Algumas tecnologias ajudam a integração de aplicações empresariais como
RPC, RMI, MOM, REST e WebServices.
INTRODUÇÃO
30. ANHANGUERA – 2016.2
Referências
• TANENBAUM, Andrew S; STEEN, Maarten Van. Sistemas Distribuídos :
Princípios e Paradigmas. 2ª ed. São Paulo: Pearson - Prentice Hall, 2008.