Você está na página 1de 34

11/20/22, 1:46 PM Ead.

br

SISTEMAS DISTRIBUÍDOS
WEB SERVICES E
COMPUTAÇÃO EM
NUVEM
Autor: Dra. Sidartha Azevedo Lobo de Carvalho
Revisor: Lizandro de Souza

INICIAR

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 1/34
11/20/22, 1:46 PM Ead.br

introdução
Introdução
Nesta unidade, você vai aprender: o que é um serviço web (web service); como
se estrutura um sistema baseado em serviços usando a abordagem SOA (Service
Oriented Architecture); como separar as funcionalidades de um sistema para
tornarem-se serviços; aplicações comuns para os serviços web; principais
conceitos que permeiam a computação em nuvem, identificando os principais
tipos de arquiteturas e vendo exemplos práticos dessa abordagem; o que é e
como se estrutura um Cluster e um Grid de computadores, usados para a
computação em nuvem; sistemas distribuídos voltados para gerenciamento de
transações e de arquivos, identificando conceitos-chave e suas aplicações no
mundo real.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 2/34
11/20/22, 1:46 PM Ead.br

Web Service

Um web service, também chamado de serviço web, é um mecanismo que provê


uma interface de comunicação que permite aos clientes interagir com
computadores servidores de forma simplificada, não havendo a complexidade
da programação distribuída, como acontece nos sistemas que usam RMI. Em um
sistema orientado a serviços, os clientes acessam funcionalidades em um
servidor web por meio de requisições e respostas formatadas em XML, JSON ou
outros protocolos. Além disso, geralmente essas mensagens são transmitidas
usando o protocolo HTTP.

A seguir, vamos entender alguns conceitos dos sistemas orientados a serviços e


o que são os web services, com exemplos práticos. Vamos conhecer também a
arquitetura geral para implementação de sistemas baseados em serviços.

Conceitos Iniciais

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 3/34
11/20/22, 1:46 PM Ead.br

Antes de falarmos propriamente dos serviços, é necessário entender o estilo


arquitetural que é baseado no uso dos serviços. O estilo arquitetural orientado a
serviços, também chamado de Service-Oriented Architecture (SOA), tem por
premissa que sejam ofertadas funcionalidades em forma de serviços web.

Os serviços oferecidos devem ser disponibilizados para uso por uma interface
bem definida. Para ilustrar esses serviços, imagine que você, como arquiteto de
software, está modelando um sistema para ser implementado como uma loja
virtual. Essa loja deve ter as funcionalidades de cadastrar produtos, consultar os
produtos disponíveis, verificar estoque, dentre outras.

Ao utilizar uma abordagem baseada em serviços, as funcionalidades do sistema


