Buscar

Infraestrutura para Sistemas de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

RE
VI
SÃ
O:
 T
CP
/I
P
APLICAÇÃO
TRANSPORTE
INTERNET
ACESSO À REDE
Infraestrutura para
Sistemas de Software
 
SEMANA 1
Identificar as principais características que envolvem o universo de uma rede de computadores, sendo a
Internet uma dessas redes.
Compreender que a comunicação entre computadores somente é possível por meio de um modelo
baseado em camadas, com a utilização de diversos protocolos padronizados.
Reconhecer que, na Internet, há protocolos de comunicação adequados para transportar informações
com a garantia de que elas cheguem ao destino intactas e na ordem em que foram enviadas.
Compreender que outros protocolos não se preocupam com a confiabilidade e perdas de dados, mas
sim em enviar os dados pela rede da melhor maneira possível.
Entender por que a Web se fundamenta em pelo menos dois protocolos de comunicação, que são o TCP
e o HTTP.
Processo de rede para aplicações 
Representação das mensagens 
Formatação das mensagens
Conexão ponto a ponto entre processos/
aplicações que executa em hosts diferentes
Endereçamento lógico dos hosts 
Roteamento
Acesso ao meio físico 
Transmissão binária
 Codificação/Decodificação de sinais
Uma arquitetura de camadas nos permite
discutir uma parcela específica e bem
definida de um sistema grande e complexo.
Essa simplificação tem considerável valor
intrínseco, pois provê modularidade,
tornando muito mais fácil modificar a
execução do serviço prestado pela camada.
Contanto que a camada forneça o mesmo
serviço para a que está acima e use os
mesmos serviços da que vem abaixo dela, o
restante do sistema permanece inalterado
quando a sua realização é modificada. 
A divisão em camadas proporciona um modo estruturado de discutir componentes de sistemas. A
modularidade facilita a atualização de componentes de sistema.
CAMADA DE APLICAÇÃO
A camada de aplicação é onde residem aplicações de rede e seus protocolos.
CAMADA DE TRANSPORTE
 A camada de transporte da Internet carrega mensagens da camada de aplicação entre os lados do
cliente e servidor de uma aplicação. Há dois protocolos de transporte na Internet: TCP e UDP* (do inglês
User Datagram Protocol – Protocolo de Datagrama de Usuário), e qualquer um pode levar mensagens da
camada de aplicação. O TCP provê serviços orientados à conexão para suas aplicações. Alguns desses
serviços são a entrega garantida de mensagens da camada de aplicação ao destino e controle de fluxo
(i.e., adequação das velocidades do remetente e do receptor). O TCP também fragmenta mensagens
longas em segmentos mais curtos e provê mecanismo de controle de congestionamento, de modo que
uma origem reduz sua velocidade de transmissão quando a rede está congestionada. O protocolo UDP
provê serviço não orientado à conexão para suas aplicações. É um serviço econômico que não oferece
confiabilidade, nem controle de fluxo ou de congestionamento. Neste livro, chamaremos de segmento um
pacote da camada de transporte.
https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_8296_1
CAMADA DE REDE DA INTERNET
A camada de rede da Internet é responsável pela movimentação, de um hospedeiro para outro, de
pacotes da camada de rede, conhecidos como datagramas. O protocolo de camada de transporte da
Internet (TCP ou UDP) em um hospedeiro de origem passa um segmento da camada de transporte e
um endereço de destino à camada de rede, exatamente como você passaria ao serviço de correios uma
carta com um endereço de destinatário. A camada de rede então provê o serviço de entrega do
segmento à camada de transporte no hospedeiro de destino.
 ssa camada inclui o famoso protocolo IP, que define os campos no datagrama e o modo como os
sistemas finais e os roteadores agem nesses campos. Existe apenas um único protocolo IP, e todos os
componentes da Internet que têm uma camada de rede devem executá-lo. A camada de rede da
Internet também contém protocolos de roteamento que determinam as rotas que os datagramas
seguem entre origens e destinos. A Internet tem muitos protocolos de roteamento. Como vimos na
Seção 1.3, a Internet é uma rede de redes e, dentro de uma delas, o administrador pode executar
qualquer protocolo de roteamento. Embora a camada de rede contenha o protocolo IP e também
numerosos outros de roteamento, ela quase sempre é denominada apenas camada IP, refletindo o fato
de que ele é o elemento fundamental que mantém a integridade da Internet.
Para levar um pacote de um nó (hospedeiro ou roteador) ao nó seguinte na rota, a camada de rede
depende dos serviços da camada de enlace. Em especial, em cada nó, a camada de rede passa o
datagrama para a camada de enlace, que o entrega, ao longo da rota, ao nó seguinte, no qual o
datagrama é passado da camada de enlace para a de rede.
Os serviços prestados pela camada de enlace dependem do protocolo específico empregado no enlace.
Por exemplo, alguns desses protocolos proveem entrega garantida entre enlaces, isto é, desde o nó
transmissor, passando por um único enlace, até o nó receptor. Note que esse serviço confiável de
entrega é diferente do de entrega garantida do TCP, que provê serviço de entrega garantida de um
sistema final a outro. Exemplos de protocolos de camadas de enlace são Ethernet, WiFi e o protocolo
DOCSIS da rede de acesso por cabo.
Uma analogia útil que podemos usar aqui é o envio de um memorando entre escritórios de uma
empresa pelo correio de uma filial a outra. Suponha que Alice, que está em uma filial, queira enviar um
memorando a Bob, que está na outra filial. O memorando representa a mensagem da camada de
aplicação. Alice coloca o memorando em um envelope de correspondência interna em cuja face são
escritos o nome e o departamento de Bob. O envelope de correspondência interna representa o
segmento da camada de transporte – contém as informações de cabeçalho (o nome de Bob e seu
departamento) e encapsula a mensagem de camada de aplicação (o memorando).
Quando a central de correspondência do escritório emissor recebe o envelope, ele é colocado dentro
de outro, adequado para envio pelo correio. A central de correspondência emissora também escreve o
endereço postal do remetente e do destinatário no envelope postal. Nesse ponto, o envelope postal é
análogo ao datagrama – encapsula o segmento de camada de transporte (o envelope de
correspondência interna), que, por sua vez, encapsula a mensagem original (o memorando). O correio
entrega o envelope postal à central de correspondência do escritório destinatário. Nesse local, o
processo de desencapsulamento se inicia. A central de correspondência retira o memorando e o
encaminha a Bob. Este, por fim, abre o envelope e retira o memorando.
Camada física é movimentar os bits individuais que estão dentro do quadro de um nó para o seguinte.
Os protocolos nessa camada de novo dependem do enlace e, além disso, do próprio meio de
transmissão do enlace (p. ex., fios de cobre trançado ou fibra ótica monomodo).
ENDEREÇAMENTO IPV4
Version: informa a versão do protocolo (4 bits) 
IHL: informa o tamanho do cabeçalho em palavras de
32 bits (4bits)
Type of service: informa as classes de serviço
(necessidades em termos de atraso, confiabilidade) (8
bits) 
Total length: informa o tamanho do datagrama (16
bits) 
Identification: identifica o datagrama (todos os
fragmentos de um datagrama possuem o mesmo ID)
(16 bits) 
Fragmentação (MTU de tamanho diferentes) 
DF (1bit): não fragmentar o datagrama 
MF (1bit): indica se há mais fragmentos de um
datagrama – Último: bit 0
Fragment offset: localização do fragmento no datagrama. Múltiplos de 8 bytes - máximo de 8196 fragmentos 
Time to live: contador usado para limitar o tempo de vida útil de um datagrama (em segundos, até 255). Decrementado a cada
roteador (salto ou hop) 
Protocol: identifica o protocolo de transporte (6 para TCP e 17 para UDP) 
Header Checksum: verifica a integridade do cabeçalho (recalculado a cada hop) 
Source and Destination Addresses: endereços de origem e destino
CLASSES IPV4 Endereçamento Classfull
Uso ineficiente do espaço de endereçamento,
exaustão doespaço de endereços
CIDR: classless interdomain routing (roteamento
interdomínio sem classe) (RFC 1519) 
A porção de endereço de rede tem tamanho
arbitrário
Formato do endereço: a.b.c.d/x, onde x é o número
de bits na parte de rede do endereço
Classe A: 126 redes com 16 milhões de hosts cada
Classe B: 16.384 redes com 65.536 de hosts cada
Classe C: dois milhões de redes com 254 hosts cada
Classe D: multicast
Classe E: reservado para testes e novas
implementações de TCP/IP
MÁSCARA DE REDE Utilizada para definir a rede à qual o host pertence
A rede é obtida a partir de um AND (bit a bit) entre o endereço do host e a máscara
SUB-REDES
A estrutura de endereçamento IP pode ser modificada localmente (a critério do
administrador de rede), usando-se bits de endereçamento de máquina como um
adicional para endereçamento de rede.
ROTEAMENTO
Determinar se ele tem suíte de protocolos ativa;
Conhecer a rede de destino;
Qual interface de saída é o melhor caminho para o destino. 
É um processo de retransmissão no qual os itens são encaminhados de uma localidade para outra. 
O aprendizado e manutenção do conhecimento da topologia de rede são as funções de roteamento. 
Comutação: tráfego transiente por meio do roteador, da interface de entrada para uma interface de saída 
Exigências para o roteamento:
1.
2.
3.
Distância Administrativa: usada como medida de confiança da origem das informações de roteamento
do IP. Ela é importante só quando roteador aprende sobre uma rota de destino de mais de uma origem. 
PROTOCOLOS
TCP
são padronizações que definem como se dá a comunicação e a utilização do meio físico na
infraestrutura de comunicação (rede). Consideram semântica (regras) e sintaxe (formato). 
é um protocolo representante da camada de rede do
modelo TCP/IP. A Camada de rede tem como funções
principais:
Ele é um protocolo que não garante que os dados
chegaram intactos e sem erros ao destino.
Dizemos que o IP oferece um serviço de melhor esforço aos
protocolos da camada de transporte, como o TCP e o UDP.
Endereçamento
Determinação de caminhos: rota escolhida pelos
pacotes entre a origem e o destino. Algoritmos de
roteamento determinam os valores para a comutação 
Comutação (ou repasse): mover pacotes entre as portas
de entrada e de saída dos roteadores 
HOST-HOST
faz parte da camada de transporte do modelo TCP/IP. 
A camada de transporte é uma camada fim a fim, que liga a
origem ao destino 
A origem aceita dados da camada de aplicação, e os divide
em unidades menores em caso de necessidade. Em
seguida passa-os para a camada de rede e garante que
todas essas unidades cheguem corretamente à outra
extremidade (no destino).
Tudo deve ser feito com eficiência de forma que as
camadas superiores fiquem isoladas das mudanças na
tecnologia de hardware.
UDP
protocolo simplificado e de melhor esforço porque os
segmentos UDP podem ser: perdidos/ entregues fora de
ordem para a aplicação de destino.
não há estabelecimento de conexão
não há estado de conexão nem no transmissor, nem no
receptor 
 cabeçalho de segmento reduzido
