SlideShare uma empresa Scribd logo
1 de 31
ANHANGUERA – 2016.2
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS
AULA 02 – INTRODUÇÃO
Prof. Thomás da Costa
thomascosta@aedu.com
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
INTRODUÇÃO
INTRODUÇÃO
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
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
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
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
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Sistema Distribuído
INTRODUÇÃO
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
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
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
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
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
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.
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
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.
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.
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.
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.
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
SISTEMAS EMPRESARIAIS
INTRODUÇÃO
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).
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
ESB
INTRODUÇÃO
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
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
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
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
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
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
PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa
Integração de Aplicações Empresariais
INTRODUÇÃO
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
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.
Obrigado !!!
ANHANGUERA – 2016.2

Mais conteúdo relacionado

Mais procurados

Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasGustavo Gonzalez
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebArthur Emanuel
 
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)Rosanete Grassiani dos Santos
 
Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLClaudio Martins
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de SistemasNécio de Lima Veras
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Arthur Emanuel
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersSergio Crespo
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 

Mais procurados (20)

Scratch cap-1
Scratch cap-1Scratch cap-1
Scratch cap-1
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de Sistemas
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
Aula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computingAula 3 - Introdução a cloud computing
Aula 3 - Introdução a cloud computing
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
Análise de Sistemas - Requisitos (Revisão e Requisitos Suplementares)
 
Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UML
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Introdução à Análise de Sistemas
Introdução à Análise de SistemasIntrodução à Análise de Sistemas
Introdução à Análise de Sistemas
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and Filters
 
Aula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estadosAula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estados
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 

Destaque

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01thomasdacosta
 
Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02thomasdacosta
 
Programação Estruturada 2 - Aula 05 - Código Fonte
Programação Estruturada 2 - Aula 05 - Código FonteProgramação Estruturada 2 - Aula 05 - Código Fonte
Programação Estruturada 2 - Aula 05 - Código Fontethomasdacosta
 
Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fontethomasdacosta
 
Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08thomasdacosta
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod JavaSergio Silva
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 

Destaque (20)

Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01Lógica e Matemática Computacional - Aula 01
Lógica e Matemática Computacional - Aula 01
 
Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02Lógica e Matemática Computacional - Aula 02
Lógica e Matemática Computacional - Aula 02
 
Programação Estruturada 2 - Aula 05 - Código Fonte
Programação Estruturada 2 - Aula 05 - Código FonteProgramação Estruturada 2 - Aula 05 - Código Fonte
Programação Estruturada 2 - Aula 05 - Código Fonte
 
Programação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código FonteProgramação Estruturada 2 - Aula 06 - Código Fonte
Programação Estruturada 2 - Aula 06 - Código Fonte
 
Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08
 
Aula 02 Primeiro Cod Java
Aula 02   Primeiro Cod JavaAula 02   Primeiro Cod Java
Aula 02 Primeiro Cod Java
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 

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

IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...
IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...
IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...Ramon Mayor Martins
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosPortal_do_Estudante_SD
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisDuFelix02
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxChadidoDiogo1
 
Integração de software solucao e estilo
Integração de software   solucao e estiloIntegração de software   solucao e estilo
Integração de software solucao e estiloGrupoAlves - professor
 
Sistemas Distribuídos - Aspectos de Projeto
Sistemas Distribuídos - Aspectos de ProjetoSistemas Distribuídos - Aspectos de Projeto
Sistemas Distribuídos - Aspectos de ProjetoAdriano Teixeira de Souza
 
Serviço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma LivreServiço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma LivreMauro Tapajós
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em NuvemVitor Savicki
 
3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdfDimas Francisco
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 
Sistemas operativos de grande porte
Sistemas operativos de grande porteSistemas operativos de grande porte
Sistemas operativos de grande porteteacherpereira
 
Sistemas operativos de grande porte
Sistemas operativos de grande porteSistemas operativos de grande porte
Sistemas operativos de grande porteteacherpereira
 
Arquitetura e Integração de sistemas
Arquitetura e Integração de sistemasArquitetura e Integração de sistemas
Arquitetura e Integração de sistemasJether Rodrigues
 

Semelhante a Programação de Sistemas Distribuídos - Aula 02 (20)

IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...
IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...
IES - Ciência da Computação - Desenvolvimento de Sistemas Distribuídos - Part...
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Integração de software solucao e estilo
Integração de software   solucao e estiloIntegração de software   solucao e estilo
Integração de software solucao e estilo
 
Integração de software 2
Integração de software 2Integração de software 2
Integração de software 2
 
Aula 7 (clouter)
Aula 7 (clouter)Aula 7 (clouter)
Aula 7 (clouter)
 
Sistemas Distribuídos - Aspectos de Projeto
Sistemas Distribuídos - Aspectos de ProjetoSistemas Distribuídos - Aspectos de Projeto
Sistemas Distribuídos - Aspectos de Projeto
 
Serviço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma LivreServiço de Distribuição de SW em Plataforma Livre
Serviço de Distribuição de SW em Plataforma Livre
 
SISTEMA SD
SISTEMA SDSISTEMA SD
SISTEMA SD
 
Desenvolvimento em Nuvem
Desenvolvimento em NuvemDesenvolvimento em Nuvem
Desenvolvimento em Nuvem
 
3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf3a Web Aula - Gestão de Tecnologia da Informação.pdf
3a Web Aula - Gestão de Tecnologia da Informação.pdf
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Sistemas operativos de grande porte
Sistemas operativos de grande porteSistemas operativos de grande porte
Sistemas operativos de grande porte
 
Sistemas operativos de grande porte
Sistemas operativos de grande porteSistemas operativos de grande porte
Sistemas operativos de grande porte
 
Apresentação do Curso
Apresentação do CursoApresentação do Curso
Apresentação do Curso
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Arquitetura e Integração de sistemas
Arquitetura e Integração de sistemasArquitetura e Integração de sistemas
Arquitetura e Integração de sistemas
 

Mais de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01thomasdacosta
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01thomasdacosta
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01thomasdacosta
 

Mais de thomasdacosta (17)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
 

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

  • 1. ANHANGUERA – 2016.2 PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS AULA 02 – INTRODUÇÃO Prof. Thomás da Costa thomascosta@aedu.com
  • 2. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa INTRODUÇÃO INTRODUÇÃO
  • 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
  • 7. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa Sistema Distribuído 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).
  • 21. PROGRAMAÇÃO DE SISTEMAS DISTRIBUÍDOS – Prof. Thomás da Costa ESB INTRODUÇÃO
  • 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.