devem ser implementadas como serviços. A partir disso, precisamos ter uma
URL associada a cada funcionalidade oferecida. Por exemplo, para listar os
produtos, podemos ter a URL
http://localhost:8080/sistemavendas/listarprodutos; outra URL seria destinada a
remover um produto, passando seu identificador como um parâmetro pela URL
(http://localhost:8080/sistemavendas/removerproduto?ID=80), e assim por
diante.

Diante disso, podemos definir que um serviço é uma funcionalidade que tem
entrada e saída bem definidas (por exemplo: consultar os dados de um cliente,
fornecer informações sobre o tempo, emitir relatórios, dentre outras).

É importante destacar que um serviço web pode ser formado pela integração de
diferentes serviços, sendo possível reutilizar serviços já existentes para compor
um novo serviço. Além disso, ele deve ser autocontido, o que significa não fazer
uso de módulos que não estão presentes na sua implementação (alta coesão e
baixo acoplamento).

A partir dessas informações, é perceptível que deve haver meios de


comunicação bem definidos para trocar dados entre o requisitante e o
requisitado (oferta do serviço). Essa troca de informação entre os serviços é feita
utilizando um protocolo que descreve como enviar e como receber os dados.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 4/34
11/20/22, 1:46 PM Ead.br

Para tanto, utiliza-se descrições de metadados, como o JSON (JavaScript Object


Notation, uma notação padronizada para transferir dados entre serviços) e
também o XML.

Fazer uso de padrões de comunicação auxilia na troca de mensagens entre


diferentes dispositivos. Além disso, novos projetos e adaptações de projetos
antigos devem levar em conta o padrão utilizado para prover a comunicação
com sistemas distintos na internet. A ideia da arquitetura orientada a serviços é
que cada serviço implemente uma ação, como visualizar um formulário ou
realizar login. A arquitetura baseada em serviços precisa de maior trabalho
inicial, por conta da modelagem necessária e sua complexidade de
transformação de funcionalidades em serviços concretos, mas os benefícios são
comprovados: reduz a complexidade do código (serviços são independentes e
têm código próprio), diminui o acoplamento entre os elementos do
software
,
fornece divisão de tarefas entre os componentes e pode permitir maior
segurança.

A seguir, vamos entender melhor como um sistema baseado em serviços deve


ser estruturado, discutindo alguns pontos da sua arquitetura.

Arquitetura de um Web Service


O projeto de uma arquitetura baseada em serviços é representado por um
diagrama que detalha os componentes e os relacionamentos entre os
componentes. A figura a seguir ilustra a visão geral do desenho de uma
arquitetura orientada a serviços:

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 5/34
11/20/22, 1:46 PM Ead.br

Figura 4.1 - Arquitetura de sistemas orientados a serviços

Fonte: Elaborada pela autora.


#PraCegoVer:
Ilustra a arquitetura de sistemas orientados a serviços. A imagem
contém três grandes retângulos, que representam cada camada desta
arquitetura, que se comunicam. No topo está a camada Serviços, que se
comunica com a camada de Componentes, que por sua vez, se comunica com
Infraestrutura. Serviços e Infraestrutura não se comunicam diretamente.

Na base do diagrama está a camada chamada de “infraestrutura”; nela estão


contidos os elementos de
hardware
, como servidores de dados e de páginas
web, conexões físicas de comunicação, entre outros elementos que dão suporte
às demais camadas.

Na camada que se comunica diretamente com a infraestrutura, temos os


componentes. A camada de componentes divide os elementos arquiteturais por
funcionalidades, fazendo com que se agrupem por similaridade de
funcionalidades fornecidas. A camada de componentes é responsável por
fornecer as funcionalidades para a camada de serviço e por implementar os
artefatos mais comuns ao sistema. A camada de serviço é responsável por
agregar uma ou mais funcionalidades para prover uma nova “funcionalidade”,
geralmente mais complexa, chamada de serviço. O serviço é a funcionalidade

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 6/34
11/20/22, 1:46 PM Ead.br

que é acessada por usuários e sistemas externos ao sistema baseado em


serviços.

saiba
mais
Saiba mais
Lembre-se que, em uma arquitetura baseada
em camadas, geralmente a camada só se
comunica com a camada mais próxima; logo,
no exemplo da Figura 4.1, a camada de
infraestrutura somente se comunica com a
camada de componentes, assim como a de
componentes somente se comunica com a de
serviços, não sendo permitida a comunicação
diretamente entre infraestrutura e serviços.
Além disso, há a restrição do fluxo: a camada
superior invoca a camada inferior, não
podendo as camadas inferiores acessarem as
camadas superiores. Para mais informações,
leia o artigo a seguir.

ACESSAR

A Figura 4.2 ilustra os componentes de um sistema e compara funcionalidades


da camada de componentes e serviços.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 7/34
11/20/22, 1:46 PM Ead.br

Figura 4.2 - Exemplo de arquitetura baseada em serviços

Fonte: Elaborada pela autora.


#PraCegoVer:
ilustra um exemplo de arquitetura baseada em serviços. A
imagem contém em seu lado esquerdo, as camadas da arquitetura, composta
por Serviços, Componentes e infraestrutura. Ao lado direito, exemplos de
serviços e de componentes. Como exemplo de serviços, há: Enviar mensagens,
efetuar login e, salvar cadastro. Como exemplo de Componentes há: Segurança,
Troca de mensagens, Persistência de dados e, Login. Enviar mensagens, se
comunica com segurança e com troca de mensagens. Efetuar login, se comunica
com segurança e login. Salvar cadastro se comunica com persistência de dados.

A partir da figura anterior, note que há diversos serviços modelados (enviar


mensagens, efetuar login e salvar cadastro, por exemplo). A ilustração descreve
de forma simples alguns serviços que podem ser oferecidos pelo sistema
modelado, mas, em um sistema comercial, por exemplo, há diversos serviços e
componentes para além do que foi modelado. Um sistema médio pode ter
centenas de serviços.

Cada serviço oferecido pelo sistema deve fornecer um meio de comunicação, ou


seja, deve prover uma API de comunicação bem definida e seguir um padrão de

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 8/34
11/20/22, 1:46 PM Ead.br

nomenclatura que facilite a comunicação com outros sistemas que não se


conhecem. Além disso, cada módulo, componente ou serviço pode fazer uso de
componentes específicos oferecidos pelo sistema modelado. Por exemplo, o
serviço envia mensagens, faz uso de um protocolo de comunicação para a troca
de mensagens e de um algoritmo de criptografia de dados para prover a
segurança dos dados que trafegam na rede.

praticar
Vamos Praticar
A arquitetura orientada a serviços é usada em diversos sistemas, que precisam de
modularidade e de separação entre os componentes, fornecendo um baixo
acoplamento e uma alta coesão entre os módulos. Por exemplo, a arquitetura em
camadas é usada no sistema operacional Linux e também nos protocolos de rede
TCP/IP. Dito isso, podemos assumir que um serviço é a representação de um(a) ou
parte de:

a)
infraestrutura.
b)
API.
c)
login.
d)
funcionalidade.
e)
camada.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 9/34
11/20/22, 1:46 PM Ead.br

Web Service

Um serviço Web é uma coleção de protocolos e padrões públicos utilizados para