Considere, por exemplo, uma fábrica que precise transportar uma quantidade de carga muito grande a
algum depósito localizado a milhares de quilômetros. Na fábrica, a carga é dividida e carregada em uma
frota de caminhões. Cada caminhão viaja, de modo independente, pela rede de rodovias, estradas e
cruzamentos ao depósito de destino. No depósito, a carga é descarregada e agrupada com o resto da
carga pertencente à mesma remessa. Deste modo, os pacotes se assemelham aos caminhões, os
enlaces de comunicação representam rodovias e estradas, os nós de comutação seriam os
cruzamentos, e cada sistema final se assemelha aos depósitos. Assim como o caminhão faz o percurso
pela rede de transporte, o pacote utiliza uma rede de computadores.
Os sistemas finais, os nós de comutação e outras peças da Internet executam protocolos que
controlam o envio e o recebimento de informações.
Os sistemas finais ligados à Internet oferecem uma interface socket que especifica como o programa
que é executado no sistema final solicita à infraestrutura da Internet que envie dados a um programa
de destino específico, executado em outro sistema final. Essa interface socket da Internet é um
conjunto de regras que o software emissor deve cumprir para que a Internet seja capaz de enviar os
dados ao programa de destino.
CAMADA DE TRANSPORTE
Desempenha o papel fundamental de fornecer serviços de comunicação diretamente aos processos de
aplicação que rodam em hospedeiros diferentes. 
 Um protocolo da camada de transporte fornece comunicação lógica entre processos de aplicação que
rodam em hospedeiros diferentes. Comunicação lógica nesse contexto significa que, do ponto de vista
de uma aplicação, tudo se passa como se os hospedeiros que rodam os processos estivessem
conectados diretamente; na verdade, eles poderão estar em lados opostos do planeta, conectados por
diversos roteadores e uma ampla variedade de tipos de enlace. Processos de aplicação usam a
comunicação lógica fornecida pela camada de transporte para enviar mensagens entre si, livres da
preocupação dos detalhes da infraestrutura física utilizada para transportá-las.
Protocolos da camada de transporte são implementados nos sistemas
finais, mas não em roteadores de rede. 
No lado remetente, a camada de transporte converte as mensagens que recebe de um processo de
aplicação remetente em pacotes de camada de transporte, denominados segmentos de camada de
transporte na terminologia da Internet. Isso é (possivelmente) feito fragmentando-se as mensagens da
aplicação em pedaços menores e adicionando-se um cabeçalho de camada de transporte a cada
pedaço para criar o segmento de camada de transporte. Essa camada, então, passa o segmento para a
de rede no sistema final remetente, onde ele é encapsulado em um pacote de camada de rede (um
datagrama) e enviado ao destinatário. É importante notar que roteadores de rede agem somente nos
campos de camada de rede do datagrama; isto é, não examinam os campos do segmento de camada
de transporte encapsulado com o datagrama. No lado destinatário, a camada de rede extrai do
datagrama o segmento de camada de transporte e passa-o para a camada de transporte, que, em
seguida, processa o segmento recebido, disponibilizando os dados para a aplicação destinatária.
Na internet são dois: TCP e UDP. 
UDP definido no (RFC 768), faz apenas o mínimo que um protocolo de transporte pode fazer. À
parte sua função de multiplexação/demultiplexação e de alguma verificação de erros simples, ele nada
adiciona ao IP. Na verdade, se o desenvolvedor de aplicação escolher o UDP, em vez do TCP, a aplicação
estará “falando” quase diretamente com o IP. O UDP pega as mensagens do processo da aplicação,
anexa os campos de número da porta de origem e de destino para o serviço de
multiplexação/demultiplexação, adiciona dois outros pequenos campos e passa o segmento resultante
à camada de rede, que encapsula o segmento dentro de um datagrama IP e, em seguida, faz a melhor
tentativa para entregar o segmento ao hospedeiro receptor. Se o segmento chegar ao hospedeiro
receptor, o UDP usará o número de porta de destino para entregar os dados do segmento ao processo
de aplicação correto. Note que, com o UDP, não há apresentação entre as entidades remetente e
destinatária da camada de transporte antes de enviar um segmento. Por essa razão, dizemos que o
UDP é não orientado para conexão.
Razões para algumas aplicações se adaptarem melhor ao UDP:
Exemplo: DNS
Melhor controle no nível da aplicação sobre quais dados são enviados e quando
Não há estabelecimento de conexão
Não há estados de conexão
Pequeno cabeçalho de pacote.
 definido no (RFC 768), faz apenas o mínimo que um protocolo de transporte pode fazer. À
parte sua função de multiplexação/demultiplexação e de alguma verificação de erros simples, ele nada
adiciona ao IP. Na verdade, se o desenvolvedor de aplicação escolher o UDP, em vez do TCP, a aplicação
estará “falando”quase diretamente com o IP. O UDP pega as mensagens do processo da aplicação,
anexa os campos de número da porta de origem e de destino para o serviço de
multiplexação/demultiplexação, adiciona dois outros pequenos campos e passa o segmento resultante
à camada de rede, que encapsula o segmento dentro de um datagrama IP e, em seguida, faz a melhor
tentativa para entregar o segmento ao hospedeiro receptor. Se o segmento chegar ao hospedeiro
receptor, o UDP usará o número de porta de destino para entregar os dados do segmento ao processo
de aplicação correto. Note que, com o UDP, não há apresentação entre as entidades remetente e
destinatária da camada de transporte antes de enviar um segmento. Por essa razão, dizemos que o
UDP é não orientado para conexão.
Razões para algumas aplicações se adaptarem melhor ao UDP:
1.
2.
3.
4.
TCP é orientado para conexão porque, antes que um processo de aplicação possa começar a
enviar dados a outro, os dois processos precisam primeiro se “apresentar” ( handshake ) – isto é,
devem enviar alguns segmentos preliminares um ao outro para estabelecer os parâmetros da
transferência de dados. Trata-se de uma “conexão” lógica, com o estado comum residindo apenas nos
TCPs nos dois sistemas finais em comunicação. Lembre-se de que, como o protocolo TCP roda apenas
nos sistemas finais e não nos elementos intermediários da rede (roteadores e switches ), os elementos
intermediários não mantêm o estado de conexão TCP. Uma conexão TCP provê um serviço full-
duplex : se houver uma conexão TCP entre o processo A em um hospedeiro e o processo B em outro
hospedeiro, os dados da camada de aplicação poderão fluir de A para B ao mesmo tempo em que os
dados da camada de aplicação fluem de B para A. A conexão TCP é sempre ponto a ponto , isto é,
entre um único remetente e um único destinatário. O multicast não é possível. 
Segmento TCP, que consiste em campos de cabeçalho e um campo de dados. O campo de dados
contém uma quantidade de dados de aplicação
 O TCP vê os dados como uma cadeia de bytes não estruturada, mas ordenada. O uso que o TCP faz
dos números de sequência reflete essa visão, pois esses números são aplicados sobre a cadeia de 
 bytes transmitidos, e não sobre a série de segmentos transmitidos. Dois dos mais importantes
campos do cabeçalho do segmento TCP são o de número de sequência, é o número do primeiro 
 byte do segmento. e o de número de reconhecimento, O número de reconhecimento que o
hospedeiro A atribui a seu segmento é o número de sequência do próximo byte que ele
estiver aguardando do hospedeiro B. Esses campos são parte fundamental do serviço de
transferência confiável de dados do TCP.
CAMADA DE REDE - PLANO DE DADOS
 O papel primordial dos roteadores no plano de dados é repassar datagramas de enlaces de entrada
para enlaces de saída; o papel primordial do plano de controle da rede é coordenar essas ações locais
de repasse por roteador de modo que os datagramas sejam transferidos fim a fim, seguindo caminhos
de roteadores entre os hospedeiros de origem e de destino. 
O transporte de pacotes de remetente para um destinatária ocorre através de:
 Repasse refere-se à ação local realizada por um roteador para transferir um pacote da interface de
um enlace de entrada para a interface de enlace de saída apropriada. O repasse ocorre em escalas
temporais muito curtas (em geral, alguns poucos nanossegundos) e, logo, normalmente é
implementado no hardware . Roteamento refere-se ao processo de âmbito geral da rede que
determina os caminhos fim a fim que os pacotes percorrem desde a origem até o destino.
 o repasse baseado em destino como dois passos: pesquisar um endereço IP de destino (“combinação”)
