31
ANHANGUERA – 2016.2 PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS AULA 02 – INTRODUÇÃO Prof. Thomás da Costa [email protected]

Programação de Sistemas Distribuídos - Aula 02

Embed Size (px)

Citation preview

Page 1: Programação de Sistemas Distribuídos - Aula 02

ANHANGUERA – 2016.2

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOSAULA 02 – INTRODUÇÃO

Prof. Thomás da [email protected]

Page 2: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

INTRODUÇÃO

INTRODUÇÃO

Page 3: Programação de Sistemas Distribuídos - Aula 02

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íticosDetalhes:

INTRODUÇÃO

Page 4: Programação de Sistemas Distribuídos - Aula 02

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ídoO que é?:

INTRODUÇÃO

Page 5: Programação de Sistemas Distribuídos - Aula 02

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

Page 6: Programação de Sistemas Distribuídos - Aula 02

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ídoDetalhes:

INTRODUÇÃO

Page 7: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Sistema Distribuído

INTRODUÇÃO

Page 8: Programação de Sistemas Distribuídos - Aula 02

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ídoDetalhes:

INTRODUÇÃO

Page 9: Programação de Sistemas Distribuídos - Aula 02

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

Page 10: Programação de Sistemas Distribuídos - Aula 02

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

Page 11: Programação de Sistemas Distribuídos - Aula 02

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ídoDetalhes:

INTRODUÇÃO

Page 12: Programação de Sistemas Distribuídos - Aula 02

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.

EscalabilidadeO que é?:

INTRODUÇÃO

Page 13: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

EscalabilidadeDetalhes:

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.

Page 14: Programação de Sistemas Distribuídos - Aula 02

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 DisponibilidadeO que é?:

INTRODUÇÃO

Page 15: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Alta DisponibilidadeDetalhes:

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.

Page 16: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ReplicaçãoDetalhes:

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.

Page 17: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Tipos de Sistemas DistribuídosDetalhes:

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.

Page 18: Programação de Sistemas Distribuídos - Aula 02

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.

Page 19: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SISTEMAS EMPRESARIAIS

INTRODUÇÃO

Page 20: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

SOADetalhes:

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).

Page 21: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

ESB

INTRODUÇÃO

Page 22: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

EAIDetalhes:• 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

Page 23: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações EmpresariaisDetalhes:• 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

Page 24: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações Empresariais

INTRODUÇÃO

Page 25: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações EmpresariaisDetalhes:• 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

Page 26: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações Empresariais

INTRODUÇÃO

Page 27: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações EmpresariaisDetalhes:• 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

Page 28: Programação de Sistemas Distribuídos - Aula 02

PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa

Integração de Aplicações Empresariais

INTRODUÇÃO

Page 29: Programação de Sistemas Distribuídos - Aula 02

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

Page 30: Programação de Sistemas Distribuídos - Aula 02

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.

Page 31: Programação de Sistemas Distribuídos - Aula 02

Obrigado !!!

ANHANGUERA – 2016.2