trocar informações entre aplicações e sistemas. As aplicações de
software
são
diversificadas, utilizam diversas linguagens de programação e executam em
diferentes plataformas. Note que, para manter a comunicação entre diversos
aplicativos e sistemas, é necessário que eles se conheçam, como acontece com
os sistemas que usam chamada remota de métodos.

Porém, sabemos que a internet é um meio muito diversificado e com uma


infinidade de aplicações e sistemas que precisam se comunicar. Para permitir
essa comunicação com entidades desconhecidas, usamos os serviços. Para que
o serviço seja acessível a uma quantidade maior de aplicações e sistemas, usa-
se padrões e APIs bem definidas que determinam as regras que devem ser
seguidas para completar a comunicação entre os elementos.

Além disso, um serviço é composto por uma parte lógica, projetada para
executar funcionalidades usando um contrato de serviços que expressa quais

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 10/34
11/20/22, 1:46 PM Ead.br

de suas capacidades são disponibilizadas para uso por uma API bem definida.
Geralmente, um serviço web fornece uma descrição do serviço, que pode incluir
definições de interfaces, bem como outras informações relevantes, como a URL
do servidor e dos serviços. Esse contrato de serviço é usado como base para um
entendimento comum entre cliente e servidor quanto ao serviço oferecido.

A principal característica da maioria dos serviços web refere-se ao fato de que


eles podem processar mensagens que usam protocolos públicos, conhecidos
pela maioria dos sistemas, como o Simple Object Access Protocol (SOAP), que
usa mensagens em XML, ou o Representational State Transfer (REST). No REST,
cada serviço web usa sua própria descrição para descrever as características
específicas das mensagens que recebe, na própria mensagem.

Para serem bem descritos e de fácil utilização, os serviços devem:

Ser disponíveis pela internet ou intranet.


Usar padrões de comunicação bem especificados.
Ser independente de sistema operacional e de linguagem de
programação.
Ter mecanismos de autodescrição dos serviços para permitir ser
descoberto por outros serviços utilizando uma interface.

Antes de conhecer o padrão REST, vamos entender o SOAP. O protocolo SOAP é


mais antigo que a abordagem REST; foi concebido pela empresa Microsoft. É um
protocolo mais rígido quando comparado ao REST. O SOAP impõe regras mais
restritas na troca de mensagens entre os computadores e/ou serviços.

Porém, há pontos similares entre as duas abordagens: o SOAP e o REST utilizam


o protocolo HTTP para representar as mensagens enviadas e recebidas. Por
conseguinte, tanto o SOAP quanto o REST são abordagens que estabelecem
como deve ser o acesso aos serviços web, definindo regras de nomenclatura
para utilizar e prover serviços.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&cd… 11/34
11/20/22, 1:46 PM Ead.br

Além disso, o protocolo SOAP não é restrito a nenhuma linguagem de


programação; é um protocolo que pode ser implementado em qualquer
linguagem, desde que a linguagem tenha os elementos necessários para a
implementação, podendo ser mais ou menos complexo de usar. O SOAP fornece
mecanismos interessantes para o tratamento de erros. Por exemplo, se houver
algum erro durante o envio da requisição, a resposta deve ter informações
sobre o erro, permitindo a identificação e o tratamento de forma automatizada.

Outra característica importante do protocolo SOAP é a obrigatoriedade no uso


do protocolo HTTP, podendo ser substituído pelo protocolo SMTP (Simple Mail
Transfer Protocol) para o transporte das mensagens. Além disso, também é
possível utilizar outras linguagens, como Python e PHP (COULOURIS, 2013).

Em contrapartida, o protocolo REST permite uma implementação mais leve,


trocando o formato XML para fazer uma requisição (usado no SOAP) por uma
URL simples, explorando os métodos do HTTP. Como verbos/métodos do HTTP
1.1, temos: GET, POST, PUT e DELETE, usados para executar tarefas, tornando a
implementação REST adaptável para a maioria dos sistemas na internet.

O REST pode ser usado com diversos formatos de dados, porém, o SOAP
suporta somente o uso do XML. O REST é mais genérico que o SOAP, e isso gera
mais complexidade, certo? Errado! O REST é mais genérico e torna o processo
mais simples por permitir diversos formatos de dados. O esforço empregado
para construção usando REST geralmente é menor do que usando SOAP, pois o
SOAP tem diversas restrições que devem ser implementadas. Além disso, o
JavaScript Object Notation (JSON) é muito utilizado com o REST, sendo um
padrão de modelagem de dados muito usado atualmente e suportado pelo
REST.

Para finalizar, usar SOAP ou REST vai depender do cenário do problema. Há


cenários em que não é possível implementar o SOAP, como os que usam alguns
protocolos que não são suportados pelo SOAP. Porém, também há cenários que
exigem maior segurança, sendo mais indicado o SOAP. Os cenários para os

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 12/34
11/20/22, 1:46 PM Ead.br

quais o REST é mais indicado se resumem aos sistemas simples: não é