e depois enviar o pacote para o elemento de comutação e à porta de saída especificada (“ação”)
transportar pacotes de um hospedeiro remetente a um hospedeiro destinatário. 
O repasse é a função-chave realizada pela funcionalidade de plano de dados da camada de rede.
SEMANA 2
Conhecer noções fundamentais sobre a modelagem da infraestrutura
computacional para a implantação de aplicações em larga escala.
Configurar um firewall baseado em filtro de pacotes e entender que, em
função do alto índice de ataques a redes, um firewall é primordial em
qualquer organização.
Compreender que é necessário controlar tráfego de entrada e saída de
dados de redes de computadores, garantindo a integridade aos serviços
disponíveis aos usuários.
Entender como o conteúdo da Web pode ser filtrado pelo Servidores
Proxies. Compreender como as regras de filtragem são geradas.
Entender a Relação dos Proxies com Firewalls (filtros de
pacotes/datagramas).
Conhecer os mecanismos de autenticação mais utilizados atualmente, em
especial o OpenLDAP.
Assimilar a importância de conhecer o funcionamento dos Web Servers,
pois eles são os serviços/processos responsáveis por fornecer conteúdo
aos usuários em toda a Internet.
Compreender a complexidade de armazenar e disponibilizar os mais
variados tipos de conteúdo para usuários que navegam na Internet.
CAMADA DE APLICAÇÃO
 O núcleo do desenvolvimento de aplicação de rede é escrever programas que rodem em sistemas
finais diferentes e se comuniquem entre si.
 a arquitetura da aplicação é projetada pelo programador e determina como a aplicação é organizada
nos vários sistemas finais. Ao escolher a arquitetura da aplicação, é provável que o programador
aproveite uma das duas arquiteturas mais utilizadas em aplicações modernas de rede: cliente-servidor
ou P2P.
 Em uma arquitetura cliente-servidor , há um hospedeiro sempre em funcionamento,
denominado servidor , que atende a requisições de muitos outros hospedeiros, denominados 
clientes . 
Observe que, na arquitetura cliente-servidor, os clientes não se comunicam diretamente uns com os
outros; por exemplo, na aplicação Web, dois navegadores não se comunicam de modo direto. Outra
característica dessa arquitetura é que o servidor tem um endereço fixo, bem conhecido, denominado
endereço IP (que discutiremos em breve). Em razão dessa característica do servidor e pelo fato de ele
estar sempre em funcionamento, um cliente sempre pode contatá-lo, enviando um pacote ao endereço
do servidor. Algumas das aplicações mais conhecidas que empregam a arquitetura cliente-servidor são
Web, FTP, Telnet e e-mail.
 Em aplicações cliente-servidor, muitas vezes acontece de um único hospedeiro servidor ser incapaz de
atender a todas as requisições de seus clientes. Por exemplo, um site popular de redes sociais pode
ficar logo saturado se tiver apenas um servidor para atender a todas as solicitações. Por essa razão, um 
datacenter , acomodando um grande número de hospedeiros, é usado com frequência para criar um
servidor virtual poderoso.
Em uma arquitetura P2P , há uma dependência mínima (ou nenhuma) nos servidores dedicados nos 
 datacenters . Uma das características mais marcantes da arquitetura P2P é sua autoescalabilidade .
Por exemplo, em uma aplicação de compartilhamento de arquivos P2P, embora cada par gere uma
carga de trabalho solicitando arquivos, também acrescenta capacidade de serviço ao sistema
distribuindo arquivos a outros pares. As arquiteturas P2P também possuem uma boa relação custo-
benefício, visto que, em geral, não requerem infraestrutura e largura de banda de servidor significativas
(ao contrário de projetos cliente-servidor com datacenters ). Entretanto, devido à sua estrutura
altamente descentralizada, as aplicações P2P enfrentam desafios de segurança, desempenho e
confiabilidade.
 O HTTP é o protocolo que faz com que a World Wide Web realmente funcione e, para
a alegria de muitos, ele é um protocolo cliente/servidor sem informações de estado e
extremamente elementar. No paradigma HTTP, o iniciador de uma conexão sempre é
um cliente (normalmente um navegador). O cliente requisita ao servidor o “conteúdo”
de um determinado URL. O servidor responde com um fluxo de dados ou com algum
tipo de mensagem de erro. O cliente então pode continuar requisitandooutro objeto.
 O HTTP é o protocolo que faz com que a World Wide Web realmente funcione e, para a alegria de
muitos, ele é um protocolo cliente/servidor sem informações de estado e extremamente elementar. No
paradigma HTTP, o iniciador de uma conexão sempre é um cliente (normalmente um navegador). O
cliente requisita ao servidor o “conteúdo” de um determinado URL. O servidor responde com um fluxo
de dados ou com algum tipo de mensagem de erro. O cliente então pode continuar requisitando outro
objeto.
Como o HTTP é tão simples, você pode facilmente se transformar em um navegador Web rudimentar
utilizando telnet. Como a porta padrão para o serviço HTTP é a porta 80, basta enviar um telnet
diretamente a essa porta no servidor Web de sua preferência. Assim que estiver conectado, você pode
emitir comandos HTTP. 
O comando mais comum é GET, que requisita o conteúdo de um documento. Normalmente, GET / é o
que você deseja, já que ele solicita o documento-raiz (normalmente a home page) de qualquer que seja
o servidor a que você se conectou. O HTTP diferencia letras maiúsculas de minúsculas; portanto, você
deve se certificar de que digitou os comandos em letras maiúsculas.
FIREWALL
Regula tráfego entre redes existentes 
Impede a propagação de dados nocivosque digitou os
comandos em letras maiúsculas.
É um ponto de partida para a política de segurança 
Limita a exposição da rede
O que faz: 
o recebimento de dados baseados em
uma fonte ou destino 
o acesso a dados baseados em uma
fonte ou destino 
dados baseados em conteúdo 
O próprio Firewall deve ser imune à
penetração, permite conexões com uma rede
interna e reporta o tráfego na rede e as
atividades do Firewall. Além disso pode
bloquear: 
Toda solicitação chega ao Firewall 
Somente tráfego autorizado passa
pelo Firewall
Proteger uma rede contra usuários internos 
Proteger uma rede contra conexões que não passam
por ele 
Proteger contra ameaças completamente novas
O que não faz: 
Filtragem de pacotes
Network Address Translation (NAT)
Proxy de Aplicação 
Monitoramento e RegistroF
U
N
ÇÕ
ES
FILTRO DE PACOTES SERVIDORES PROXY
DE
CI
SÃ
O
DE
SE
M
PE
N
H
O
Controle do tráfego que entra e sai 
Incrementa a segurança 
Transparente aos usuários
Grande variedade no mercado
Endereço IP de origem
Endereço IP de destino
Protocolos TCP, UDP, ICMP
Portas TCP ou UDP origem
Portas TCP ou UDP destino
Tipo de mensagem ICMP
Não tratam protocolos da camada
de aplicação 
Dependem de soluções
complementares
Causam atraso no roteamento
O que faz: 
Como (métodos):
O que não fazem: 
Problemas:
Spoofing é um ataque cibernético
moderno em que o hacker se passa por
uma pessoa ou organização de
confiança. Assim, leva o usuário a
executar as ações que ele necessita
para enganá-lo ou enganar uma rede
inteira. O objetivo é disfarçar a origem
da comunicação, fazendo com que a
vítima acredite que está conversando
com outra pessoa ou organização
Assumem requisições de usuários
de uma rede 
Atuam em nome do cliente de uma
forma transparente 
Não permitem que pacotes passem
diretamente entre cliente e servidor
Método da Conexão Direta 
Método do Cliente Modificado 
Método do Proxy Invisível
Permite ao usuário acesso direto
aos serviços na Internet 
Possui bons mecanismos de log 
 Provê uma ótima separação entre
as redes
Cada serviço possui o seu servidor
proxy 
Deve ser desenvolvida uma nova
aplicação para cada novo serviço 
Existem alguns serviços inviáveis
O que faz: 
Como (métodos):
Vantagens: 
Desvantagens:
 utiliza o cabeçalho do pacote baseado em informações fornecidas pelo serviço
melhor que o proxy por estar em nível mais
baixo
AU
DI
TO
RI
A
melhor por permitir auditoria sobre o controle
do tráfego
OUTROS TIPOS
Filtragem de pacotes por ACL - Controle de Acesso
O método mais usado para configurar filtros de pacotes, implementando um servidor proxy com o
Squid (que permite compartilhar a conexão entre vários nós, servindo como intermediário entre eles
e a Internet). 
Padrão – filtram baseadas no endereço IP
Estendidas- procuram ‘mais dentro’ do cabeçalho do pacote
Firewalls Bastion Hosts 
Hosts fortemente protegidos
Único computador da rede que pode ser acessado pelo
lado de fora do firewall
Pode ser projetado para ser um servidor Web, servidor
FTP, dentre outros
Chamariz para crackers
Função de coletar dados de tentativas de invasão
Ferramentas de registros de logs são mantidas o mais seguro
possível
Honey Pot
EXEMPLOS: 
Arquitetura de FIREWALL
Screened Host
Sem sub-rede de proteção
Bastion host realiza o papel de
procurador – só ele passa pelo roteador
Screened subnet 
Proteger, peneirar e investigar
É a mais segura. 
DMZ
Sub-rede entre a rede externa e a protegida
Somente a rede interna tem acesso ao Bastion Host
Somente a sub-rede DMZ é conhecida pela Internet
SOLUÇÕES COMPLEMENTARES FIREWALL
Softwares capazes de detectar atividades
suspeitas 
Utiliza-se de padrões conhecidos de
comportamento de intrusos 
Podem analisar o tráfego interno, externo e
entre eles
PRINCÍPIOS: 
ANÁLISE DE TRÁFEGO
CONTROLE DE ACESSO
PREMISSAS
HOSTS
SISTEMAS
REDE
ATORES ENVOLVIDOS NO PROCESSO
Procura de padrões específicos.
ASSINATURA:
porém, há necessidade de
conhecimento prévio do padrão
Cada rede tem determinada
característica (estatística) e procura-se
por alterações nestas característica
(pico)
COMPORTAMENTO:
porém, não é muito eficaz. 
método ou conjunto deles, cujo objetivo
é restringir a utilização de determinados
recursos a um sistema por certos
usuários ou grupos de usuários
PARA
ESPECIFICAR:
Quais recursos podem ser acessados
Quais operações podem ser realizadas
sobre os recursos
Quais os componentes estão autorizados a
desempenhar determinadas operações
Ter certeza de que os dados
estão acessíveis quando forem
necessários e onde forem
necessários
DISPONIBILIDADE
Ter certeza de que os dados
não foram modificados
intencionalmente ou
acidentalmente
INTEGRIDADE
Somente os indivíduos
autorizados a acessar os dados
podem fazê-lo
CONFIDENCIALIDADE
Backup
Redundância
Assinatura Digital Criptografia 
Controle de Acesso
CLASSIFICAÇÃO DO CONTROLE DE ACESSO
Controle de acesso aos recursos do sistema operacional 
Proteção de arquivos e objetos
Controla recursos via rede
Atuam dentro de hosts (composto por uma interface e um banco de dados)
Com mecanismos próprios de controle
Implementados por meio de firewalls: filtros de pacotes e proxies 
 Roteadores, switches
Aquele que solicita acesso a
algum tipo de informação.
SUJEITO
O que é acessado pelo sujeito
OBJETO
Usado para mediar um
acesso;Ter controle que
garanta a integridade do seu
funcionamento. 
MONITOR DE REFERÊNCIA
PROCESSO DE ACESSO
MECANISMO DE CONTROLE DE ACESSO
DAC
 RBAC
 CENTRALIZADO
GERÊNCIA DE IDENTIDADES
LDAP
Identificar um sujeito junto a um objeto 
Responsabilizar individualmente por
ações no sistema
IDENTIFICAÇÃO
Confirma a identidade
Utiliza algo que o usuário sabe e/ou tem e/ou
com característica do indivíduo. 
AUTENTICAÇÃO
Determina se o sujeito está autorizado a
acessar um recurso particular
Faz parte de qualquer sistema operacional e
é desejável em aplicações
AUTORIZAÇÃO MECANISMOS DE AUTENTICAÇÃO:
Senhas Estáticas
Senhas Dinâmicas 
Chaves Criptográficas
Smartcard
Biometria
Normatizações de como o sujeito/usuário acessa os objetos
O proprietário do recurso é responsável por atribuir permissões.
Exemplo: ACL
Todas as permissões são atribuídas a papéis. Os papeis
representam funções e usuários são atribuídos aos papéis.
Mais usado em autenticação simples. Encripta somente a senha.
Autenticação baseada EAP, PAP, CHAP. 
O objetivo é automatizar as tecnologias de identificação, autenticação e
autorização
DIRETÓRIO:
É um catálogo que possui informações centralizadas de usuários e recursos. O formato de dados é
hierárquico.
Protocolo de acesso: LDAP (nele os usuários requisitam informações de recursos e as aplicações
requisitam informações dos usuários).
Centralizar as informações do usuários. A base é um serviço de diretórios, queé um banco de
dados, otimizado para leitura e que suporta sofisticados métodos de busca. É ajustado para dar
respostas rápidas a grandes volumes de dados
Ex. OpenLDAP (As informações são organizadas em um estrutura hierárquica em árvore).
SERVIDORES WEB São programas de computador responsáveis por aceitar requisições HTTP
HyperText Transport Protocol é um protocolo no nível de aplicação para sistemas distribuídos,
colaborativos, que trocam informações por hipermídia (HTML, Links, etc)
Uma das características dos servidores web é a troca de informações (request e response) entre o
cliente e o servidor. O servidor web espera, trata e responde as requisições. 
FORMATO DE UMA REQUISIÇÃO: 
L1: Linha inicial (request-line ou status-line) 
L2: Cabeçalho da mensagem (opcional)
L3: Linha vazia (CRFL) 
L4: Corpo da mensagem
MÉTODOS
GET
POST
PUT
solicita um recurso no servidor
envia dados para serem processados no servidor
Substitui todas as atuais representações de
recursos de destino pela carga de dados da
requisição
DELETE Usado para excluir o recurso da
requisição
PROTOCOLO
 SERVIDOR
ARQUIVO
Reconhecer os conceitos e características da computação em nuvem, os
modelos de serviço, atores, exemplos de provedores e modelos de
implantação;
Reconhecer as principais ferramentas/middlewares para IaaS, SaaS e PaaS
no contexto atual e suas características.
Compreender os principais conceitos sobre data centers, os quais
consistem em ambientes especializados para hospedagem de recursos
computacionais.
EXEMPLO:
https://www.univesp.br/cursos/
HTTP/HTTPS
nome do servidor: www.univesp.br
nome do arquivo: /cursos/
Navegador quebra a URL em 3 partes
Navegador se comunica com servidor de nomes:
Traduz o nome do servidor www.univesp.br para um IP
(104.24.124.188)
É criada então uma conexão entre o navegador e o servidor na porta 80
De acordo com o protocolo HTTP, o navegador envia uma solicitação para obter o arquivo desejado
O servidor então envia o texto da página para o navegador
O navegador lê o arquivo e formata a página na tela
Porta 80 é padrão para os Servidores Web
Todos os sites da Web, sejam eles estáticos ou dinâmicos
(conteúdo multimídia), fornecem conteúdo aos clientes por
meio dos servidores Web
+ utilizado/ + comum
WEB SERVER Possibilita o acesso aos servidores
de compartilhamento de arquivos,
emails, jogos online, etc.
SEMANA 3
O paradigma de computação em nuvem só é possível em razão dos recursos computacionais serem
transformados em serviços, os quais podem ser acessados via rede de comunicação.
COMPUTAÇÃO EM NUVEM:
É uma tecnologia de computação que utiliza a Internet e servidores remotos interligados via
uma estrutura de comunicação para armazenar dados e hospedar aplicações que podem ser
acessíveis, utilizando protocolos e padrão da WWW (World Wide Web)
Faz uso de APIs (Application Programming Interfaces) • Independente
de localização e de dispositivos • Faz uso de tecnologias de virtualização •
Confiabilidade • Manutenção • Segurança • Desempenho • Agilidade para
propor novas soluções • Serviço sob demanda • Pagamento pelo serviço
utilizado (recursos alocados) 
Principais Características
• Aumento da capacidade de processamento dos processadores modernos
• Tecnologia de virtualização • Armazenamento distribuído de dados •
Gerenciamento automatizado de aplicações e da infraestrutura • Acesso
mais barato à conexão de Internet • Servidores mais baratos e acessíveis
para serem utilizados para executar aplicações
Fatores que estimulam a
adesão à nuvem: 
Na visão do
desenvolvedor: 
É uma extensão de modelos distribuídos de desenvolvimento de software
O software é composto de componentes de terceiros, que se ligam por
meio de APIs. A execução do software ocorre de maneira distribuída em
diversos hosts/computadores/servidores. A propriedade é distribuída entre
diversas organizações. Geralmente, o código fonte não está disponível para
componentes de terceiros
Implantação:
Pública
Privada
Comunitária
Híbrida
Permite que os sistemas e os serviços sejam acessados pelo público em geral,
o que tende a deixá-la menos segura por conta da abertura ao público
Permite que os sistemas e os serviços sejam acessados dentro de uma
organização, o que faz dela, a princípio, um ambiente mais seguro para
executar e acessar os serviços
Permite que os sistemas e os serviços sejam acessados por um grupo de
organizações
É um misto de nuvem pública e privada. No entanto, as atividades críticas são
feitas utilizando a nuvem privada enquanto as não críticas são realizadas
utilizando a nuvem pública
Modelo de Serviços: 
IaaS Provisão em geral de rede de comunicação e hardware para
processamento e armazenamento de dados
Computação em Grade Computação Utilitária Computação como Serviço
Evolução Histórica:
Componentes:
Clientes
Servidores
Distribuídos
Data
Centers
Dispositivos que são usados
pelos usuários para interagir
com os servidores presentes
do Data Center
São os hardwares (compostos
de CPU, Memória, Discos) que
em geral estão
geograficamente distribuídos
para permitir escalar
aplicações para diferentes
clientes e países.
Coleção de servidores
distribuídos, em que a
aplicação é armazenada e
pode ser acessada por meio
de protocolos padronizados
da WWW
Rackspace
Amazon EC2
Utilizar uma infraestrutura segura por um período de tempo. Sem custo de manutenção de
hardware. Possibilidade de escalar o hardware para mais ou menos recursos desejáveis.
A Infraestrutura como Serviço (IaaS) é a mais simples das três categorias, já que funciona praticamente da
mesma forma, independentemente do fornecedor de nuvem escolhido. De forma geral, a IaaS oferece
uma infraestrutura de TI automatizada e escalonável de: armazenamento, hospedagem, redes de seus
próprios servidores globais, cobrando apenas pelo que o usuário consome. • Em vez de adquirir licenças
de software, ou servidores próprios, as empresas podem simplesmente alocar recursos de forma flexível
a partir das suas necessidades.
SaaS De uma forma transparente, o software/aplicação que o usuário
utiliza ou deseja implantar, faz uso dos sistemas operacionais
virtualizados e de toda a infraestrutura de comunicação e de
processamento
PaaS Middlewares e sistemas operacionais, em conjunto com a
infraestrutura de comunicação
Google App Engine
Microsoft Azure 
Utilizar um software específico sem se preocupar com manutenção de servidores e
custos de desenvolvimento
Utilizar uma plataforma de nuvem segura e executar sua aplicação sem o custo e a
complexidade de comprar e gerenciar hardware e software
A Plataforma como Serviço (PaaS) é o modelo de maior dificuldade para ser definido. A ideia é fornecer
todos os conceitos básicos da IaaS, assim como as ferramentas e recursos necessários para desenvolver
e gerenciar aplicativos com segurança sem precisar se preocupar com a infraestrutura. Os servidores que
hospedam sites são exemplos de PaaS.
O Software como Serviço (SaaS) é o local onde um software é hospedado por terceiros e pode ser
acessado pela web, geralmente bastando um login. • Neste caso, a empresa ou usuário contrata um
plano de assinatura e utiliza os programas necessários para os negócios. • Assim, o SaaS é muito mais
interessante para o uso de aplicativos específicos, como os de gestão de relacionamento com o cliente
(CRM).
TOTAL CONTROLE
ECONOMIA DE ESCALA
Economia de escala ocorre quando uma empresa aumenta a
quantidade total de produtos fabricados e alcança a redução do
custo médio de produção.
MIDDLEWARE
O que justifica a existência: As aplicações modernas são desenvolvidas para serem executadas em
escala, seja em ambientes on-premises (locais) ou em nuvem pública. O middleware é o elemento-
chave para montar o ambiente de aplicações com recursos fundamentais unificados necessário para
essas aplicações. Também pode ser utilizado para processamento distribuído e paralelo com ações
que ocorrem em tempo real. Todos os tipos de middleware executam funções de comunicação mas
podem incluir também: Autenticação; Gerenciamentode transações; Consulta de mensagens;
Servidores de Aplicativos; Servidores Web. 
OpenStack e CloudStack são exemplos de middleware
Permite a comunicação e o gerenciamento de dados para aplicações distribuídas.
pode ser usado para:
Otimizar aplicações:
Desenvolver novas aplicações
Integração:
Interfaces:
Transmissão de dados:
Automação Inteligente;
Melhora o desempenho e também a portabilidade de aplicações
Trabalhar com plataformas considerando a padronização da
execução, linguagens de programação e framework. 
Permite integrar sistemas internos aos sistemas externos.
permite conectar serviços distintos utilizando uma camada comum
acessados por meio de uma API.
Possibilidade de trocar informações de forma assíncrona com um
intermediador de dados, em que estes podem ser compartilhados
entre várias aplicações.
São softwares de código aberto para criar nuvens de infraestrutura como serviço (IaaS).
Ambos têm como objetivo fornecer um conjunto de componentes de código aberto que, juntos,
oferecem as funções necessárias para gerenciar nuvens que possuem até milhares de servidores
individuais. São voltados para provedores de serviços que criam nuvens públicas e para empresas que
consolidam seus recursos em nuvens privadas.
Facilitam desenvolver novas soluções
Ocultam a complexidade relacionada
à comunicação com dispositivos e
protocolos
Fornecem APIs para integrar
aplicações de terceiros
Ajudam a criar soluções de
forma mais rápida e escalável.
OpenStack e CloudStack podem:
alocar máquinas virtuais para servidores individuais
gerenciar switches
criar e gerenciar redes virtuais, sistemas de armazenamento de objetos e
blocos
uma interface de gerenciamento de computação em nuvem para dar suporte
a todos esses componentes
Arquitetura Modular com 
11 componentes: 
keystone
nova
horizon
swift
cinder
glance
neutron
heat
ceilometer
trove
sahara
Identity 
Dashboard 
Compute
Object Storage
Block Storage
Image Service
Networking
Orchestration
Telemetry
Database
Service
Data
Processing
Compreender os principais conceitos sobre virtualização, os quais
consistem em ambientes especializados para hospedagem de recursos
computacionais;
Identificar tecnologias de virtualização, as quais permitem abstrair um
conjunto de recursos (por exemplo, computacionais ou de comunicação);
Compreender os fundamentos, tipos e capacidades da virtualização;
Entender as diferenças entre emulação x virtualização/li>
Compreender os conceitos básicos sobre containers;
Conhecer e executar atividades práticas com ferramentas disponíveis para
virtualização.
SEMANA 4
 VIRTUALIZAÇÃO O conceito de virtualização surgiu na década de 60, quando a IBM