necessária tanta segurança dos dados, tem-se tempo curto para o
desenvolvimento e a reutilização dos verbos do HTTP, dentre outros.

Aplicações e Implementação
Para entender melhor como funcionam os serviços, vamos estudar alguns
exemplos práticos do nosso cotidiano: o aplicativo de troca de mensagens
WhatsApp pode utilizar a abordagem REST, enviando uma mensagem pela URL
api.whatsapp.com/send?phone=5588955554444, por exemplo. Os números
após o atributo phone representam o número de telefone que receberá a
mensagem: primeiro, há o código do país (55 – Brasil); depois, o código de área
(88 – interior do Ceará); por fim, o número do telefone.

Essa URL pode ser acessada de qualquer dispositivo que implemente o


protocolo HTTP (dispositivo móvel, web browser do computador desktop, um
aplicativo etc.). O uso do HTTP permite grande interoperabilidade entre os
elementos comunicantes da rede, possibilitando uma comunicação mais rica e
intuitiva.

A figura a seguir ilustra a arquitetura de um web service com quatro serviços


distintos implementados dentro do servidor:

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 13/34
11/20/22, 1:46 PM Ead.br

Figura 4.3 - Exemplos de serviços web em uma arquitetura cliente-servidor

Fonte: Elaborada pela autora.


#PraCegoVer:
Ilustra exemplos de serviços web em uma arquitetura cliente-
servidor. A imagem contém no seu lado esquerdo, um retângulo representando
o cliente. No lado direito é um grande quadrado representando o servidor, que
contém cinco retângulos representando: computador, insereUsuario,
apagarUsuario, buscaIDUsuario e excluirUsuario. Todos os itens dentro do
servidor, se comunicam de forma bidirecional. Computador se comunica de
forma bidirecional, também com cliente, sendo que o cliente envia uma
requisição e computador devolve a resposta.

Na Figura 4.3, os serviços web são acessados pelo requisitante; o servidor, ao


receber a requisição, responde utilizando os serviços implementados. Após
decidir qual web service deve ser acessado, o servidor responde ao requisitante
com o retorno enviado pelo serviço. O quadro a seguir exemplifica alguns
serviços que o sistema oferece, especificando os parâmetros de entrada e saída
(retorno do serviço):

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 14/34
11/20/22, 1:46 PM Ead.br

Parâmetros de
Serviço Retorno do serviço
entrada

Nome: String

Login: String

insereUsuario ID: int


Senha: String

Email: String

buscaIDUsuario Login: String ID : into

excluirUsuario ID: int Resposta : boleano

apagarUsuario ID: int Resposta : boleano


Quadro 4.1 - Serviços web: nome, parâmetros de entrada e de retorno

Fonte: Elaborado pela autora.

A primeira coluna do quadro acima apresenta os nomes dos serviços. O nome


do serviço é a sequência de caracteres usada para acessar determinado serviço.
Por exemplo: http://localhost:8080/sistema/apagarUsuario.

Os parâmetros de entrada do serviço podem ser enviados usando o método


GET ou POST do HTTP. Com o método GET, os parâmetros aparecerão na URL
do usuário (por exemplo: http://localhost:80/sistema/apagarUsuario?
Nome=Felipe). Por outro lado, ao utilizar o método POST do HTTP, os
parâmetros são passados com o corpo da mensagem, não permitindo visualizá-
los na URL.

O método GET tem restrição de tamanho, ou seja, só passa determinada


quantidade de parâmetros, não excedendo o tamanho máximo da URL. No
método POST, não temos essa restrição, e há maior segurança, tornando a
comunicação mais limpa, sem muitos parâmetros poluindo a URL.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 15/34
11/20/22, 1:46 PM Ead.br

Perceba que, na segunda coluna do quadro, há o nome do atributo e o tipo de


dado usado para representá-lo. Por exemplo, no e-mail é usada uma variável do
tipo String, no ID (identificador único) é usado um tipo inteiro (int). Na terceira
coluna estão os atributos de resposta, ou seja, o atributo que será retornado
pelo serviço web. Ter uma clara definição dos serviços e parâmetros usados é
essencial para a modelagem de uma boa arquitetura orientada a serviços.

praticar
Vamos Praticar
Os sistemas baseados em serviços são importantes para prover melhor comunicação
entre os distintos sistemas de uma rede, principalmente a internet. Os sistemas web
podem utilizar tanto a Internet quanto outras redes para se comunicar
(metropolitanas – MAN, de grandes áreas – WAN, dentre outras). De acordo com seu
conhecimento sobre como criar e acessar serviços em uma rede, marque a alternativa
que representa uma URL para um web service que busca um usuário, passando como
parâmetro a variável “Nome” com valor “Maria”.

a)
http://localhost:8080/sis/insereUsuario?Nome=Maria.
b)
http://localhost:8080/sis/buscaUsuario?Maria=Nome.
c)
http://localhost:8080/sis/buscaUsuario?Nome=Maria.
d)
http://localhost:8080/sistema/insere?Nome=Maria.
e)
http://localhost:8080/sis/buscaUser!Nome=Maria.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 16/34
11/20/22, 1:46 PM Ead.br

Computação em
Nuvem

A arquitetura cliente-servidor é uma das mais utilizadas em todo o mundo para


modelagem de sistemas baseados em comunicação. Porém, nos últimos anos o
cenário vem mudando. As organizações estão utilizando novos conceitos, como
a computação em nuvem, aplicada a diversos negócios para resolver problemas
reais de carência de infraestrutura, processamento e armazenamento de dados.

A partir da expansão e popularização do acesso à internet e do grande aumento


nas taxas de transferência de dados, com o acesso às bandas largas e o avanço
das infraestruturas de
hardware
mais baratas, as organizações começaram a
expandir seus negócios terceirizando infraestruturas especializadas em
processar e armazenar grandes quantidades de dados. Essas infraestruturas
terceirizadas são chamadas “nuvens”.

A ideia inicial da nuvem computacional era realizar processamento e armazenar


dados fora do ambiente da organização, otimizando o uso de recursos e
economizando dinheiro. Esses locais próprios para processamento e

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 17/34
11/20/22, 1:46 PM Ead.br

armazenamento são chamados de “datacenters”, e podem utilizar os conceitos


de “nuvem pública”.

A seguir, vamos entender melhor os conceitos de “nuvem pública” e também


aqueles relacionados ao processamento em nuvem.

Definição e Exemplos
O uso de nuvens na computação permite que diversas empresas executem
grande parte dos serviços ofertados na nuvem. A nuvem geralmente é mantida
por uma empresa terceirizada que vende o serviço de computação e
armazenamento. Fazer uso de uma nuvem pode reduzir a complexidade de
instalação e manutenção de infraestrutura dentro da organização, permitindo
que ela foque esforços em estratégias de negócio. Por outro lado, as empresas
que mantêm as nuvens ganham dinheiro vendendo o serviço e reduzindo os
custos de manutenção e aquisição, por fazerem isso em grande escala.

Em complemento, imagine que há organizações que precisam ter grande poder


de processamento e armazenamento somente em alguns meses do ano, como é
o caso dos sistemas de imposto de renda, do Enem, do Sisu etc. Para manter
essa infraestrutura, a empresa precisa investir na aquisição dos equipamentos e
da mão de obra utilizada, mesmo que os utilize por pouco tempo. Nos outros
meses, quando não há necessidade de grande poder de processamento e
armazenamento, os equipamentos ficam subutilizados, quase sem uso. Nesse
cenário, a empresa terá gasto muito dinheiro inicial e, durante os meses em que
não usa o que contratou, estará perdendo dinheiro com a depreciação dos
equipamentos. Para contornar esse problema, grande parte desse tipo de
organização está aderindo ao uso de nuvens.

Dentro das nuvens de computação e armazenamento, temos as nuvens


públicas, as privadas e as mistas. Na nuvem pública há o compartilhamento de
recursos (infraestrutura), enquanto na nuvem privada não há compartilhamento

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 18/34
11/20/22, 1:46 PM Ead.br

com empresas externas. As nuvens mistas ou híbridas usam parte de


infraestrutura pública e parte de privada. Dentre algumas empresas que
fornecem o serviço de nuvem, temos, por exemplo, Google, Amazon e Microsoft.
Essas empresas investem na aquisição e otimização de infraestrutura para
vender processamento e armazenamento como um serviço. Além disso, podem
vender a infraestrutura, uma plataforma específica ou determinado
software
dentro da nuvem.

O fornecimento de infraestrutura como um serviço na nuvem é chamado de


Infrastructure as a Service (IaaS). Um exemplo para IaaS é a locação de um
computador reservado contendo o processador Intel Core i7, 3.8 GHz de
velocidade, 16GB de memória RAM e Linux Xubuntu. No exemplo anterior, o
locador terá controle total da máquina locada (infraestrutura), podendo usar
uma conexão SSH para enviar comandos de manuseio da infraestrutura. No tipo
de locação IaaS, nenhuma outra organização pode fazer uso do
hardware
que foi
locado, deixando ao locador um alto grau de manipulação da máquina locada.
Em resumo, a IaaS é o aluguel de uma infraestrutura de forma facilitada.

No outro cenário, no qual temos uma plataforma como serviço, também


chamada de Platform as a Service (PaaS), há a locação de plataformas próprias
para determinado fim. Por exemplo, é possível locar plataformas de criação e
hospedagem de sites, ferramentas e aplicativos específicos, dentre outros. A
PaaS provê acesso fácil para que o desenvolvedor de
software
possa montar o
ambiente necessário para desenvolver o sistema, não tendo de se preocupar
com configuração e gerenciamento de servidores, bancos de dados, tráfego de
rede etc.

No último tipo de serviço ofertado pelas nuvens, temos o