introduziu no mercado o mainframe S/370 no qual era possível a criação
de máquinas virtuais logicamente separadas, dando ao usuário a ilusão
de que estaria acessando diretamente uma máquina física. Esta solução
permitiu que os usuários deste tipo de equipamento, que era de alto
custo, utilizassem a totalidade dos recursos da máquina, trazendo um
melhor retorno de investimento para o usuário.
partições virtuais,
também chamadas de
máquinas virtuais (MVs)
permitem a execução várias tarefas, ou seja, vários aplicativos e processos ao mesmo tempo e de forma
concorrente sobre os mesmos recursos. Desta forma uma máquina virtual consiste em um ambiente
operacional auto-suficiente que abstrai as características de hardware e software da máquina física na
qual ela está sendo executada. Possível em razão do Monitor de Máquina Virtual (Virtual Machine Monitor -
VMM, também conhecido por hypervisor).
Integridade: Tudo que é requisitado para acessar o hardware deve ser alocado de forma explícita
pelo monitor.
Eficiência: Que muitas instruções do processador virtual possam ser executadas diretamente pelo
processador real.
Equivalência: O comportamento de execução deve ser semelhante ao da máquina real
Processamento (aplicações e sistema operacional ) é realizado diretamente sobre o processador físico
Instruções privilegiadas: são tratadas pelo sistema de virtualização 
Acesso a dispositivos: intermediado pelo sistema de virtualização 
Monitor de Máquina Virtual: é um componente de software responsável pela criação, isolamento e
preservação do estado da máquina virtual. É responsável pela orquestração de acesso aos recursos do
sistema que hospeda as máquinas virtuais, mantendo controle sobre os recursos compartilhados por
estas, tais como, processadores, dispositivos de entrada e saída, memória e armazenamento. Também é
função do VMM escalonar qual máquina virtual vai executar a cada momento, semelhante ao escalonador
de processos do sistema operacional. 
Devem possuir três características:
Os MMV lidam ainda com:
A virtualização é a capacidade de se executar simultaneamente, mais de um sistema operacional em um único servidor físico
Organizar vários servidores virtuais em um conjunto
reduzido de servidores físicos. 
Consolidação de aplicações 
Ambientes de teste e homologação de sistemas 
Execução de aplicações que utilizam diferentes SO´s 
Migração de sistemas 
Provisionamento de servidores 
Recuperação de desastres
MOTIVAÇÃO PELA VIRTUALIZAÇÃO: 
Diminuir custos com TI (hardware e software)
.Diminuir custos com energia elétrica. 
Diminuir lixo tecnológico. 
Flexibilidade e agilidade para criação de ambientes.
Administrar e gerenciar melhor os ambientes de
testes ou produção
MOTIVAÇÃO: 
A virtualização pode ocorrer no:
Nível da linguagem de programação
Nível de biblioteca
Nível do sistema operacional
Nível de abstração de hardware
Nível do conjunto de instruções
TIPOS DE VIRTUALIZAÇÃO
Total: interpretada por emulação de hardware por prover
uma máquina virtual com emulação completa do hardware
subjacente. Neste caso, um sistema operacional não
modificado é executado utilizando um VMM para receber e
traduzir as instruções em tempo real para as máquinas
virtuais. Esta técnica requer que cada característica do
hardware seja devidamente refletida na máquina virtual,
incluindo todo o conjunto de instruções de E/S, acesso à
memória e todos os demais elementos utilizados por um
software que fosse executado em uma máquina real.
Ocorre sem a inclusão de otimizações ao SO para
virtualização. 
Perdas significativas de desempenho
porque presenta sobrecarga, pois o
Monitor de Máquina virtual deve oferecer
à Máquina Virtual uma imagem
semelhante a um sistema real, com: BIOS
virtual; Espaço de memória virtual;
Gerenciamento de memória virtual;
Dispositivos virtuais
Permite a execução de sistemas
operacionais não modificados, o que é
ideal principalmente quando os códigos
fonte do sistema não estão disponíveis
(Microsoft)
Paravirtualização: é a possibilidade de modificar a
interface entre o VMM e os sistemas convidados,
oferecendo a estes um hardware virtual que é similar mas
não idêntico ao hardware real. Na paravirtualização o
sistema operacional da máquina virtual tem conhecimento
de que está operando em um ambiente virtualizado, tendo
o seu código modificado, removendo todas as instruções
que poderiam fazer acesso direto aos recursos físicos e
que venham a comprometer a integridade das máquinas
virtuais, substituindo-as por chamadas explícitas ao VMM
[LP10]. O VMM, por sua vez, provê interfaces de
comunicação para operações críticas de kernel, como
gerenciamento de memória, controle de interrupções e
time keeping. Técnica de virtualização em que o SO
hóspede é modificado para otimizar o desempenho. O SO
pode chama o monitor de máquinas virtuais para executar
uma instrução específica (recursos usados de forma
apropriada)
A desvantagem está na necessidade de
modificar o sistema operacional. Isso
acarreta implicações para os sistemas
operacionais sem código fonte disponível,
tais como Windows 2000/XP/Vista/8,
tendo assim, desvantagens de
compatibilidade e portabilidade
A vantagem dessa arquitetura é que suas
máquinas virtuais geralmente superam
em nível de desempenho as máquinas
virtuais implementadas utilizando a
arquitetura de VirtualizaçãoTotal.
Virtualização Assistida por Hardware: utiliza suporte
de hardware para virtualização, com intuito de auxiliar na
redução do impacto da camada de virtualização utilizando
novas features, diretamente no processador. Estes
aprimoramentos, como por exemplo as tecnologias de
virtualização da Intel (VT-x) e AMD (AMD-v) privilegiam a
execução de instruções de CPU, através de uma tecnologia
que permite que o VMM seja executado em um modo que
privilegia as chamadas que são automaticamente
capturadas pelo VMM, removendo a necessidade de
tradução binária ou paravirtualização. Nessa técnica, o
estado da máquina virtual é armazenado no Virtual
Machine Control Structures (VT-x) para família de
processadores Intel ou Virtual Machine Control Blocks
(AMD-V) para processadores AMD 
Esta arquitetura também permite que
múltiplos sistemas operacionais não
modificados sejam executados em
paralelo. Assim, todos os sistemas
operacionais são capazes de rodar sobre
o mesmo processador, realizando
acessos diretamente ao hardware, ou
seja, sem a emulação de um processador
Hardware Partitioning: técnica usual quando temos que configurar um servidor físico, um desktop,
ou notebook, etc
Hosted: virtualização é realizada com o auxílio de um sistema operacional hospedeiro
Stand alone/Bare Metal: A virtualização é realizada sem auxílio de um sistema operacional
hospedeiro
Tipos de Sistema de Virtualização:
 EMULAÇÃO Todas as instruções são executadas via software O desempenho tende a cair
 VIRTUALIZAÇÃO As instruções do sistema operacional em uma VM são repassadas para uma