software
como um
serviço, também chamado de Software as a Service (SaaS). Essa abordagem é a
que tem mais alto nível quando comparada à IaaS e à PaaS. Na SaaS são locados
aplicativos específicos armazenados em uma infraestrutura que é transparente
ao locador. A SaaS fornece a possibilidade de acessar serviços bem definidos na
nuvem: por exemplo, processar determinada imagem ou arquivo; realizar a

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 19/34
11/20/22, 1:46 PM Ead.br

conversão de um valor de temperatura em Celsius para Fahrenheit; converter


uma foto PNG para JPEG, dentre outros.

Agora que você aprendeu alguns conceitos sobre a computação em nuvem,


deve estar se perguntando: Como ocorre a tarifação desses serviços no IaaS,
PaaS e SaaS? Geralmente, usa-se o tipo de tarifação simplificado: o locador paga
somente o que utilizar, normalmente medido em horas de uso. Esse tipo de
tarifação é chamado de
pay as you go
, ou seja, pague o quanto usar. Esse
modelo de tarifação beneficia o locador do serviço, permitindo atender às
situações nas quais precisamos de muito processamento ou armazenamento,
mas por pouco tempo. Sem esse tipo de tarifação, teríamos que pagar de forma
completa por tudo o que gostaríamos que ficasse disponível para nosso uso, o
que levaria à subutilização do produto locado.

Perceba que o dimensionamento do processamento e do armazenamento


permite que as empresas projetem sistemas que se beneficiem desse tipo de
estrutura, principalmente da forma de tarifação usada na locação de nuvens.

Atente-se ao exemplo a seguir, envolvendo a emissão do imposto de renda


anual: a emissão do documento do imposto de renda é realizada durante
poucos dias do ano e utiliza uma grande quantidade de processamento de
requisições (computação e uso de rede) e armazenamento das declarações, pois
a maior parte da população deve enviar esses dados. Esse serviço, para ser
ofertado sem o auxílio da nuvem computacional, precisa de toda essa
infraestrutura para dar suporte a milhões de requisições durante os dias
estabelecidos para esse serviço; no restante do ano, o equipamento ficará sem
uso, e dinheiro será gasto com a sua manutenção e também com a equipe de
funcionários que dá suporte à infraestrutura.

A seguir, você vai aprender o que são os clusters e os grids dentro dos sistemas
distribuídos.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 20/34
11/20/22, 1:46 PM Ead.br

reflita
Reflita
Já parou para pensar sobre como é
complexa a administração de diversos
computadores para criar uma
infraestrutura de computação em
nuvem? Reflita também sobre quão
difícil é implementar essa infraestrutura
e fornecer a computação em nuvem
como um serviço.

Cluster e Grid
Os sistemas distribuídos podem ser divididos em Sistemas de Performance,
Sistemas de Informação Distribuída e Sistemas Distribuídos Pervasivos
(TANENBAUM, 2007). Dentro dos sistemas de performance temos os clusters e
os grids. Veja a seguir:

Sistemas
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 21/34
11/20/22, 1:46 PM Ead.br

de
Performance
Cluster:
conjuntos de computadores
com homogeneidade de hardware e
software, ou seja, utilizam a rede local
para comunicação. É uma boa
alternativa aos supercomputadores,
permite a execução paralela de
softwares que permitem paralelismo. É
eleito um nó mestre que controla os
demais e tem acesso a rede externa.

Grid (ou Grade):


faz o uso de
federações, onde pode conter diferentes
hardwares, softwares e tecnologias
distintas. É maior que um cluster e não
tem a entidade central e/ou
controladora bem definida.

Arquiteturas de Implementação
Vamos entender melhor como funciona a implantação dos serviços de
computação e armazenamento em nuvem, envolvendo nuvens privadas,
públicas, híbridas e comunitárias. Veja a classificação a seguir:

Nuvem privada (
private cloud
): no modelo de nuvem privada, a
organização tem total controle da nuvem, podendo gerenciar os
recursos de forma livre; porém, é necessário realizar o gerenciamento e
a manutenção da infraestrutura da nuvem. Esse tipo de nuvem permite
que as organizações apliquem medidas de segurança mais restritas,

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 22/34
11/20/22, 1:46 PM Ead.br

tornando-as mais seguras quando comparadas à segurança de outros


tipos de nuvens. De forma geral, a nuvem privada é mantida e usada
por uma única organização ou por um grupo de organizações que são
parceiras. Além disso, a nuvem privada pode ser classificada como:
hospedada por um provedor de serviços ou hospedada pela própria
organização.
Nuvem pública (
public cloud
): a nuvem pública é o modelo mais
utilizado, permitindo que diversas organizações dividam os custos de
manutenção da nuvem e usem os recursos disponíveis. Nesse tipo de
nuvem, geralmente se usa a tarifação
pay as you go
, adequando o
consumo de cada organização ao valor pago. Em geral, a nuvem pública
é oferecida por grandes instituições, públicas ou privadas. Como
exemplo de organizações mantenedores, temos a Amazon, que oferece
o serviço Amazon Web Service (AWS) para computação na nuvem.
Nuvem comunitária (
community cloud
): nesse tipo de organização de
nuvem, geralmente a infraestrutura é montada e gerenciada por um
grupo de organizações que compartilham os recursos fornecidos pela
nuvem. Essas organizações partilham dos mesmos interesses, o que
permite reduzir os custos com o compartilhamento. Além disso,
também é possível que a infraestrutura esteja dentro de uma das
organizações ou que seja instalada em um provedor de serviços
terceirizado.
Nuvem híbrida (
hybrid cloud
): na abordagem híbrida há um conjunto
de diversas nuvens. Nesse conjunto, há uma agregação dessas nuvens
para formar uma única, de forma transparente. Essa abordagem
enfrenta um empenho extra para realizar o gerenciamento das diversas
nuvens e convertê-las em uma única, oferecendo transparência ao
prover o serviço.

Cada modelo de nuvem tem vantagens e desvantagens, sendo mais ou menos


adequado para determinados cenários. Tanto as nuvens privadas quanto as
nuvens públicas têm alta eficiência, alta disponibilidade, elasticidade e rápida
implementação. Quanto aos benefícios únicos das redes públicas, podemos

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 23/34
11/20/22, 1:46 PM Ead.br

citar: custos iniciais reduzidos, economia proporcionada pela grande escala da


nuvem, simplicidade de gerenciamento ao usuário, pagamento de acordo com o
uso. Já a nuvem privada provê as seguintes vantagens: maior controle de
segurança e qualidade do serviço, integração facilitada, custos totais mais baixos
(porém, exige maior investimento inicial).

praticar
Vamos Praticar
Os sistemas distribuídos estão presentes em nosso cotidiano: desde o acesso a um
site na internet até o armazenamento de dados na nuvem. Eles podem ser divididos
em Sistemas de Performance (SP), Sistemas de Informação Distribuída (SID) e Sistemas
Distribuídos Pervasivos (SDP). Dentro dos Sistemas de Performance, temos os grids e
os clusters. A partir disso, assinale a alternativa correta.

a)
Os grids têm uma entidade central de controle.
b)
Os SP focam no uso de conexão sem fio.
c)
Os Sistemas Pervasivos tentam garantir os princípios de atomicidade,
consistência, isolamento e durabilidade.
d)
Os SIDs devem apresentar grande poder de processamento e
armazenamento de dados.
e)
Os clusters têm uma entidade central de controle.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 24/34
11/20/22, 1:46 PM Ead.br

Sistemas de
Transações
Distribuídas e
Sistemas de
Arquivos
Distribuídos

Para completar uma transação, os sistemas de transações distribuídas podem


acessar diversas máquinas, e cada máquina pode contribuir com alguma
informação ou processamento. Um exemplo comum para esses tipos de
sistemas são os bancos de distribuídos. Os bancos de dados distribuídos são os
bancos de dados que compartilham a mesma lógica, porém, são fracamente
acoplados. Eles utilizam uma rede para se comunicar e dividem recursos físicos.
Podem ser homogêneos (quando têm o mesmo banco de dados) ou
heterogêneos (diferentes bancos de dados interagindo).

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 25/34
11/20/22, 1:46 PM Ead.br

Os sistemas de arquivos distribuídos são sistemas de armazenamento que


usam diversas máquinas para o armazenamento dos dados. Tanto os sistemas
de transações como os de arquivos distribuídos compartilham os mecanismos
de sincronismo, replicação e consistência dos dados. A seguir, vamos entender
melhor alguns conceitos sobre esses tipos de sistemas e suas aplicações.

Definições e Aplicações
O armazenamento em bancos de dados distribuídos deve levar em
consideração alguns conceitos-chave (TANENBAUM, 2007):

Replicação dos dados: mantém somente uma cópia de cada dado em


diferentes sites.
Fragmentação: a relação do banco de dados é particionada em diversos
fragmentos; cada fragmento é armazenado em um site diferente.
Replicação e fragmentação: o sistema é particionado em fragmentos, e
cada fragmento é replicado em diferentes máquinas.

Quanto à replicação dos dados, as vantagens são: aumento na disponibilidade e


no paralelismo; o tempo para atualização também aumenta, visto que, quanto
mais dados em locais diferentes houver, maior será o esforço para alcançar
todos e atualizá-los. Em geral, a replicação melhora as consultas do tipo de
leitura, enquanto as do tipo de escrita ou atualização são mais custosas. Além
disso, é importante identificar o perfil do sistema para ajudar a detectar qual
abordagem será melhor: uma que permita desempenho nas buscas ou nas
inserções dos dados.

Quanto à fragmentação dos dados, pode ser usada a fragmentação horizontal


ou a vertical. Na fragmentação horizontal, todas as colunas são mantidas e os
dados são divididos por tuplas (linhas do banco de dados); cada servidor
armazena um fragmento de tuplas. Na fragmentação vertical, o banco de dados
é dividido em diferentes colunas, e então dividido para os diferentes servidores.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 26/34
11/20/22, 1:46 PM Ead.br

Também há a fragmentação mista, que utiliza as duas abordagens