máquina real executar O desempenho tende a ser melhor
A implementação da virtualização normalmente acontece por meio da: 
O ambiente que é virtualizado e que corresponde ao sistema operacional e aplicações deste SO. A
máquina virtual de processo somente existirá enquanto o processo correspondente a ela estiver em
execução
Máquina Virtual
Hypervisor
Gerenciamento dos recursos da máquina virtual, trata-se de uma aplicação que implementa uma camada
de virtualização, o que permite que diversos SOs funcionem sobre um mesmo hardware de forma
simultânea. Sempre esta presente enquanto o host/computador estiver ligado.
 CONTAINERS
é um ambiente isolado. 
Docker: é uma plataforma open source escrita na linguagem de
programação Go que agrupa partes de softwares de um sistema de
arquivo completo e que abrange todos os recursos necessários para a
sua execução. É uma plataforma de containers.
DIFERENTEMENTE DOS AMBIENTES VIRTUALIZADOS: 
Container fica mais leve se comparado a VM
São mais rápidos no boot
Economiza recursos
Economia de recursos
Maior disponibilidade dos sistemas
Facilita o gerenciamento
Replicação e padronização
Tudo pode ser instalado no servidor e é
armazenado nos containers. Dessa forma,
os mesmos softwares e as suas versões
podem ter uma execução facilitada em
qualquer ambiente de desenvolvimento.
O avanço tecnológico na área de
comunicação de dados, com o aumento
da capacidade de banda passante e da
capilaridade da rede, e da redução de
custos e de latência. No entanto, o
avanço tecnológico mais importante
se deu na área da virtualização. Esses
fatores lançaram os pilares do que hoje
conhecemos como computação em nuvem
(cloud computing).
 A virtualização do hardware, dos ambientes de desenvolvimento e da execução de serviços - capacidade
de prover uma infraestrutura de computação como serviço foi beneficiada pela evolução e
amadurecimento do conceito de virtualização. virtualização proporciona um alto grau de portabilidade e
de flexibilidade permitindo que várias aplicações, de sistemas operacionais diferentes, executem em um
mesmo hardware. A tecnologia de base da computação em nuvem é a virtualização. Assim, o componente
fundamental é a noção de máquina virtual que permite a definição de servidores para executar aplicações
em geral. Os servidores virtuais são criados com base em uma capacidade de processamento (número de
processadores), memória, armazenamento, interfaces de rede e o software que executam. O software a
ser executado forma a imagem da máquina virtual e possui todos os aplicativos e programas necessários,
incluindo o próprio sistema operacional. 
O emprego da virtualização o uso de recursos por demanda permitindo que um usuário, se necessário,
solicite, e pague, por mais recursos. Da mesma forma, um usuário pode devolver os recursos em excesso
e não pagar mais pelo seu uso. Essa flexibilidade é denominada de elasticidade e representa uma
resiliência às aplicações computacionais, isso é, uma capacidade de adaptação às modificações de carga
computacional. 
A tecnologia de base da computação em nuvem é a virtualização. Assim, o componente fundamental é a noção de máquina
virtual que permite a definição de servidores para executar aplicações em geral. Os servidores virtuais são criados com base em
uma capacidade de processamento (número de processadores), memória, armazenamento, interfaces de rede e o software que
executam. O software a ser executado forma a imagem da máquina virtual e possui todos os aplicativos e programas
necessários, incluindo o próprio sistema operacional. 
A computação em nuvem é, basicamente, a utilização massiva da virtualização para a criação de
um modelo de negócio. A computação em nuvem é a implantação do conceito de computação
como um serviço público e, em relação às grades computacionais, ela apresenta duas
novidades. Inicialmente, a computação em nuvem é um modelo de negócio onde um usuário
paga apenas pelo o que consome de recursos (modelo pay-as-you-go) e o provedor do serviço
mantém uma infraestrutura física (data center) que ele amortiza os custos de manutenção e
investimentos compartilhando e alugando seus recursos a diferentes usuários.
Esse é o berço da computação em nuvem: oferecer acesso a software (aplicações), a plataformas e a hardware
como serviços disponíveis na Internet. 
A definição do NIST elencou
cinco características
essenciais, denominados de
atributos de serviços, que a
computação em nuvem deve
ter: serviços por demanda na
forma selfservice, acesso
universal (ubíquo), conjunto de
recursos (pool), contabilização de
recursos e elasticidade. 
O modelo SaaS provê serviços de computação para o usuário final. Ele consiste
basicamente no aluguel de uma aplicação já operacional sem a necessidade que os usuários
passem por fases de aquisição, configuração e manutenção dessa aplicação. No SaaS, o
software está pronto para a ser usado. Os serviços oferecidos executam em plataformas
computacionais concebidas para serem utilizadas por um grande número de usuários, das mais
diferentes organizações e localizações geográficas. A forma de acesso ao serviço é através da
Internet, usualmente a partir de um navegador. São exemplos desses serviços o Google
Drive, o Gmail, Hotmail, Dropbox, SQL Azure e Oracle on Demand. Além disso, existem
softwares disponíveis para e-Science onde cientistas, a partir de navegados web, submetem
seus dados a simulações e análise de serviços. Nesse modelo, o usuário enxerga apenas o
software que precisa usar e não tem conhecimento de onde, realmente, estão localizados os
recursos empregados, nem quais linguagens de programação foram usadas no
desenvolvimento do serviço, nem o sistema operacional e o hardware sobre o qual a aplicação
executa. 
SaaS
PaaS
No modelo PaaS, o cliente final são os desenvolvedores de aplicações em software. Esse modelo
fornece a seus clientes um ambiente completo composto por todos os recursos necessários
para o desenvolvimento de software em uma ou mais linguagens de programação tais como
compiladores, depuradores, bibliotecas e um sistema operacional. É importante salientar que o
ambiente de desenvolvimento pode ter limitações quanto às linguagens de programação,
gerenciadores de banco de dados, sistema operacional, etc, ou seja, ele não é uma plataforma
completa genérica, mas sim uma plataforma completa para uma determinada finalidade.
Além do desenvolvimento de aplicações, no modeloPaaS, a plataforma pode ser “alugada” para
hospedar sites web ou para prover serviços do tipo SaaS. São exemplos de PaaS, o Windows
Azure Platform, Force.com, Google AppEngine, entre outros.
O IaaS, que é um modelo de provimento de serviços destinado a uma equipe de tecnologia
da informação (TI). Aqui é feito o fornecimento de um sistema computacional composto
por processadores, memória e armazenamento. Nesse caso, é necessário instalar e
configurar, por conta própria, todos os recursos necessários a utilização desse sistema,
tais como, compiladores, banco de dados e, inclusive, o próprio sistema operacional. Em relação
aos modelos de serviços anteriores, a tarifação no IaaS considera a quantidade de recurso que
é destinado ao cliente, durante um certo período de tempo, sem considerar se está ou não
sendo efetivamente empregado. Alguns exemplos de provedores IaaS são o Windows Azure,
Amazon Elastic Compute Cloud (EC2), Citrix, Eucalyptus, e o Rackspace Cloud. 
IaaS
Dos modelos de implantação: 
Nuvens públicas: são aquelas que seguem o conceito tradicional da computação em nuvem, isso é,
fornecer acesso aos recursos computacionais por demanda. Dessa forma, nas nuvens públicas, os
recursos são provisionados através da Internet e com uma granularidade fina, ou seja, se aloca e usa
apenas o necessário. Tipicamente, os recursos são externos a infraestrutura do usuário e a tarifação é feita
em função da utilização dos recursos. É importante salientar que o termo “público” não significa acesso
gratuito aos recursos da nuvem, mas sim que qualquer público pode usá-la mediante o respeito às suas
regras de utilização e tarifação. Normalmente, as nuvens públicas oferecem os três modelos de serviços
(SaaS, PaaS e IaaS). Os recursos computacionais, como processadores, memória e armazenamento, são
localizados dentro de um ou mais data centers, pertencentes a uma única organização que fornece o
serviço de computação em nuvem. Os provedores de computação em nuvem, como o Google, Windows
Azure, seguem esse modelo de implantação. 
Nuvens privadas: possuem uma infraestrutura que é operacionalizada e utilizada por uma única
organização. A gestão e a localização dos recursos computacionais podem ser tanto da própria
organização como terceirizado. Na realidade, esse tipo de nuvem é bastante polêmico, já que não se
beneficia do modelo de negócio clássico onde o usuário da nuvem paga por utilização. Aqui a organização
arca com o custo total da plataforma, incluindo a infraestrutura física de energia, refrigeração, etc, e de sua
manutenção e gerenciamento, ou se, for o caso, o custo de terceirização de todos esses elementos.
Nuvens comunitárias: possuem uma infraestrutura física, isso é, seus recursos, compartilhadas por
organismos que possuem um mesmo objetivo comum e que, normalmente, estão sujeitas a um mesmo
tipo de restrição legal ou de segurança. Um exemplo desse tipo de nuvem são as iniciativas
governamentais onde os recursos computacionais pertencentes a órgãos como ministérios, ou autarquias,
podem ser compartilhados para prover serviços de governança e cidadania. Nesse caso, os recursos
podem pertencer a esses organismos, ou serem locados de terceiros, usando provedores de serviços de
hospedagem ou de computação em nuvem (PaaS ou IaaS). Dessa forma, a localização física dos recursos
pode ser interna ou externa as organizações e os custos podem ser compartilhados entre os membros da
comunidade. O modelo de serviço mais comumente encontrado nas nuvens comunitárias é o SaaS, na
forma de portais web.
Nuvens Híbridas: são as nuvens compostas por duas ou mais nuvens de outros tipos. As nuvens híbridas
nada mais são que múltiplas nuvens conectadas entre si. 
EXEMPLO DE VIRTUALIZADORES
Solução multiplataforma (Windows, Linux)
● Atualmente desenvolvida e mantida pela Oracle
● Fácil de utilizar e instalar
● É gratuita!
● Fornece um pacote de device drivers denominado "Guest Additions" para melhorar o desempenho
KVM (Kernel-Based Virtual Machine) QEMU (Machine Emulator)
DOCKER
Middleware IaaS: É essa camada que prove as
capacidades básicas de virtualização e de
gerenciamento dos recursos da nuvem. 
Middleware de computação de nuvem:
responsável por, entre outros, permitir a
solicitação dos recursos virtuais, configurá-los, e
autenticar usuários.
Tecnologia de virtualização open
source baseada no Linux®.
Com a KVM, você pode transformar o Linux
em um hipervisor, permitindo que uma
máquina host execute vários ambientes
virtuais isolados, chamados máquinas
guest ou máquinas virtuais.
Bare-metal:
Converte o Linux em um hipervisor tipo-1
(bare-metal)Para executar VMs, todos os
hipervisores precisam de alguns
componentes em nível de sistema
operacional, como gerenciador de
memória, agendador de processos, stack
de entrada/saída (E/S), drivers de
dispositivo, etc.
Software open source que serve para
emular um processador
ARQUITETURA ORIENTADA A SERVIÇOS (SOA)
Acoplamento fraco: os servicos mantem uma relação que minimiza as dependencias e exige
apenas o conhecimento um do outro.
Reusabilidade: a lógica é dividida em serviços com a intenção de promover a reutilização. 
Contrato de Serviço: serviços de adesão a um acordo de comunicações, tal como definidido
coletivamente por uma ou mais descrições de serviço relacionadas aos documentos. 
Autonomia: os serviços tem controle sobre a lógica que encapsulam. 
Abstração: além do que está descrito no contrato, os serviços permitem esconder a lógica do
mundo exterior. 
Composição: as coleções de serviços podem ser coordenadas e reunidas a partir da composição
de serviços. 
Descoberta: os serviços são projetados para serem externamente bem descritos, encontrados e
avaliados através dos mecanismos de descoberta. 
Sem estado: os serviços minimizam o armazenamento de informações específicas de uma
atividade. 
A infraestrutura se baseia em duas entidade: consumidores e prestadores de serviços e possuem oito
princípios fundamentais: 
Um outro elemento fundamental da arquitetura SOA é o registro de serviços ou diretório central de
serviços que interage tanto com o servidor, quanto com o consumidor. Essa interação é estabelecida
de forma que um provedor possa registrar/publicar os serviços em um determinado diretório, assim
como um consumidor utiliza este registro para consultar e encontrar o serviço requisitado.
 WEB SERVICES