(TANENBAUM, 2007).

Outra característica importante dos bancos de dados distribuídos é a


transparência dos dados. O usuário não deve precisar referenciar em qual
servidor quer buscar a informação; o sistema deve se autogerenciar e manter a
rastreabilidade dos fragmentos e as replicações. Todos os servidores têm uma
tabela atualizada das divisões dos fragmentos e podem achar a informação de
forma precisa.

Além disso, há o processamento de consultas distribuídas. Nos sistemas


centralizados, analisa-se principalmente a quantidade de acessos ao disco,
enquanto nos bancos de dados distribuídos analisa-se o custo da transmissão
do dado na rede e o ganho com paralelismo. Esse trade-off deve favorecer o uso
do paralelismo e dos dados distribuídos. Também é preciso analisar a
transformação da consulta na visão do usuário para a visão distribuída, a análise
dos caminhos e escolher o melhor trade-off para as operações do sistema.

Por fim, cada servidor deve garantir localmente as propriedades Acid


(atomicidade, consistência, isolamento e durabilidade). Um sistema distribuído
pode sofrer as mesmas falhas de um centralizado, adicionadas as falhas
inerentes à complexidade da transmissão e do gerenciamento dos dados
particionados, aumentando a complexidade de uso e do gerenciamento dos
sistemas distribuídos.

praticar
Vamos Praticar
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 27/34
11/20/22, 1:46 PM Ead.br

A replicação é uma técnica bastante utilizada nos sistemas distribuídos em geral,


melhorando as consultas do tipo de leitura; contudo, as do tipo de escrita ou
atualização são mais custosas. A replicação dos dados é alcançada nos sistemas
distribuídos usando os conceitos de fragmentos de dados. A partir disso, assinale a
alternativa correta.

a)
Na fragmentação vertical, o banco de dados é dividido em diferentes colunas.
b)
Na fragmentação horizontal, o banco de dados é dividido em diferentes
colunas, e então dividido para os diferentes servidores.
c)
A fragmentação horizontal divide o banco de dados em linhas, mas mantém
todas no mesmo banco de dados.
d)
Na fragmentação vertical, o banco de dados é dividido em diferentes tuplas.
e)
A fragmentação mista não usa a fragmentação vertical.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 28/34
11/20/22, 1:46 PM Ead.br

indicações
Material
Complementar

FILME

Minority report
Ano:
2002
Comentário:
Esse filme vai ajudar você a entender como
é a integração de diversos sensores para prover uma
computação ubíqua. Além disso, é perceptível o cenário
que faz uso de IoT para oferecer funcionalidades para as
pessoas. Essa imensidão de dados gerados é armazenada
e processada usando os conceitos de computação e
armazenamento em nuvem.
Para conhecer mais sobre o filme, acesse o
trailer
a
seguir.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 29/34
11/20/22, 1:46 PM Ead.br

TRAILER

LIVRO

SOA design patterns


Thomas Erl
Editora:
Prentice Hall
ISBN:
0136135161
Comentário:
Não confunda o protocolo SOAP com a
Arquitetura Orientada a Serviços (SOA). O SOA é um
paradigma de modelagem, enquanto o SOAP é um
protocolo parecido com o REST.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 30/34
11/20/22, 1:46 PM Ead.br

conclusão
Conclusão
Nesta unidade, você aprendeu para que servem os serviços web (web services) e
entendeu como deve realizar o acesso ao serviço web a partir de uma URL. Além
disso, observou que a arquitetura padrão para um serviço web é baseada na
infraestrutura, que provê suporte aos componentes; só então os serviços são
construídos acima dos componentes.

Você entendeu que é possível usar diferentes abordagens para a organização


dos serviços web, como SOAP ou REST; também foi apresentado à forma de
organização dos dados, podendo organizá-los no padrão XML ou no JSON.

Vimos o protocolo HTTP e seus principais métodos, como POST e GET, usados
para manuseio dos serviços web.

Você estudou os principais tipos de arquiteturas para a computação em nuvem:


infraestrutura como um serviço (IaaS), plataforma como um serviço (PaaS) e
software
como um serviço (SaaS). Por fim, entendemos as diferenças entre os
clusters e os grids do ponto de vista da organização dos componentes, e
também os principais tipos de nuvens.

f ê i
https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 31/34
11/20/22, 1:46 PM Ead.br

referências
Referências
Bibliográficas
COULOURIS, G.
Sistemas distribuídos:
conceitos e projeto. São Paulo:
Bookman, 2013.

TANENBAUM, A. S.
Sistemas distribuídos:
princípios e práticas. São Paulo:
Pearson Prentice Hall, 2007.

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 32/34
11/20/22, 1:46 PM Ead.br

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 33/34
11/20/22, 1:46 PM Ead.br

https://student.ulife.com.br/ContentPlayer/Index?lc=5GnWtWmozPPWX7uSFEMZFg%3d%3d&l=1%2b%2fNkrYo1P%2fYER37whe3BQ%3d%3d&c… 34/34

Você também pode gostar