Compreender os principais conceitos de arquiteturas SOA;
Reconhecer conceitos de Web Services, compreender por que é
importante estudar esses conceitos e como eles darão suporte ao
desenvolvimento de aplicações em nuvem;
Compreender as vantagens e desvantagens, semelhanças e diferenças
entre SOA e REST.
SEMANA 5
é um conjunto de funcionalidades bem definidas em forma de serviços
disponibilizados na rede.
São um sistema de software projetado para apoiar interações máquina-para-máquina interoperáveis
pela rede, fornecendo uma interface descrita em um formato processável por máquina
(especificamente a WSDL). É composto por duas estruturas: 
Serviço: O serviço consiste num módulo de software instalado numa plataforma computacional com
acesso `a rede e oferecido pelo “provedor de serviços”. Um serviço existe para ser usado por um
consumidor, podendo funcionar também como um cliente de outro serviço.
Descrição do serviço: contem os detalhes da interface e da implementação de um serviço, o que inclui
os tipos de dados, operações, informação de ligação (binding),e localização de rede. Pode ainda incluir
metadados e informação de categorização para facilitar as atividades de descoberta e utilização por
consumidores do serviço.
Fracamente acopladas
Transparentes em localização;
Independentes de protocolo
Tres características:
Web Services caracterizam-se por ser uma tecnologia para computação distribuída baseada na Web
Independente de linguagem ou platafo
Troca de mensagens XML
Descreve uma operação a ser executada ou dados a serem trocados
Requer que o conteúdo de registros de dados seja confiável.
Problemas de desempenho.
Custo maior para processardocumentos XML.
Padrões para integração de processos de negócio e gerenciamento
de transações podem ser complexos em alguns casos
A arquitetura orientada a serviço serve para resolver downtime, pois estrutura as apps
em serviços distintos e reutilizáveis que se comunicam por meio de um ESB (Enterprise
Service Bus). 
Os WEB SERVICES constituem uma
tecnologia emergente do SOA. A grande
popularidade delas ocorreu devido à
adoção de protocolos e padrões abertos
como o HTTP e XML visando solucionar o
problema de integrar aplicativos de
sistemas heterogêneos => alcançou a
interoperalidade. 
Protocolos dos WEB SERVICES: 
Cria a descrição do WEB SERVICE (WSDL)
Publica o arquivo WSDL no repositório
UDDI
O ciente faz uma busca no repositório
Obtém o WSDL do serviço a partir do qual
cria um cliente e
finalmente comunica-se com o serviço
Passos que o o provedor de serviços
responsável percorre para manter o serviço :
1.
2.
3.
4.
5.
RESTful Representational State Transfer ou Transferência de Estado Representacional)
Estilo Arquitetural*
Um estilo arquitetural para definição de sistemas fracamente acoplados (a WEB é uma instância). 
A Web usada corretamente (ou seja, não como um protocolo de transporte) - HTTP
Qualquer coisa que use HTTP e XML (que não seja SOAP)
São operações que possuem três características: são autocontidas, as respostas incluem hyperlinks que
permitem descobrir novos recursos RESTful e “uma descrição post hoc (depois do fato) das
funcionalidades que fizeram a Web ser tão bem sucedida”. Possuem, ainda, três definições:
1.
2.
3.
*princípios gerais que guiam a criação de uma arquitetura que, por sua vez, refere-se a projeto
com a solução para um determinado problema dado um conjunto de restrições
RESTRIÇÕES DA ARQUITETURA
 Identificação de recursos
 Interface uniforme 
 Mensagens autodescritivas 
 Estado de aplicação determinado pela hipermídia
 Interações sem estado (stateless)
1.
2.
3.
4.
5.
escalabilidade, usabilidade, acessibilidade,
facilidade de composição 
que visam: 
a ideia de RESTful é evitar transações longas nas aplicações
Surgiram como uma forma de simplificar o desenvolvimento de serviços web
O elemento fundamental da arquitetura RESTful é o recurso. Um recurso pode ser uma página web,
figura, imagem ou vídeo. Para localizar os recursos envolvidos em uma interação entre os componentes
da arquitetura RESTful é utilizado o chamado Identificador de Recurso.
IDENTIFICAÇÃO DE RECURSOS: Dê nome a tudo aquilo que você quiser mencionar. O estado de
uma aplicação é representado também como um recurso. I. Um serviço web RESTful expõe um
conjunto de recursos que permitam identificar os alvos da interação com seus clientes. Os recursos
são identificados por URIs, que proporcionam um espaço de endereçamento global para a descoberta
de recursos e serviços
1.
 
 INTERFACE UNIFORME: Um mesmo conjunto pequeno de operações se aplica a tudo. Um pequeno
conjunto de verbos se aplica a um grande conjunto de substantivos. Identifica as operações que são
candidatas à serem otimizadas (GET e HEAD, seguras; PUT e DELETE, pode ser utilizado várias vezes
sem alteração no resultado - idempotência; POST; efeitos colaterais). Constrói funcionalidades baseadas
nas propriedades úteis dessas operações. Os recursos são manipulados através de um conjunto fixo de
quatro operações: PUT, GET, POST e DELETE. O método PUT cria um novo recurso, que pode então ser
apagado usando o método DELETE. O método GET recupera o estado atual de um recurso em alguma
representação. O método POST transfere um novo estado para um recurso.
MENSAGENS AUTODESCRITIVAS: Recursos são entidades abstratas que são acessados via
representações de recursos podendo se basear em restrições diferentes. Como explicado
anteriormente os recursos são dissociados de sua representação, para que seu conteúdo possa ser
acessado em uma variedade de formatos. Os metadados sobre o recurso são utilizados, por exemplo,
para controlar o cache, detectar erros de transmissão, negociar o formato de uma representação
adequada e realizar controle de autenticação ou acesso
 ESTADO DE APLICAÇÃO DETERMINADO PELA HIPERMÍDIA: Representação de recursos possuem
links navegáveis para recursos identificados e aplicações RESTful navegam ao invés de chamar. 
INTERAÇÃO SEM ESTADO - STATELESS: significa mover o estado para os clientes ou recursos -
consequência mais importante: evitar manter o estado da aplicação no lado do servidor, o estado do
recurso é gerenciado no servidor e do cliente, gerenciado no cliente (problemas com segurança se
tornam mais importantes aqui). Entre cada interação com um recurso as mensagens de solicitação são
autossuficientes. Interações stateful são baseadas nos conceitos de transferência de estado explícito.
Existem várias técnicas para trocar de estado, por exemplo, URI reescrita, cookies e campos de
formulário ocultos. O estado pode ser incorporado em mensagens de resposta para apontar para os
futuros estados válidos da interação. 
1.
2.
3.
4.
5.
WEB = URL + HTTP + (HTML | XML)
URL: são um esquema de identificação universal
legível para identificar “coisas” 
É importante fazer com que todas as coisas
possam ser identificadas unicamente. HTTP: é essencial para a implementação de
Interfaces Uniformes. Define um conjunto
pequeno de métodos para interagir com recursos
identificados com uma URI. 
é um protocolo que utiliza o formato XML para realizar chamadas remotas. As requisições
são codificadas e enviadas via HTTP utilizando o método POST. As respostas XML são
embutidas no corpo da resposta HTTP. Não utiliza o HTTP GET, somente o POST. 
PADRÕES WEB SERVICES são essencialmente baseados em três padrões fundamentais:
XML-RPC
é um mecanismo de codificação/decodificação de valores para intercâmbio de dados.
Possui uma sintaxe de alto nível, fácil de ser entendida, facilitando o trabalho dos
programadores e dos computadores. É o formato ideal para transmissão de dados
orientada a objetos através da rede. O formato JSON é um modelo de formato para
intercâmbio de dados, não é um documento.
JSON
O protocolo SOAP é um dos principais componentes da tecnologia web services. Além de
definir a sintaxe, a semântica e a ordem das mensagens que serão trocadas entre
aplicações servidores, o SOAP é um protocolo de comunicação de dados extensível para
troca de informações em ambientes descentralizados e distribuídos. Para permitir a
comunicação entre duas aplicações de forma interoperável, este protocolo estabelece um
formato de mensagem padrão baseado em XML.
SOAP
O protocolo (como nos comunicamos)
O host / porta (onde está na rede)
O caminho do recurso (com que recurso estamos nos comunicando)
De um URI, sabemos:
Outras linguagens proveem funcionalidades similares ao SOAP, como CORBA, Java RMI e
DCOM, mas é importante destacar que o protocolo SOAP é escrito completamente em
XML e independente de plataforma e linguagem.
WSDL
uma especificação que provê recursos para descrever web services utilizando o formato
XML. Esta especificação permite estabelecer a comunicação entre os web services
provendo descrições para as localizações e descoberta de serviços (endpoints)
padronizados, fornecendo as informações necessárias para estabelecer a integração com
outros serviços e aplicações. A especificação WSDL define uma linguagem que permite
que os web services possam publicar uma interface dos seus serviços com informações
baseada no formato das mensagens de requisição e resposta. Sendo assim, a WSDL
descreve um web service basicamente em duas partes: uma abstrata e outra concreta.
A parte abstrata descreve a interface do serviço propriamente dita, ou seja, descreve
como o serviço pode ser invocado por seus clientes. Assim como, quais são as operações
disponíveis, quais são os parâmetros de entrada e saída que uma determinada operação
utiliza para enviar e receber mensagens, e como as mensagens envolvidas são descritas.
A parte concreta define os protocolos, formatos de dados e o endereço onde o serviço
estará disponibilizado.A descrição das informações concretas pode ser definida através
dos seguintes componentes: service, endpoint, binding, types e documentation. 
UDDI
é uma especificação tecnica para descrever, descobrir e integrar os web services. Em seu
núcleo, UDDI consiste de duas partes. Primeiro, UDDI é uma especificação tecnica para a
construção de um diretório distribuído de negócios e serviços web. Os dados são
armazenados em um formato XML específicos, e a especificação UDDI inclui detalhes da
API para pesquisa de dados existentes e publicação de novos dados.
Segundo, o UDDI Business Registry é uma implementação operacional completa da
especificação UDDI e são divididos em três categorias principais:
Páginas Brancas: Inclui informações gerais sobre uma empresa específica. Por exemplo, nome da
empresa, descrição do negócio, informações de contato, endereço e numeros de telefone. Pode
também incluir identificadores de negócio único.
Páginas Amarelas: Inclui os dados de classificação geral da empresa ou do servi¸co oferecido. Por
exemplo, esses dados podem incluir a indústria, produto, ou códigos geográficos com base em
taxonomias padrão.
Páginas Verdes: Esta categoria contém informações técnicas sobre um serviço web. Geralmente,
isso inclui um ponteiro para uma especificação externa e um endereço para invocar o serviço web. O
UDDI não é restrito para descrever serviços web baseados em SOAP. Pelo contrário, UDDI pode ser
usado para descrever qualquer serviço, a partir de uma única página da web, e-mail ou todo o
caminho até o SOAP, CORBA e Java RMI.
Entender o funcionamento da arquitetura de microsserviços e do
ambiente operacional para executar os pacotes de software em
contêineres;
Aprender sobre um conjunto de produtos de plataforma como serviço que
utiliza virtualização no nível do sistema operacional: os chamados dockers.
SEMANA 6
ARQUITETURA DE MICROSSERVIÇOS (MSA)
Microsserviços são uma abordagem de arquitetura para a
criação de aplicações. Utilizado para projetar um aplicativo que
seja multilíngue, facilmente escalável, fácil de manter e
implantar, altamente disponível e com minimização de falhas. 
Em uma arquitetura de microservices, cada microservice possui uma tarefa simples e se comunica com os
clientes ou com outros microservices usando mecanismos de comunicação leves, como solicitações de API
REST. Os microsserviços seguem o modelo share-nothing e são executados como processos sem estado. 
Normalmente, cada microsserviço é executado em um contêiner que fornece um ambiente de tempo de
execução leve.
Devem ser consideradas para aplicativos que exigem altos níveis de escalabilidade, flexibilidade e
confiabilidade. Você pode usar uma linguagem de programação e estrutura diferentes para desenvolver
cada componente.
Os microsserviços (ou microservices, em inglês) são uma arquitetura e uma abordagem para escrever
programas de software. Com eles, as aplicações são desmembradas em componentes mínimos e
independentes. Diferentemente da abordagem tradicional monolítica em que toda a aplicação é criada
como um único bloco, os microsserviços são componentes separados que trabalham juntos para realizar
as mesmas tarefas. Cada um dos componentes ou processos é um microsserviço. Essa abordagem de
desenvolvimento de software valoriza a granularidade, a leveza e a capacidade de compartilhar processos
semelhantes entre várias aplicações. Trata-se de um componente indispensável para a otimização do
desenvolvimento de aplicações para um modelo nativo em nuvem.
Os microsserviços são pequenos,
independentes e fracamente
acoplados. Uma única equipe pequena
de desenvolvedores pode escrever e
manter um serviço.
Cada serviço é uma base de código
separado, que pode ser gerenciado
por uma equipe de desenvolvimento
pequena.
Os serviços podem ser implantados de
maneira independente. Uma equipe
pode atualizar um serviço existente
sem recompilar e reimplantar o
aplicativo inteiro.
DIFERENÇAS COM SOA:
Os microsserviços podem se comunicar
entre si, normalmente de maneira
stateless. Dessa forma, as apps assim
criadas podem ser mais tolerantes a falhas
e depender menos de um único ESB. Além
disso, as equipes de desenvolvimento
podem escolher as ferramentas que
desejarem, pois os microsserviços
conseguem se comunicar usando APIs
independentes de linguagem.
CARACTERÍSTICAS DO MSA:
https://www.redhat.com/pt-br/topics/cloud-native-apps/what-is-an-application-architecture
https://www.redhat.com/pt-br/topics/integration
https://www.redhat.com/pt-br/topics/cloud-native-apps
https://www.redhat.com/pt-br/topics/cloud-native-apps
https://www.redhat.com/pt-br/topics/cloud-native-apps
Todo o aplicativo é construído como uma única
unidade que contém toda a lógica de negócios.
construções monolíticas. Nelas, todas as
partes implantáveis ficam contidas na própria
aplicação. Essa abordagem tem algumas
desvantagens: quanto maior for a aplicação,
maior será a dificuldade para solucionar
problemas e adicionar novas funcionalidades
rapidamente.
Na arquitetura de microsserviços, a lógica de negócios é organizada
como vários serviços acoplados livremente.
Em uma arquitetura de microsserviços, os serviços são executados em
vários servidores.
Os serviços são responsáveis por manter seus próprios dados ou o estado externo. Isso é diferente do
modelo tradicional, em que uma camada de dados separada lida com a persistência de dados.
Os serviços comunicam-se entre si por meio de APIs bem definidas. Detalhes da implementação
interna de cada serviço ficam ocultos de outros serviços.
Suporte à programação poliglota. Por exemplo, os serviços não precisam compartilhar a mesma pilha
de tecnologia, bibliotecas ou estruturas.
DOCKER
CONTAINER
Criar, executar, testar e implantar aplicações distribuídas dentro de containers de software
Empacotar uma aplicação de forma padronizada para o desenvolvimento de software, contendo:
código, runtime, ferramentas, bibliotecas, etc. 
Possibilita a implantação de aplicações de forma mais ágil, confiável e estável, em qualquer ambiente
É uma tecnologia Open Source que permite: 
Principais componentes:
Utiliza uma arquitetura cliente-servidor 
Cliente conversa com o daemon docker 
Cliente e daemon docker podem executar no mesmo sistema 
Cliente docker pode ser conectar a um daemon remoto 
Cliente docker e daemon docker se comunicam por meio de REST API, sockets, etc.
Elementos:
Isolamento
Simplicidade
Leve
Ampla utilização pela comunidade
Definição de fluxos de trabalho
OFERECE
Maneira de virtualizar recursos em nível do SO que permite executar uma aplicação e
suas dependências em processos com recursos isolados. 
Códigos, configurações de uma aplicação podem ser empacotados em elementos que
oferecem mais produtividade para os desenvolvedores e controle de versões.
Tem como base uma imagem docker: imagem é uma classe java e container é uma
instância desta classe
Confiabilidade 
Consistência de implantação 
Controle mais granular dos recursos --
> Melhora aumentando a eficiência da
infraestrutura.
OFERECE
Execução e distribuição de containers e imagens 
Controle dos recursos executados 
Constrói imagens 
Executa e gerencia containers 
Interage via REST API
Gerencia o consumo dos recursos 
Previne de violação externa 
Isolamento de processos 
Portabilidade de aplicações
IMAGEM
Templates para criação de containers
São imutáveis, pois para executá-las é necessário criar uma instância da mesma (container)
São construídas em camadas e facilita a reutilização e manutenção
É um ambiente encapsulado pronto para ser replicado
DOCKER REGISTRY Uma espécie de repositório Git 
Imagens podem ser versionadas
DOCKERFILE
Scripts com comandos para:
•Criar imagens 
•Executar comandos 
•Criar variáveis de ambiente 
•Copiar arquivos e pastas do host para a imagem
PLATAFORMA DOCKER
docker build: constrói uma imagem a partir do dockerfile
docker images: lista todas as imagens de um docker hosts
docker run: Executa uma imagem
docker os: lista todas as instâncias paradas e em execução
DOCKER CLI: 
Docker Engine

Outros materiais