Você está na página 1de 346

INFRAESTRUTURA PARA

SISTEMAS DE SOFTWARE

Introdução às Redes de Computadores


• As redes de computadores foram criadas com o intuito primário de
permitir que:
• Dois ou mais elementos computacionais pudessem se comunicar
• Para compartilhar recursos
• Áudio, vídeo, imagens, acessar aplicações, para operar máquinas
remotamente

• As redes atuais permitem que centenas de milhares de aplicações


possam trocar dados
• Pessoas com pessoas
• Pessoas com empresas
• Empresas com empresas
• Dispositivos com outros dispositivos sem a intervenção humana
• As redes de computadores são formadas por diversos elementos
que envolvem inúmeros blocos:
• Usuários e aplicações
• Roteadores
• Switches
• Servidores
• Meio físico cabeado, meio físico aéreo
• Links de comunicação
• Celulares, tablets, desktops

• Diferentes tecnologias de comunicação


• Diversos protocolos para garantir que a comunicação ocorra
• Para um elemento computacional (hoje um celular, um tablet, um
desktop, notebook) ser conectado a uma rede de dados é preciso:
• Uma placa de rede
• E que esta placa de rede esteja ligada por algum link (meio
cabeado ou meio aéreo) a um elemento de comutação

• É por meio da placa de rede que todos os sinais são transmitidos pelo
cabo, ou pelo ar
• Em seguida, esses sinais são interpretados tanto pelo emissor quanto
pelo receptor para que as informações possam ser apresentadas aos
usuários das aplicações
• Denominamos de elemento de comutação, no contexto de uma rede
local, aquele que:

• Vai receber dados em algum formato de um emissor, e vai comutá-


lo/processá-lo e encaminhar o mesmo para o receptor da informação,
estando ele ou não na mesma rede do emissor
• Por exemplo: Suponha que o emissor A queira enviar um arquivo para o
emissor B e que ambos estejam na mesma rede (chamamos essa rede
de rede local). O repasse dos dados de forma bastante simplista será
feita por um elemento chamado switch
• Se A estiver em uma rede e B estiver em outra (ou seja em duas redes
distintas), será preciso que outro elemento denominado roteador se
encarregue de encaminhar os dados/pacotes entre elas.
• Como destacamos anteriormente, diversos são os elementos que
compõem uma rede de computadores

• Cada um desses elementos opera/funciona obedecendo regras,


para que os usuários/computadores possam se comunicar

• Devido à complexidade envolvida, a concepção de uma rede


considera que os dados são transportados utilizando-se de
diversas camadas no processo de comunicação
• Vamos abordar um exemplo, que apesar de não ser ligado ao
ambiente computacional, servirá de base para você entender
como tudo isso funciona

• Suponha os seguintes elementos para organizarmos alguns


dados em camadas:

• 1 palito de fósforo
• 1 caixa de fósforo
• 1 caixa de sapato
• 1 caixa de papelão
• 1 caixa de um fogão de 4 bocas
• Suponha a sequência do emissor, o qual deseja enviar um
palito de fósforo a um receptor:

Coloque o palito na caixa


de fósforo

Coloque a caixa de fósforo


na caixa de sapato

Coloque a caixa de sapato


na caixa de papelão

Coloque a caixa de Envie a caixa do fogão


papelão na caixa do fogão para o receptor
• Suponha a sequência do receptor, o qual deseja enviar um
palito de fósforo a um emissor:

Recebe a caixa do fogão

Retire a caixa de
papelão da caixa do
fogão
Retire a caixa de sapato
da caixa de papelão

Retire a caixa de fósforo Retire o palito de fósforo


da caixa de sapato da caixa de fósforo
ARQUITETURA EM CAMADAS
• O que acabamos de discutir anteriormente é a organização da
comunicação na forma de camadas

• Os computadores trocam informações obedecendo uma


arquitetura em camadas, com cada uma tendo regras/protocolos
bem estabelecidos

• Vamos tratar de forma simples de dois tipos de modelos de


arquitetura em camadas

• Modelo OSI
• Modelo TCP/IP
MODELO OSI

• O modelo OSI (Open System Interconection) é conhecido por


ser um modelo de referência, que não foi implementado na
prática. Ele possui as camadas descritas a seguir:
MODELO TCP/IP

• O modelo TCP/IP é o padrão de comunicação na maioria das


redes, sendo utilizado na prática por inúmeros elementos de
comunicação em redes locais ou remotas. Diferentemente do
modelo OSI, o TCP/IP possui 4 camadas:
OSI x TCP/IP
• Se comparamos os dois modelos veremos que o TCP/IP é mais
simples, do ponto de vista do número de camadas
Modelos de Camadas
• Mas qual a razão para organizar a comunicação em camadas?
• A complexidade de todo o processo
• Os tipos de elementos que compõem todo o processo de
comunicação
• Fabricantes de equipamentos distintos
• Diferentes hardwares
• Diferentes aplicações
• Diferentes equipamentos de roteamento

• Organizar em camadas permite que cada camada seja responsável


por uma tarefa/grupo de tarefas, no processo completo de
comunicação entre duas entidades comunicantes.
Funções gerais das camadas do TCP/IP
• Vejamos então as funções gerais de cada camada do modelo
TCP/IP
• 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
• Veja que no exemplo anterior, estabelecemos uma regra
para enviar e obter o simples palito de fósforo

• 5 passos no emissor
• 5 passos no receptor

• Vamos trazer isso para o mundo dos computadores

• E como isso ficaria no modelo TCP/IP supondo que temos uma


aplicação que deseja enviar uma mensagem para outro
computador?
• A comunicação entre os hosts e aplicações
• C indica o cabeçalho que é utilizado em cada camada,
tanto no emissor quanto no receptor. M é a mensagem

• Muitos detalhes estão ocultos porque serão estudados


em Redes de Computadores

emissor receptor
mensagem M aplicação
M aplicação
segmento C M transporte
C M transporte
datagrama C C
t
M rede
C C M rede
C C
C Cn Ct
M enlace
C M enlace
quadro n t
l n t
física Canal de Comunicação física
A Internet
• O que é?
Rede móvel
PC ISP global
servidor • milhões de dispositivos de
computação conectados:
laptop hospedeiros = sistemas finais
sem fio Rede doméstica
celular • executando aplicações de ISPregional
portátil
rede
Pontos ❑ enlaces de comunicação
de acesso Rede institucional
❖ fibra, cobre, rádio, satélite
Enlaces
com fio ❖ taxa de transmissão =
largura de banda
Roteador ❑ roteadores: encaminham
pacotes (pedaços de dados)
Aplicações da Internet
• Inúmeras são as aplicações que “rodam” na Internet
• Serviços de e-mail
• Serviços de streaming de áudio e vídeo
• Serviços de compartilhamento de arquivos
• Serviços e pagamento on-line
• Aplicação para acesso seguro a dados sigilosos

• Algumas das aplicações acima podem ser executadas fora do


que chamamos de Web, ou WWW, pois são anteriores à Web
como ela é conhecida hoje
A World Wide Web
• Vamos finalizar apresentando rapidamente o que é a WWW, pois
vamos discutir melhor esse assunto na Semana 03

• A WWW ou Web refere-se a um sistema de documentos em


hipermídia que são interligados por uma rede de computador
• Mais comumente na rede mundial de computadores que é a
Internet

• E a Internet?
• Internet Conjunto de redes interconectadas cuja função é
possibilitar a comunicação de inúmeras aplicações distribuídas
Referências

● Redes de Computadores e a Internet. J.F Kurose e K.W. Ross.


5ª e 6ª Edições
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Introdução às Redes de Computadores


INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Principais Protocolos de Comunicação


ROTEIRO
• Importância dos protocolos na comunicação

• O que é um protocolo?

• Protocolos fundamentais para a comunicação das aplicações


que utilizam a Internet
• TCP
• UDP
• IP
Importância de um protocolo de comunicação?
Protocolos humanos:
● “Que horas são?”
● “Eu tenho uma pergunta.”
● Como abrir/fechar uma porta?
● Como fazer um churrasco?
Protocolos de comunicação em redes:
• Máquinas no lugar de humanos
• Toda atividade de comunicação na Internet é governada por
protocolos
Importância de um protocolo de comunicação?

Importante
• Para mensagens específicas que enviamos e ações
específicas que realizamos

• Há respostas específicas a serem recebidas

• Exemplo: saber que horas são


O que é um protocolo de comunicação?
Protocolo de horas (humanos/computadores)
O que é um protocolo de comunicação?

Todo protocolo considera:


• O serviço a ser oferecido
• O ambiente onde ele executa, incluindo os serviços utilizados
pelo protocolo
• O vocabulário de mensagens utilizado para implementá-lo

• O formato de cada mensagem do vocabulário

• Os algoritmos que tentam garantir a troca de mensagens e a


integridade do serviço oferecido
O que é um protocolo de comunicação?

Em resumo
• Protocolos 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)
• Os protocolos consideram:
• Semântica (regras): temporizações, controle de erros, etc.
• Sintaxe (formato): codificação, quadro, etc.
O que é um protocolo de comunicação?

Segundo Kurose & Ross

“Um protocolo define o formato e a ordem das mensagens


trocadas entre duas ou mais entidades comunicantes, bem
como as ações realizadas na transmissão e/ou recepção
dessas mensagens”.
PROTOCOLOS DE COMUNICAÇÃO FUNDAMENTAIS DA
INTERNET

• Na comunicação de aplicações que utilizamos na Internet há


diversos protocolos

• Lembre-se que na semana anterior discutimos sobre modelos


de comunicação e suas camadas

• Cada camada possui um ou mais protocolos, dependendo do


modelo de camadas utilizado

• Para esta disciplina, consideramos o modelo TCP/IP com suas


camadas e protocolos
PROTOCOLOS DE COMUNICAÇÃO FUNDAMENTAIS DA
INTERNET

• A Internet é composta de vários tipos de redes que operam


com inúmeros protocolos de comunicação

• No contexto da infraestrutura de comunicação, grande parte


da Internet opera no modelo TCP/IP.

• Vamos abordar de forma simples 3 protocolos deste modelo


• IP
• TCP
• UDP
PROTOCOLOS DE COMUNICAÇÃO FUNDAMENTAIS DA
INTERNET
• Na estrutura em camadas, apresentada na aula anterior

mensagem M aplicação
M aplicação
C
segmento C M transporte M transporte
C t
C
datagrama C C
t
M rede M rede
C n
C t
C
quadro
C Cn Ct
M enlace M enlace
l n t
l n t
física Canal de Comunicação física

IP - Camada de rede
TCP - Camada de transporte
IP – Internet Protocol

• O IP é um protocolo representante da camada de rede do


modelo TCP/IP
• A Camada de rede tem como funções principais:
• 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
Ou seja, tudo o que diz respeito à comunicação Host a Host, está
descrito na camada rede
IP – Internet Protocol
• Com o protocolo IP
• Não existe estabelecimento de conexão na camada de rede

• Os roteadores utilizam informações do protocolo para


encaminhar pacotes/datagramas entre origem e destino
• 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
IP – Internet Protocol
Formato de um datagrama IPV4

Data
TCP – Transmission Control Protocol
• O TCP, como já descrito, faz parte da camada de transporte do
modelo TCP/IP
• Dentre as funções desta camada temos:
• 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
• Entidade de transporte: hardware/software que executa as funções
da camada de transporte (kernel do SO, biblioteca vinculada a
aplicações de rede, placa de interface de rede, etc.)
TCP – Transmission Control Protocol

• A camada de transporte é uma camada fim a fim, que liga a


origem ao destino

• Um programa da máquina de origem mantém uma conversa


com um programa semelhante instalado na máquina de destino,
utilizando cabeçalhos e mensagens de controle

• Segmento - unidade de dados trocada entre entidades da


camada de transporte
TCP – Transmission Control Protocol

• A camada de transporte
por meio de protocolos
como o TCP fornece
comunicação lógica entre
processos de aplicação em
diferentes hosts

• Os protocolos de transporte
são executados nos
sistemas finais da rede
TCP – Transmission Control Protocol

Serviços de Transporte
• Confiabilidade na entrega dos
dados
• Controle de congestionamento,
controle de fluxo
• Orientado à conexão

• É preciso estabelecer uma conexão


ponto a ponto e fim a fim entre duas
aplicações separadas por uma rede
para iniciar a transferência dos
dados
UDP – User Datagram Protocol
Formato do Segmento UDP

DADOS DA APLICAÇÃO
UDP – USER DATAGRAM PROTOCOL
• Protocolo de transporte da Internet
“simplificado” Por que existe um UDP?
• Serviço de “melhor esforço”, pois os • não há estabelecimento
segmentos UDP podem ser: de conexão
• perdidos • não há estado de conexão
nem no transmissor, nem
• entregues fora de ordem para a no receptor
aplicação de destino
• cabeçalho de segmento
• Sem conexão: reduzido
• não há apresentação entre o UDP
emissor e o receptor
• cada segmento UDP é tratado de
forma independente dos outros
UDP – User Datagram Protocol
Formato do Segmento UDP
32 bits

porta origem porta destino


tamanho checksum

Dados de
Aplicação
(mensagem)
REFERÊNCIAS

∙ Redes de Computadores e a Internet. J.F Kurose e K.W. Ross.


5ª e 6ª Edições
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Principais Protocolos de Comunicação


INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Endereçamento IP
ROTEIRO

• Endereçamento IPV4
• Classes IPV4
• Máscara de Rede
• Sub-Redes
• Como fazer Sub-Rede
ENDEREÇAMENTO IPV4
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
Endereçamento IPV4
• 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

• 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

• ICANN (Internet Corporation for Assigned Names and


Number)
● distribui IPs
Classes IPV4
● Endereçamento “Classfull”
● Uso ineficiente do espaço de endereçamento, exaustão do espaço
de endereços
● Ex.: rede de Classe B aloca endereços para 65K hosts, mesmo se
só existem 2000 hosts na rede

● 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
Máscara de rede
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

Endereço do host

Endereço da rede - 10.1.0.0


Máscara de rede
■ Para determinar o endereço de broadcast
● Faz-se um OR bit a bit do endereço IP do host com os números
destinados à rede em 0 e os demais em 1

Endereço do host

Endereço de broadcast 📫 10.1.0.255 (último endereço da classe)


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
Sub-Redes

• O host é dividido em número da sub-rede e número do host


• O número IP é agora interpretado como:
<network number><subnet number><host number>

• A divisão é feita usando uma máscara de rede “não padrão” que


permita extrair os endereços de rede e de máquina
corretamente (CIDR)
Sub-Redes

• Por exemplo: uma rede classe B

16 bits 16 bits
<network number><host number>

● 28-2 hosts em cada sub-rede


– máscara = 255.255.255.0
Como Fazer Sub-Rede
● Antes de "reduzir" a rede 10.0.0.0/8, vamos analisar
● Esse endereço provê uma rede (10.0.0.0) e inúmeros hosts (de
10.0.0.1 a 10.255.255.254). Como não precisamos de todos
esses hosts, vamos reduzir da seguinte forma: 10.0.0.0/16. Só
mudamos a máscara! Dessa forma, temos 255 redes!
Como Fazer Sub-Rede

• Podemos ver que os 2 primeiros octetos se referem à rede e


os dois últimos ao host. Dessa forma, temos as seguintes
características:

– Um endereçamento que provê 256 redes (de


10.0.0.0 até 10.255.0.0) com 65534 hosts por rede (de
10.0.0.1 a 10.0.255.254 ou de 10.1.0.1 até 10.1.255.255)
Como Fazer Sub-Rede

• A rede tem que suportar até 10 servidores, considerando o


gateway desses servidores, teremos que ter 11 endereços de
hosts em cada rede (44 endereços)

• Como em toda a computação, redes funcionam sempre em


potências de 2. Dessa forma, não vamos conseguir prover
exatamente 11 endereços de hosts. Qual a próxima potência
de 2 após o 11??
Como Fazer Sub-Rede
Como Fazer Sub-Rede

• Qual a máscara dessa "nova rede"??


– 255.255.255.240 (/28), pois temos apenas 4 bits para
identificar cada host

• Como os bits 1 da máscara definem a porção de rede, variam-se


os bits da porção de rede do endereço IP (em vermelho) para
definir as possíveis redes
Como Fazer Sub-Rede
Como Fazer Sub-Rede
• Agora vamos pegar um endereço de rede e calcular os endereços
de hosts. Por exemplo, a rede 192.168.1.80/28

Endereço da rede

Endereço de broadcast
Como Fazer Sub-Rede

• Prefixos reservados para inter-redes privadas:


– 10.0.0.0/8 (255.0.0.0)
– 172.16.0.0/12 (255.240.0.0)
– 192.168.0.0/16 (255.255.0.0)
– 169.254.0.0/16 (255.255.0.0)
Como Fazer Sub-Rede
REFERÊNCIAS

∙ Redes de Computadores e a Internet. J.F Kurose e K.W.


Ross. 5ª e 6ª Edições
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Endereçamento IP
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Infraestrutura Computacional
ROTEIRO

• A importância da infraestrutura
• Componentes
• Exemplo de infraestrutura
• Open Compute Project
• Por que se preocupar com a infraestrutura?

● É muito comum os usuários da rede ou de aplicações que


“rodam” na nuvem se queixarem de lentidão, de queda do link
de comunicação, de falhas de segurança, etc.

● O que está mais próximo do usuário é resultado da sua


manipulação com ferramentas, programas, conectividade

● É muito complexo para um usuário ter que saber que a lentidão


na sua conexão é por conta de rompimento de um cabo de
fibra ótica, ou de um disco de armazenamento queimado, ou
de um servidor de DNS que está offline, etc.
• No contexto atual, em que grande parte das aplicações
executam em algum tipo de nuvem computacional, muitos
pontos precisam ser considerados:

● Como garantir a conectividade até o data center?


● Como garantir a operacionalização dos servidores disponíveis
para os usuários?
● E a segurança de acesso?
● E se eu quiser escalar a minha aplicação para atender uma
demanda de acesso que tende a crescer exponencialmente?
Continua…

• Outras questões não menos importantes também se destacam:


● Custo energético para manter um data center

● Autonomia pós-desastre da estrutura ou de componentes da


mesma
● Disco, placa-mãe, processadores com problemas
● Conectividade limitada (por conta de falha em dispositivos
como switches, roteadores)
Componentes

• Uma maneira de classificar os componentes de uma infraestrutura


computacional para processamento em grande escala é fazer
uma divisão considerando a granularidade

● Grossa
● Envolve componentes macro
● Fina
● Envolve componentes micro
Componentes

• Granularidade Grossa
● Servidores (banco de dados, firewalls, storage, autenticação,
réplicas), switches, roteadores, nobreaks e bancos de baterias,
ventilação, rack, ventilação (sistema de refrigeração com ar-
condicionados), sistemas de alarme do ambiente, controle de
acesso ao local onde ficam armazenados os servidores no data
center, barramento de energia elétrica, geradores, etc.
Componentes

• Granularidade Grossa
● Os componentes dos servidores em tipos e quantidades

● Placas de redes, discos (mecânicos ou SSD), placas mãe com 1

ou N processadores, placas gráficas para processamento de alto


desempenho (CUDA ou OpenCL), fontes (em geral redundantes)
→ caso uma apresente problema a outra mantém o hardware
ligado
Componentes

• Já imaginou um Data Center dentro de um A350?

● Assista a este vídeo curto para ter uma ideia de uma pequena
estrutura distribuída que ajuda no controle da aeronave
https://www.aeroin.net/piloto-airbus-a350-mostra-compartimento-secreto/
Exemplo de Infraestrutura

• Laboratório de Sistemas Distribuídos e Programação


Concorrente

● lasdpc.icmc.usp.br
● 4 clusters independentes que formam uma nuvem privada

(andromeda, halley, cosmos, taurus)


● Total de 60 servidores

● Intel e AMD

● http://infra.lasdpc.icmc.usp.br/
Exemplo de Infraestrutura

• Esta infraestrutura é atualmente desenvolvida sob as seguintes


distribuições:

● Ubuntu 20.04 LTS Focal Fossa


● Freenas (Storages)

● ClearOS (Firewall e Autenticação)

● Virtualizadores

● KVM/Qemu e HyperV (Microsoft)


Exemplo de Infraestrutura

• Estrutura de virtualização baseada no KVM (Kernel Virtual


Machine)
● 318 máquinas virtuais

● Utilizamos somente ferramentas de código fonte aberto para

gerenciar as VMS

● Kimchi Project
● An HTML5 based management tool for KVM

https://github.com/kimchi-project/kimchi/wiki
Exemplo de Infraestrutura

• Middleware para computação de alto desempenho OpenMPI

• Middleware para computação distribuída, incluindo middlewares


para IoT (GSN, OpenHab, Mosquitto)

• Plataforma para processamento em GPUs


● 26 placas GTX 650 com CUDA Framework
Open Compute Project

• OCP é uma comunidade global de líderes em tecnologia que


trabalham em conjunto para liberar infraestruturas de TI
proprietárias para tornar o hardware mais eficiente, flexível
e escalável, facilitando a personalização → Redução de
Custos.

• Site: https://www.opencompute.org/
Open Compute Project

O projeto em linhas gerais promove:


• Um ecossistema dinâmico do setor para a implantação global de
datacenters na nuvem.

• Compartilhamento do mesmo servidor e os mesmos projetos de


datacenter que capacitam a nuvem em hiperescala.

• Organizações de todos os portes podem melhorar o desempenho,


a eficiência, o consumo de energia e os custos de seus
datacenters.
Open Compute Project
• No projeto de hardware para nuvem em grande escala:
● Todas as especificações de projeto em software livre

● Os operadores de datacenters e de TI aproveitam a inovação

desenvolvida pela comunidade para escalar os projetos de


hardware
Open Compute Project

• É importante destacar que a ideia do OCP não se restringe


somente a construção de um hardware aberto mas também a
questões relacionadas à operação segura da infraestrutura seja
atendida
• Um exemplo é o projeto Cerberus que segue um padrão do NIST
– 800-193 para que:

● Fornece orientações técnicas e recomendações de suporte à


resiliência de firmware e dados da plataforma contra ataques
potencialmente destrutivos.
Open Compute Project
• O Cerberus consiste em um microcontrolador criptográfico que executa
um código seguro que intercepta os acessos do host para flash no
barramento (onde o firmware é armazenado), medindo e atestando
continuamente esses acessos para garantir a integridade do firmware
● Vantagens

● Robusta integridade de pré-inicialização, tempo de inicialização e

tempo de execução para todos os componentes de firmware no


sistema.
● A especificação é agnóstica de arquitetura de CPU e E/S e se destina

a ser facilmente integrada a vários designs de fornecedores ao longo


do tempo, permitindo implementações de firmware mais seguras em
todos os tipos de plataforma em todo o setor, desde datacenter a
dispositivos IoT
Open Compute Project

• Projeto Cerberus e NIST 800-193 (Continua…)

● As diretrizes técnicas neste documento promovem resiliência na


plataforma,descrevendo os mecanismos de segurança para
proteger a plataforma contra alterações não autorizadas,
detectar alterações não autorizadas que ocorrem e se recuperar
de ataques de forma rápida e segura.
Open Compute Project

• O Projeto Cerberus pode ajudar a defender o firmware da


plataforma das seguintes ameaças:
● Usuários internos mal-intencionados com privilégio
administrativo ou acesso a hardware
● Hackers e malware que exploram bugs no sistema operacional,
aplicativo ou hipervisor
● Binários de firmware comprometidos
REFERÊNCIAS

• https://www.opencompute.org/
• https://en.wikipedia.org/wiki/Open_Compute_Project
• https://www.se.com/br/pt/work/solutions/for-business/data-centers-and-
networks/open-compute/
• https://azure.microsoft.com/pt-br/global-infrastructure/hardware-innovation/
• https://azure.microsoft.com/pt-br/blog/microsofts-project-olympus-delivers-
cloud-hardware-innovation-at-scale/
• https://www.opencompute.org/wiki/Server/ProjectOlympus
• https://azure.microsoft.com/pt-br/blog/microsoft-reimagines-open-source-
cloud-hardware/
• https://csrc.nist.gov/publications/detail/sp/800-193/final
• https://www.aeroin.net/piloto-airbus-a350-mostra-compartimento-secreto/
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Infraestrutura Computacional
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Firewalls e Web Proxies


Parte 1
ROTEIRO

• Introdução
• O que é?
• Principais características
• Funções do Firewall
• Tipos de Firewalls
Introdução

Motivação
● Alto índice de ataques a redes

● Necessidade de controle de tráfego

● Garantir integridade aos serviços

● Alta demanda dos serviços da Internet

Firewall significa Parede Corta Fogo


● Regula tráfego entre redes existentes

● Impede a propagação de dados nocivos


O que é?
Principais Características
• Toda solicitação chega ao Firewall
• Somente tráfego autorizado passa pelo Firewall
• O próprio Firewall deve ser imune à penetração
• Bloqueia o recebimento de dados baseados em uma fonte ou
destino
• Bloqueia o acesso a dados baseados em uma fonte ou destino
• Bloqueia dados baseados em conteúdo
• Permite conexões com uma rede interna
• Reporta o tráfego na rede e as atividades do Firewall
Firewall

• O que ele pode fazer?


● É um foco para a tomada de decisões

● Pode ser usado como um ponto de partida para a política de

segurança
● Pode gravar requisições

● Limita a exposição da rede

• O que ele não pode fazer?


● 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 Básico de Firewalls

• Deve ter pelo menos as 4 funções a seguir:


● Filtragem de pacotes
● NAT (Network Address Translation)
● Proxy de Aplicação
● Monitoramento e registro
O Básico de Firewalls

• Estratégias gerais:
● Allow-All
● Deny-All

Uma boa opção é misturar ambas!


O Básico de Firewalls

Deny network traffic on all IP ports.


Except, allow network traffic on port 80 (HTTP).
Except, from all HTTP traffic, deny HTTP video content.
Except, allow HTTP video content for members of the Trainers
group.
Except, deny Trainers to download HTTP video content at night.
Tipos de Firewalls

• Há 2 tipos principais

● Filtro de Pacotes
● Servidores Proxy
Tipos de Firewalls

• Filtro de Pacotes
● Filtrar = peneirar, separar

● Controle do tráfego que entra e sai

● Incrementa a segurança

● Transparente aos usuários

● Grande variedade no mercado


Tipos de Firewalls

• Filtro de Pacotes
● As regras dos filtros contêm:

● 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


Tipos de Firewalls

• Filtro de Pacotes

Internet Router Rede


Interna

Roteador com Filtro de Pacotes


Tipos de Firewalls

• Filtro de Pacotes
● Filtragem por adaptador de rede – vantagem ao administrador

● Principais problemas do filtro:


● IP Spoofing
● Serviço troca de porta
Tipos de Firewalls

• Filtro de Pacotes

● Não tratam protocolos da camada de aplicação


● Não são uma solução única – é um complemento
● Causam atraso no roteamento
Tipos de Firewalls

• Filtro de Pacotes
• Problemas
● IP Spoofing
Tipos de Firewalls

• Proxy

● 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
Tipos de Firewalls

• Proxy
Tipos de Firewalls

• Proxy

● Métodos de utilização:
● Método da Conexão Direta
● Método do Cliente Modificado
● Método do Proxy Invisível
Tipos de Firewalls

• Proxy

● Vantagens de utilização do proxy:

● Permite ao usuário acesso direto aos serviços na Internet


● Possui bons mecanismos de log
● Provê uma ótima separação entre as redes
Tipos de Firewalls

• Proxy

● Desvantagens do proxy:

● 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


Tipos de Firewalls

• Firewalls x Proxy

● Tomada de decisões:

● Servidor proxy toma decisões baseado em informações


fornecidas pelo serviço

● Filtro de pacotes utiliza o cabeçalho do pacote.


Tipos de Firewalls

• Firewalls x Proxy
● Tomada de decisões:
● Servidor proxy toma decisões baseado em informações

fornecidas pelo serviço


● Filtro de pacotes utiliza o cabeçalho do pacote.

● Desempenho:
● Filtro de pacotes possui uma vantagem por estar em nível mais

baixo
● Auditoria:
● Servidor proxy possui vantagem por permitir auditoria sobre o

controle do tráfego
REFERÊNCIAS

Zwicky, E; Cooper, Simon – Construindo Firewalls para a Internet.


O´Reilly, 2000

Internet Firewalls – UFRGS -


http://penta.ufrgs.br/redes296/firewall/fire.html
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Firewalls e Web Proxies


Parte 1
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Firewalls e Web Proxies


Parte 2
ROTEIRO

• Web Proxy - Squid

• Outros Tipos de Firewalls

• Arquiteturas de Firewalls

• Sistemas de Detecção de Intrusão


FUNCIONAMENTO
∙ Filtragem de pacotes via ACL – Access Control
● O método mais usado para configurar filtros de pacotes é
conhecido como listas de controle de acesso (ACLs)

● Dividem-se em dois tipos de padrão:


● ACLs padrão – filtram baseadas no endereço IP
● ACLs estendidas – procuram ‘mais dentro’ do cabeçalho do
pacote
FUNCIONAMENTO
∙ Filtragem de pacotes via ACL – Access Control

● Implementando um servidor proxy com o Squid

● Squid permite compartilhar a conexão entre vários nós, servindo


como intermediário entre eles e a Internet
WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● Implementando um servidor proxy com o Squid
● Para colocar em funcionamento:
● #apt-get install squid

● # mv /etc/squid/squid.conf /etc/squid/squid.conf.backup

● Arquivo /etc/squid/squid.conf contendo as seguintes linhas:


● http_port 3128

● visible_hostname servidor

● acl all src 0.0.0.0/0.0.0.0

● http_access allow all


WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● Implementando um servidor proxy com o Squid

● Ex.: permissões


WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● Bloqueando por domínios ou palavras
● acl bloqueados dstdomain playboy.abril.com.br
● http_access deny bloqueados

● Bloqueando por domínios ou palavras (com ou sem www)


● acl bloqueados dstdomain www.xvideos.com playboy.abril.com.br
● http_access deny bloqueados

● E se a regra ficar muito grande?


WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● É possível, nestes casos, criar um arquivo externo, inserir os
domínios, linha a linha e posteriormente fazer uma ‘chamada’ a
este arquivo.
● Ex: acl bloqueados url_regex –i “/etc/squid/bloqueados”
● http_access deny bloqueados

● Problema:
● Cada novo endereço descoberto deve ser inserido na lista
● Solução:
● O Sarg pode ajudar bastante
WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● É possível também inverter a regra, de forma que eu possa
bloquear tudo e ir liberando acesso a determinados sites
● Ex: acl permitidos url_regex –i “/etc/squid/permitidos”
● http_access allow permitidos
● http_access deny all

● Nos proxies mais atuais têm-se o bloqueio de domínios associado


aos respectivos IPs, evitando assim que o usuário digite
diretamente o IP de um site
WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● É possível bloquear também por endereços IP

● Ex: acl ips-bloqueados dst 200.234.21.23 200.212.15.45


● http_access deny ips-bloqueados
WEB PROXY SQUID
∙ Filtragem de pacotes via ACL – Access Control
● Bloqueando por palavras (incluídas na URL de acesso)

● Criar um arquivo de texto com as palavras a serem bloqueadas

● Ex: facebook, xxx, sexo, teens…

● Adicionar a regra contendo a localização do arquivo


● acl palavrasproibidas dstdom_regex “/etc/squid/palavrasproibidas

● http_access deny palavrasproibidas

● Problemas?
● Falsos positivos
WEB PROXY SQUID

∙ Filtragem de pacotes via ACL – Access Control


● Mensagens de erro

● Adicionar a seguinte linha no squid

● "error_directory /usr/share/squid/errors/Portuguese/ "

∙ É possível alterar os arquivos HTML de cada mensagem de


forma personalizada
OUTROS TIPOS DE FIREWALLS

• Firewalls Híbridos
● A maioria dos firewalls podem ser classificados como Filtro de

Pacotes ou Servidores Proxy

● Outros tipos de firewalls oferecem uma combinação entre estes


dois
OUTROS TIPOS DE FIREWALLS
• Firewalls Híbridos
OUTROS TIPOS DE FIREWALLS

• 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
OUTROS TIPOS DE FIREWALLS
• Firewalls Bastion Hosts
OUTROS TIPOS DE FIREWALLS

• Firewalls Bastion Hosts


● Honey Pot
● 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
ARQUITETURAS DE FIREWALLS
• Principais:
● Screened host
● Sem sub-rede de proteção
● Elementos = 1 roteador e 1 bastion host
● Rede protegida sem acesso direto ao “mundo”
● Bastion host realiza o papel de procurador – só ele passa pelo
roteador
ARQUITETURAS DE FIREWALLS
• Screened Host
ARQUITETURAS DE FIREWALLS
• Screened subnet
● Screened = proteger, peneirar, investigar

● Apresenta múltiplos níveis de redundância

● É a mais segura

● Componentes:
● Roteador externo

● Sub-rede intermediária (DMZ)

● Bastion Host

● Roteador Interno
ARQUITETURAS DE FIREWALLS

• Screened subnet

• O que é a DMZ (De Militarized Zone)?


● Sub-rede entre a rede externa e a protegida. Proporciona
segurança.
● Rede interna somente tem acesso ao Bastion Host
● Somente a sub-rede DMZ é conhecida pela Internet
ARQUITETURAS DE FIREWALLS
• Screened subnet
SISTEMAS DE DETECÇÃO DE INTRUSÃO

• Solução complementar ao 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

• Tipos de análise de tráfego


● Detecção de assinaturas

● Detecção de comportamento

● Detecção de anomalias de protocolo


SISTEMAS DE DETECÇÃO DE INTRUSÃO
SISTEMAS DE DETECÇÃO DE INTRUSÃO

• Detecção de assinaturas
● procura de padrões específicos

● desvantagem : necessidade de conhecimento prévio do padrão

• Detecção Comportamento
● Cada rede tem determinada característica (estatística)

● Procura alterações nestas característica (pico)

● Desvantagem - método não muito eficaz

• Detecção de anomalias de protocolo


● Análise do pacote com seu padrão
REFERÊNCIAS

Zwicky, E; Cooper, Simon – Construindo Firewalls para a Internet.


O´Reilly, 2000

Internet Firewalls – UFRGS -


http://penta.ufrgs.br/redes296/firewall/fire.html
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Firewalls e Web Proxies


Parte 2
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Controle de Acesso e Mecanismos


de Autenticação
ROTEIRO
• Introdução
• Definições
• Classificação do Controle de Acesso
• Identificação, autenticação, autorização
• Mecanismos de autenticação
• Modelos de Controle de Acesso
• Gerência de Identidades
INTRODUÇÃO

• O controle de acesso é um importante mecanismo para a


segurança de aplicações
● Atualmente, aquelas implantadas em nuvens computacionais

• Responsabilidade:
● 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
DEFINIÇÕES
• O controle de acesso pode também ser definido como um
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

• Visa limitar as ações que um usuário de um sistema pode realizar


no ambiente

• Capacidade de permitir ou negar a utilização de algo por alguém

• Prevenir que o sistema/aplicação esteja em ou vá para um


estado inseguro.
DEFINIÇÕES
• Alguns requisitos básicos de segurança da informação que
também se aplicam ao desenvolvimento de software na nuvem,
envolvem:
● Disponibilidade
● Ter certeza de que os dados estão acessíveis quando forem

necessários e onde forem necessários


● Integridade
● Ter certeza de que os dados não foram modificados

intencionalmente ou acidentalmente
● Confidencialidade
● Somente os indivíduos autorizados a acessar os dados podem
fazê-lo
DEFINIÇÕES
• Elementos para garantir:
● Disponibilidade
● Redundância

● Backup

● Integridade
● Assinatura digital

● Confidencialidade
● Criptografia e controle de acesso
CLASSIFICAÇÃO DO CONTROLE DE ACESSO
• Baseada em:
● Hosts

● Controle de acesso aos recursos do sistema operacional


● Proteção de arquivos e objetos
● Controla recursos via rede
● Sistemas
● Atuam dentro de hosts (composto por uma interface e um banco de
dados)
● Com mecanismos próprios de controle
● Rede
● Implementados por meio de firewalls: filtros de pacotes e proxies

● Roteadores, switches
IDENTIFICAÇÃO, AUTENTICAÇÃO, AUTORIZAÇÃO
• É importante destacar alguns componentes que fazem parte do
controle de acesso e o que eles representam
● Sujeito
● Aquele que solicita acesso a algum tipo de informação.

Exemplo: hosts e usuários


● Objeto
● O que é acessado pelo sujeito

● Exemplo: arquivos, dados nos bancos de dados

• Monitor de Referência
● Usado para mediar um acesso

● Ter controle que garanta a integridade do seu funcionamento


IDENTIFICAÇÃO, AUTENTICAÇÃO, AUTORIZAÇÃO

• Etapas para realizar o acesso a um objeto

● Identificação

● Autenticação

● Autorização

● Prestação de Contas/Responsabilidade
IDENTIFICAÇÃO, AUTENTICAÇÃO, AUTORIZAÇÃO
• Identificação
● Identificar um sujeito junto a um objeto

● Responsabilizar individualmente por ações no sistema

● Identificar por: username, PIN

• Autenticação
● Confirma a identidade

● Tecnologias:

● Algo que o usuário sabe (senha)

● Algo que o usuário tem (token, smart card, certificado digital)

● Alguma característica do indivíduo (traço físico/comportamento)

(biometria)
IDENTIFICAÇÃO, AUTENTICAÇÃO, AUTORIZAÇÃO

• Autorização
● Determina se o sujeito está autorizado a acessar um recurso
particular
● Faz parte de qualquer sistema operacional e é desejável em
aplicações
● Exemplo: Usuário autenticado no Active Directory ou no Servidor
LDAP, tem acesso a uma página ou a um arquivo no servidor Web
local

• Sistema Operacional verifica permissões com base em critérios de


acesso
● Horário, tipo, localização física
MECANISMOS DE AUTENTICAÇÃO
• Senhas Estáticas
● String de caracteres para autenticação de usuários
● É um dos mais utilizados
● Problemas: Senha fraca pode ser quebrada

• Senhas Dinâmicas
● On Time Password
● Válida uma única vez

● Usada como segundo fator de autenticação e pode ser implementada em

hardware/software
• Chaves Criptográficas
● Usada para comprovar a identidade do emissor
● Assinatura digital: tecnologia que utiliza chave privada para encriptar um hash
MECANISMOS DE AUTENTICAÇÃO
• Smart Cards
● Armazena e processa informações

● Contém circuitos

● Realiza operações criptográficas

● Tipos

● Sem contato: antena em forma de bobina enrolada

● Com contato: leitor transmite energia com contato

• Biometria
● Valida um comportamento ou traço físico do usuário (impressão

digital, geometria da mão, reconhecimento facial, voz, íris, retina)


● Fácil de usar
MECANISMOS DE CONTROLE DE ACESSO

• Criam normatizações de como o sujeito/usuário acessa os


objetos

• Tecnologias são usadas para reforçar objetivos do modelo

• Exemplos:
● DAC – Discretionary Access Control

● RBAC – Role Base Access Control


MECANISMOS DE CONTROLE DE ACESSO

• DAC – Discretionary Access Control


● O proprietário do recurso é responsável por atribuir permissões

● Tipos

● ACL – Access Control List

● Tabelas de Capacidades

• RBAC – Role Base Access Control


● Todas as permissões são atribuídas a papéis

● Os papéis representam funções

● Usuários são atribuídos aos papéis


MECANISMOS DE CONTROLE DE ACESSO

• Controle Centralizado
● Ponto central de controle
● Radius
● Mais usado em autenticação simples
● Encripta somente a senha
● Autenticação baseada em EAP, PAP, CHAP
GERÊNCIA DE IDENTIDADES

• O objetivo é automatizar as tecnologias de identificação, autenticação


e autorização

• Questões envolvidas
● O que cada usuário pode acessar?
● Quem aprova o acesso?
● Como o acesso é controlado de forma centralizada?
● Como utilizar controle de acesso para diferentes sistemas
operacionais e aplicações?
GERÊNCIA DE IDENTIDADES

• Ferramentas para a gerência

● Diretórios

● Gerência de senhas

● Gerência de contas

● SSO
GERÊNCIA DE IDENTIDADES

• Diretórios
● É um catálogo que possui informações centralizadas de usuários e

recursos
● O formato de dados é hierárquico (protocolo X.500)

● Protocolo de acesso é o LDAP


● Nele os usuários requisitam informações de recursos e as

aplicações requisitam informações dos usuários

● Objetos são gerenciados pelos serviços de diretório


● O administrador pode configurar e gerenciar (identificar,

autenticação e autorizar recursos)


GERÊNCIA DE IDENTIDADES
• Diretórios
● LDAP

● Uma das principais utilidades é a de 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
● É oriundo do modelo X.500 que:
● É mais conhecido como DAP (Directory Access Protocol)

● Dita como as transações, ocorrem em um serviço de diretórios


GERÊNCIA DE IDENTIDADES
• Diretórios
● OpenLDAP

● Inicialmente desenvolvido pela Univ. of Michigan


● Baseado no X.500
● Executa na pilha de protocolos TCP/IP
● Pode guardar informações como:
● Nome
● UserID
● Passwords
● Emails
● Fotos
● Local de trabalho
● Etc.
GERÊNCIA DE IDENTIDADES
• Diretórios
● OpenLDAP

● As informações são organizadas em um estrutura hierárquica em


árvore
● Elas são referenciadas segundo o RFC 2253 – LDAPv3
● Exemplo: dn: uuid=jcezar, ou=Laboratorio, o=USP, c=BR

● Segundo o RFC (algumas infos apenas):

● CN – commonName

● L – locality name

● ST – state or province name

● O - organizationName
GERÊNCIA DE IDENTIDADES
• Diretórios
● OpenLDAP

● A busca é feita em determinadas áreas ou na árvore toda

● As informações são protegidas para acessos não autorizados por

meio de:
● Autenticação

● Controle de listas de acessos

● Suporta IPV4 e IPV6


● Pode atender a múltiplos bancos de dados simultaneamente
● Faz replicação de base de usuários
● Alto desempenho para diversas chamadas ao diretório (buscas)
REFERÊNCIAS
● https://pt.wikipedia.org/wiki/OpenLDAP

● https://www.linux.ime.usp.br/~cef/mac499-
06/monografias/erich/html/ch01s09.html

● https://www.openldap.org/
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Controle de Acesso e Mecanismos


de Autenticação
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Servidores Web
ROTEIRO

• História

• O que é e o que faz?

• Características

• Funcionamento básico

• Exemplos
Servidores Web
• História
● 1980 – 1989: Tim Berners-Lee (CERN) propõe um projeto
● Objetivo: facilitar o compartilhamento de documentos de
pesquisa entre os colegas pesquisadores. Foram criados dois
programas:

• Um browser chamado World Wide Web

• Um servidor HTTP chamado CERN HTTPd que foi hospedado


em um computador neXTcube
Servidores Web
Servidores Web

• Programa de computador responsável por aceitar requisições HTTP

• Necessita de clientes (Navegadores)

• As respostas podem ser compostas de:

● Arquivos (Vídeos, imagens, etc) Documentos HTML


Servidores Web

• O 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)

• O protocolo HTTP tem sido utilizado desde 1990 e atualmente


está na versão 1.1 (HTTP/1.1) – RFC 2616 com atualização
recente para a versão 2.0 (RFC 7540)
Servidores Web
• A resposta de uma requisição deve ter um código e uma frase de
razão:
● 1xx: Informational – Requisição recebida continuando o processo
● 2xx: Success – A ação foi recebida com sucesso, entendida e
aceita
● 3xx: Redirection – Outras ações devem ser tomadas a fim de
completar o pedido
● 4xx: Client error – O pedido contém sintaxe inválida ou não pode
ser completada
● 5xx: Server error – O servidor não conseguiu atender uma
solicitação aparentemente válida
Servidores Web

• Características
● Troca de informações: Request e Response

• Formato genérico
● L1: Linha inicial (request-line ou status-line)

● L2: Cabeçalho da mensagem (opcional)

● L3: Linha vazia (CRFL)

● L4: Corpo da mensagem


Servidores Web

• Características
● Pode ter informações a respeito do recurso no corpo da
mensagem

• Exemplos:
● Last-modified: data da última modificação; Content-length:
tamanho;
● Content-type – MIME (Multipurpose Internet Mail Extensions):
tipo de formato.
Servidores Web

• Características
● Alguns métodos

● GET: solicita um recurso no servidor

● POST: Envia dados para serem processados no servidor

● PUT: 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


Servidores Web

• Programa de computador responsável por aceitar requisições HTTP

• Necessita de clientes (Navegadores)

• As respostas podem ser compostas de:

● Arquivos (Vídeos, imagens, etc) Documentos HTML


Servidores Web

• O que o servidor web faz?


Servidores Web

• O que o servidor web faz?


Servidores Web

• O que o servidor web faz?


Servidores Web
• Funcionamento Básico

● Cliente requisita recurso

● HTML

● Arquivos: Vídeos, imagens, etc

• Servidor
● Verifica se ele contém o que foi requisitado
● Ou encaminha a requisição para outro servidor (proxy)
● Devolve a resposta ao cliente
Servidores Web
• Provisão de conteúdo
Servidores Web
• Provisão de conteúdo
Servidores Web
• Exemplo

● https://www.univesp.br/cursos/
● Navegador quebra a URL em 3 partes
● O protocolo: HTTP/HTTPS
● Nome do servidor: www.univesp.br
● O nome do arquivo: /cursos/
● Navegador se comunica com servidor de nomes
● Traduz o nome do servidor www.univesp.br para um IP
(104.24.124.188)
Servidores Web
• Exemplo:
● http://www.univesp.br/cursos
• É criada então uma conexão entre o navegador e o servidor
na porta 80
• Porta 80 é padrão para os Servidores Web
• 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
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

• Um dos mais utilizados e mais conhecidos no mundo é o Apache


Web Server (da Apache Software Foundation)

• Acesso aos servidores de compartilhamento de arquivos, e-


mails, jogos online, entre outros, só é possível com a
implantação de Web Servers
Referências

∙ ESTRELA, J. C; Notas de Aula – Sistemas Computacionais


Distribuídos - 2017/2018
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Servidores Web
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Computação em Nuvem –
Contextualização e Definições
ROTEIRO
• O que é Computação em Nuvem?

• História

• Componentes

• Modelos de Serviços

• Implantação de Serviços na Nuvem

• Aplicações
O que é computação em nuvem

• Computação distribuída sobre a Internet ou entrega de serviços


computacionais sobre a Internet
• Exemplo: Gmail, Yahoo, Hotmail
• Ao invés de executar um serviço de e-mail local (em seu
computador)
● Você loga em uma conta de e-mail via Web
● O software que gerencia os seus e-mails não reside localmente
na sua máquina, mas é disponibilizado como serviço
● Você envia e-mail, apaga e-mail, restaura e-mail, etc.
O que é 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)
História

• As primeiras iniciativas a respeito do escopo de computação como


serviços é oriunda do que se chamava na época de RJE

● RJE → Remote Job Entry Process

• Em 2006, a Amazon disponibilizou a primeira nuvem pública para


processar jobs (aplicações) para o público em geral

● Mediante pagamento do uso de recursos computacionais (rede,


disco, memória, CPU) como serviços
Evolução das tecnologias

• Computação em Grade
● Resolução de problemas complexos com processamento paralelo

• Computação Utilitária
● Oferecimento de recursos computacionais como serviços medidos

• Computação como Serviço


● Assinaturas baseadas em rede para aplicativos
Componentes da Computação em Nuvem
• Clientes
● Dispositivos que são usados pelos usuários para interagir com os

servidores presentes do Data Center


● Tipos: Thin Client / Móveis

• Servidores Distribuídos
● 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.

• Data Centers
● Coleção de servidores distribuídos, em que a aplicação é armazenada

e pode ser acessada por meio de protocolos padronizados da WWW


Modelos de Serviços
• 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
• IaaS
● Provisão em geral de rede de comunicação e hardware para

processamento e armazenamento de dados


Implantação de Serviços na Nuvem

• Nuvem Pública
● 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

• Nuvem Privada
● 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
Implantação de Serviços na Nuvem

• Nuvem Comunitária
● Permite que os sistemas e os serviços sejam acessados por um
grupo de organizações

• Nuvem Híbrida
● É 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
Características Importantes
• 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)
Fatores que reforçam a Computação em Nuvem

• 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
Aplicações na Nuvem

• Por que o conceito de Nuvem Computacional é tão utilizado e


popular atualmente?

● Reduz a complexidade da rede de comunicação


● Reduz a compra de licenças de software
● Possibilidade de customização de hardware
● Aumenta a escalabilidade, confiabilidade
● Diminui as chances de se ter dados perdidos/corrompidos, pois
eles são armazenados em grandes conglomerados que focam na
segurança do armazenamento, na replicação dos dados, no
armazenamento eficiente e em políticas eficientes de backup
Aplicações na Nuvem

• SaaS
● Office365, Dropbox, Google Drive, OneDrive, etc

• PaaS
● Google App Engine
● Amazon EC2
● Microsoft Azure

• IaaS
● Rackspace
● Amazon EC2
Computação em Nuvem – Visão do Usuário

• SaaS
● Aplicação

● Vantagens:Utilizar um software específico sem se preocupar com

manutenção de servidores e custos de desenvolvimento

• PaaS
● Sistemas operacionais, linguagens de programação, ambientes de

execução, bancos de dados, servidores Web.


● Vantagens: Utilizar uma plataforma de nuvem segura e executar

sua aplicação sem o custo e a complexidade de comprar e


gerenciar hardware e software
Computação em Nuvem – Visão do Usuário

• IaaS
● Hardware, máquinas virtuais, storages e rede
● Vantagens: 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.
Computação em Nuvem – 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
REFERÊNCIAS

∙ https://www.nist.gov/programs-projects/nist-cloud-computing-
program-nccp
∙ https://www.oracle.com/us/dm/powering-generation-278787.pdf
∙ https://www.vmware.com/pdf/virtualization.pdf
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Computação em Nuvem –
Contextualização e Definições
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Modelos de Serviços em Computação


em Nuvem
ROTEIRO

• Introdução

• Características Principais

• Visão Estrutural

• Fornecedores no ecossistema de computação em nuvem


INTRODUÇÃO

• A computação na nuvem vem ganhando cada vez mais espaço


entre empresas de todos os setores.
• Há vantagens para alavancar os negócios

• As soluções se dividem em três principais categorias:


● IaaS (Infraestrutura como Serviço)

● PaaS (Plataforma como Serviço)

● SaaS (Software como Serviço).


INTRODUÇÃO

• SaaS, PaaS e SaaS são modelos de serviços oferecidos na


nuvem, tornando-se populares pela sua disponibilização em
plataformas das gigantes da tecnologia, como Google, Microsoft e
Amazon.

• Nos próximos slides vamos apresentar as principais características


de cada um
CARACTERÍSTICAS PRINCIPAIS
• IaaS
● 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
CARACTERÍSTICAS PRINCIPAIS
PaaS
● 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


CARACTERÍSTICAS PRINCIPAIS
SaaS
• 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).
VISÃO ESTRUTURAL
Diagramação

● O NIST, que de fato apresenta o conceito adequado de Cloud,


usa uma visualização de quatro pilhas de software para descrever
as diferenças entre os modelos de infraestrutura, plataforma e
software "como serviço”

● A seguir, vamos mostrar uma versão do diagrama que compara


os modelos de serviços de computação em nuvem (IaaS, PaaS,
SaaS) e ambientes locais, em algum momento nos últimos anos
VISÃO ESTRUTURAL
Diagramação
VISÃO ESTRUTURAL
Diagramação
VISÃO ESTRUTURAL
Diagramação
• O primeiro diagrama, anteriormente apresentado, destacou
sucintamente as principais diferenças e ajudou as pessoas a
reconhecerem que o PaaS é diferente da hospedagem terceirizada
e da TI local.

Desvantagens
● Abordou apenas o tópico em uma camada superficial;

● Passávamos mais tempo discutindo como e por que o PaaS é

diferente - não apenas no local, mas também no IaaS. Assim,


precisávamos de uma visualização diferente para uma melhor
explicação
VISÃO ESTRUTURAL
Diagramação

● Necessidade de um novo diagrama ou representação visual que:


● é simples e fácil de entender (basicamente à primeira vista)

● destaca as diferenças em um contexto que é familiar (em relação às


semelhanças)
● transmite o valor dos serviços "gerenciados" (nos preocupamos com
algumas coisas, para que você não precise se preocupar)
● articula o grau de diferenças (que é mais diferente que o mesmo)
VISÃO ESTRUTURAL
Diagramação
VISÃO ESTRUTURAL
Diagramação
● Uma análise do diagrama anterior implica que:
● Privado: é como nós o entendemos: temos controle total sobre toda
a pilha à medida que o possuímos e o gerenciamos
● O IaaS é diferente do privado (embora seja tecnicamente executado
na mesma pilha), mas também é diferente da hospedagem
gerenciada terceirizada
● PaaS é realmente diferente!
● O aspecto de dependência entre camadas e separação de
preocupação geralmente é perdido ao tentar usar outros modelos
para visualizar esse relacionamento de pilha, como pizza como
serviço e carro como serviço.
VISÃO ESTRUTURAL
Diagramação
VISÃO ESTRUTURAL
Diagramação
• A analogia com o carro é interessante de ser feita:
● Privado: é como possuir seus carros - você pode ir para onde quiser, a qualquer

momento (controle total), em uma marca / modelo / cor / acabamento de carro


de sua escolha, mas você é o proprietário e é responsável por sua manutenção.

● IaaS: é como um serviço de aluguel de carro - você ainda pode ir a qualquer


lugar a qualquer momento, com alguns limites de opções de carro, mas não
precisa manter os veículos; basta pegar as chaves e ir.

● PaaS: é como transporte público - você pode ir a lugares definidos / limitados


pelas rotas e horários disponíveis, mas é fácil de usar e pagar por uso
(economia de escala completa)
VISÃO ESTRUTURAL
● Diagramação
VISÃO ESTRUTURAL

Diagramação
• A adição de SaaS exigiu que modificássemos um pouco o modelo,
especialmente porque precisávamos diferenciar PaaS e SaaS, porque
não funcionava para ter apenas uma camada de diferença entre as duas,
e ainda era necessário manter as escalas de diferenças entre as
variáveis;

• Segurança e Integração foram removidas porque há preocupações de


segurança em todas as camadas e adicionados Dados abaixo de
Aplicativos;

• Em seguida, Databases, Servers e Server HW" foram alterados para


Middleware, O/S e Server, respectivamente.
VISÃO ESTRUTURAL

Diagramação
• A visão da figura anterior foi criada (15 de janeiro de 2010), com uma
diferença consistente de duas camadas entre SaaS, PaaS e IaaS; e
uma diferença de 5 camadas entre IaaS e local para expressar que os
ambientes em nuvem são mais diferentes dos ambientes locais.

• Depois de algumas atualizações chegamos à versão final que vale


repetir no próximo slide, que é de fato a visão atual que os mais
variados players tem do que é a nuvem e como ela está estruturada.
VISÃO ESTRUTURAL
Diagramação de PaaS, SaaS e IaaS
FORNECEDORES NO ECOSSISTEMA DE COMPUTAÇÃO
EM NUVEM

IaaS
• Desde o início, o setor é dominado pela AWS (Amazon Web Services),
líder global em receita, com 38% de participação no mercado. Em
seguida, aparece a Microsoft com 18%, a Google com 9% e o Alibaba
com 6%.

PaaS
● As gigantes da tecnologia, que têm capacidade para oferecer uma ampla

gama de recursos para os clientes em uma mesma plataforma. Alguns


dos principais são o Google App Engine, Oracle Cloud Platform, Cloud
Fondry, da Pivotal, e o Heroku, da Salesforce.
FORNECEDORES NO ECOSSISTEMA DE COMPUTAÇÃO
EM NUVEM

SaaS
• Qualquer pessoa que tenha utilizado apps da Google, como Gmail ou
Google Docs, ou serviços de armazenamento na nuvem, como o
Dropbox, já desfrutou de partes do SaaS.

• Os principais fornecedores de SaaS incluem a Microsoft, com o Office


365, assim como pioneiros de programas corporativos como a
Salesforce.
Referências

• https://csrc.nist.gov/publications/detail/sp/800-145/final
• https://dachou.github.io/2018/09/28/cloud-service-models.html
• https://www.linkedin.com/pulse/20140730172610-9679881-pizza-
as-a-service/
• https://dachou.github.io/2011/03/16/cloud-ecosystems.html
• https://dachou.github.io/2009/01/13/cloud-computing-and-microsoft-
platform.html
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Modelos de Serviços em Computação


em Nuvem
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Virtualização – Contexto e Conceitos


ROTEIRO

• Origens da Virtualização

• Introdução

• Multiprogramação

• Virtualização
ORIGENS DA VIRTUALIZAÇÃO

• Surgimento em meados da década de 60

• Grandes computadores ficam mais velozes ao processar dados,


mas eram ineficientes em aproveitar o tempo de cálculo devido
ao gerenciamento manual de processos feitos por um operador

• Surge o conceito de tempo compartilhado (Time Sharing)


ORIGENS DA VIRTUALIZAÇÃO

• Robert P. Goldberg em 1972


●Dissertação na Universidade de Harvard
●Base teórica da arquitetura para sistemas computacionais
virtuais

• IBM lança um mainframe capaz de executar de forma simultânea


diferentes Sos
●Sob a supervisão de um controlador
●Hypervisor
INTRODUÇÃO

• Motivação
●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
INTRODUÇÃO

• Motivaçã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.
INTRODUÇÃO

• Benefícios

●Instalações: Espaço, resfriamento, energia

●Hardware: Servidores, switches, roteadores, armazenamento

●Software: Suporte, licenças, manutenção

●Administração de Servidores: Servidores, site, dados,


software, servidores, aplicações
MULTIPROGRAMAÇÃO

• Sistemas tradicionais funcionam com Multiprogramação

• Simulação de um ambiente operacional no qual cada aplicação


possui um processador

• Sistemas operacionais multiprogramados

• Criação da abstração de processo

• Cada processo possui a disposição uma máquina virtual de alto


nível
MULTIPROGRAMAÇÃO

Fonte: 4
MULTIPROGRAMAÇÃO

Fonte: 4
VIRTUALIZAÇÃO

• Capacidade de se executar simultaneamente, mais de um


sistema operacional em um único servidor físico

SO01 SO02 SO03 SO04


...

Servidor Físico
VIRTUALIZAÇÃO

• A virtualização pode ocorrer em diferentes níveis:

●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
VIRTUALIZAÇÃO

• Nível do Hardware Abstraction Layer (HAL)


●Tem uma VM que corresponde ao ISA (Instruction Set
Architecture) e virtualização de dispositivos, processos e memória
●Host hospedeiro e hóspede utilizam o mesmo ISA
●Mapeamento de recursos virtuais sob os recursos físicos
VIRTUALIZAÇÃO

• Tipos de sistemas de virtualização


●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
VIRTUALIZAÇÃO

Servidor Servidor Servidor


Sistema Sistema
Sistema Sistema Sistema Sistema
Operacional Operacional
Operacional Operacional Operacional Operacional

Hypervisor
Controlador Hypervisor
de partição
Sistema Operacional

SMP SMP SMP

VMware GSX,
VMware ESC Server, Microsoft Virtual Server,
System z LPAR System z, Linux KVM, HP Integrity VM User Mode Linux,
MS Hyper-v) z/VM e Xen Hypervisor

Hardware Partitioning Bare Metal Hypervisor Hosted Hypervisor


Fonte: 3
REFERÊNCIAS

●https://www.redhat.com/pt-br/topics/virtualization/what-is-KVM
●https://www.virtualbox.org/
●https://www.ic.unicamp.br/~ducatte/mo401/1s2010/T2/Apresentacoes/
●https://edisciplinas.usp.br/mod/resource/view.php?id=2844150
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Virtualização – Contexto e Conceitos


INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Tipos de Virtualização
ROTEIRO
• Virtualização x Emulação

• Máquinas Virtuais de Processos

• Monitores de Máquinas Virtuais

• Suporte de Hardware para Virtualização

• Softwares para Virtualização

• Containers
VIRTUALIZAÇÃO X EMULAÇÃO

• 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

• Emulação
● Todas as instruções são executadas via software

● O desempenho tende a cair


Tipos de Virtualização
• Há várias formas de implementar a virtualização, mas a
implementação delas em geral é feita de duas maneiras

● Máquina Virtual (ou Domínio)


● É o ambiente que é virtualizado e que corresponde ao sistema
operacional e aplicações deste SO

● Monitor de Máquina Virtual ( Hypervisor )


● Faz o 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
Tipos de Virtualização

• Entre as diferenças entre os modos de implementação está a forma


como ambos são executados

● O hypervisor sempre estará presente enquanto o host/computador


estiver ligado

● A máquina virtual de processo somente existirá enquanto o


processo correspondente a ela estiver em execução
Máquina Virtual de Processo

• Uma aplicação de um SO que executa em modo usuário

● As instruções são executadas em modo não privilegiado

● Exemplo: VMWare Player (máquina virtual de processo)


Monitores de Máquinas Virtuais

• Monitor de Máquinas Virtuais (MV) lida com:

● 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
● Também atua para alterar o modo de execução do SO convidado de
privilegiado para não privilegiado
● Também intermedia as chamadas de sistemas e controle de acesso a
dispositivos como USB, rede, etc.
Monitores de Máquinas Virtuais
• Monitor de Máquinas Virtuais

● Destaque para três características


● 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
Monitores de Máquinas Virtuais

• Monitor de Máquinas Virtuais

● Pode ser implementado por meio de dois métodos


● Virtualização Total
● Para-Virtualização
Monitores de Máquinas Virtuais
• Virtualização total
● Ocorre sem a inclusão de otimizações ao SO para virtualização

● Apresenta 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

● Desvantagem
● Prover um conjunto de dispositivos genéricos, o que pode causar

subutilização de recursos disponíveis


● Como o SO hóspede não precisa ser modificado, cada instrução gerada

por este deve ser testada pelo monitor de máquinas virtuais (sobrecarga)
Monitores de Máquinas Virtuais

• Para-virtualização

● 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)
Suporte de Hardware para Virtualização

• Intel e AMD desenvolveram chips com extensões que dão suporte


a virtualização
● Lida com informações sensíveis de modo apropriado

● Embora com o mesmo propósito as soluções da AMD e Intel não

são compatíveis

• AMD
● AMD-V – para arquiteturas x86 e 64 bits

• Intel
● Intel VT – para arquiteturas x86 e 64 bits
Softwares para Virtualização

• Tabela descritiva de ferramentas de virtualização

Nome Tipo
VirtualBox Virtualização Total
Xen Para-Virtualização
VMWare Virtualização Total
QEMU Emulação
Linux VServer Virtualização no nível do SO
OpenVZ Virtualização Total
Containers

• O que é?
● Container é um ambiente isolado.
● Docker: é uma plataforma open source escrita na linguagem de
programação Go
● Ele agrupa partes de softwares de um sistema de arquivo
completo e que abrange todos os recursos necessários para a
sua execução.
● Desta forma, é uma plataforma de containers.
Containers

• Diferenças para ambientes virtualizados


● Docker é uma implementação de virtualização de containers
● É uma proposta que segue paralela à ideia de Hypervisores
● O container exclui a virtualização pelo hypervisor e o host entra em contato
direto com as bibliotecas

● Utiliza o Linux Container (LXC) como backend


● Não fornece uma VM, mas um ambiente virtual semelhante ao que
denominamos de chroot jail, com maior isolamento
● Permite definir limites de recursos por containers (CPU, memória, I/O)
Containers
• Diferenças para ambientes virtualizados
● Virtualização

Fonte: 3
Containers
• Diferenças para ambientes virtualizados
● Container/Docker

Fonte: 3
Containers
• Diferenças para ambientes virtualizados

● Itens compartilhados servem apenas para leitura

● Container fica mais leve se comparado a VM

● São mais rápidos no boot

● Economiza recursos
Containers
Vantagens
● 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.
● Usa bibliotecas de kernel do SO em comum.
● Pacotes e até mesmo um ambiente inteiro são dispostos no container
e se tornam portáveis.
● Torna o trabalho conjunto mais eficiente.
● Simplifica a metodologia DevOps facilitando o desenvolvimento ágil.
● Permite o escalonamento de aplicações e o deploy de maneira mais
simples.
Containers
Vantagens
● Economia de recursos
● Maior disponibilidade dos sistemas
● Compartilhamento
● Os arquivos podem ser compartilhados entre o host e o
container ou um volume pode ser distribuído para outros
● Facilita o gerenciamento
● Aplicação como pacote completo
● Replicação e padronização
REFERÊNCIAS

● https://www.vmware.com/pdf/virtualization.pdf

● https://www.meupositivo.com.br/panoramapositivo/container-docker/

● https://www.mav.com.br/o-que-e-docker/
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Tipos de Virtualização
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Exemplos de Virtualizadores e
Ferramentas de Gerenciamento
ROTEIRO

• VirtualBox

• KVM/QEMU

• Docker
VirtualBox

• Site
● http://virtualbox.org

● Solução multiplataforma (Windows, Linux)

● Atualmente desenvolvida e mantida pela Oracle

● Fácil de utilizar e instalar

● É gratuita!
VirtualBox

• Hosted Hypervisor
● Código aberto (open-source) para arquiteturas x86. Roda em
Windows, macOS, Linux

● Suporta a criação e gerenciamento de máquinas virtuais hóspedes


executando os sistemas Windows, Linux, BSD

● Fornece um pacote de device drivers denominado "Guest


Additions" para melhorar o desempenho
VirtualBox

Fonte: 7
VirtualBox

Fonte: 7
VirtualBox

Fonte: 7
KVM/QEMU
• Sites
● https://www.linux-kvm.org/page/Main_Page

● https://www.qemu.org/

• KVM (Kernel-Based Virtual Machine)


● 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.
• QEMU (Machine Emulator)
● Software open source que serve para emular um processador
KVM/QEMU

• Bare-Metal
● KVM (Kernel-Based Virtual Machine):

● 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.
KVM/QEMU

Fonte: 3
KVM/QEMU

Fonte: 2
KVM/QEMU

Fonte: 2
Docker
• Site
● https://www.docker.com/

● Documentação
● https://docs.docker.com/

Fonte: 4
Docker
• Arquitetura Docker

Fonte: 4
Docker

Fonte: 6
Referências

https://www.oracle.com/us/technologies/virtualization/oraclevm/oracle-vm-virtualbox-ds-
1655169.pdf
https://sempreupdate.com.br/criar-vm-e-instalar-o-windows-10-no-virt-manager/
https://www.qemu.org/
https://fedorabr.org/discussion/176/tutorial-instalacao-e-uso-basico-do-qemu-kvm-virt-
manager
https://pt.wikiversity.org/wiki/Docker
https://www.alura.com.br/artigos/desvendando-o-dockerfile
https://www.virtualbox.org/manual/UserManual.html
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

Exemplos de Virtualizadores e
Ferramentas de Gerenciamento
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

SOA e Web Services


ROTEIRO

•Introdução
•Evolução dos Negócios
•Problemas
•Evolução das Tecnologias
•SOA
•Serviços Web
INTRODUÇÃO

• A Internet mudou a maneira de se fazer negócios

• Facilidade para acesso às aplicações

• HTML e HTTP –> Padrão de troca de informação

• Navegadores web tornaram a comunicação simples e possível


EVOLUÇÃO DOS NEGÓCIOS

• Evolução dos negócios

• Necessidade de novas soluções

• Transações e trocas de informações tornaram-se


essenciais para os negócios

• Automatização nos dias atuais é mais que fundamental


EVOLUÇÃO DOS NEGÓCIOS

Fonte: 3
EVOLUÇÃO DOS NEGÓCIOS

Fonte: 3
PROBLEMAS

• Problemas a serem resolvidos


● Dificuldades para integrar sistemas heterogêneos;
● Diferentes empresas utilizam diferentes tecnologias e soluções
● Variados domínios;
● Muitos fabricantes;
● Como integrar todas essas soluções de forma automatizada?
● Uma solução para cada tecnologia é inviável!
● Mudar de provedor de serviços pede nova implementação
● Crescente demanda por manutenção (evolutiva, adaptativa,
corretiva, …)
● Novos requisitos ⇒ mudanças constantes;
● Novas tecnologias ⇒ reimplementação;
● Problemas como --> desempenho, composição de serviços;
EVOLUÇÃO DAS TECNOLOGIAS

• RSH (Remote Shell): Executar comandos de shell em máquinas


remotas
• RPC (Remote Procedure Call): Executar funções em máquinas
remotas
• RMI (Remote Method Invocation): API Java para acesso remoto
de métodos
• Java RMI: Somente Java
• Microsoft DCOM (Distributed Component Object Model): Uma
única implementação e padrão proprietário
SOA (SERVICE-ORIENTED ARCHITECTURE)

• “SOA é um estilo arquitetural para construção de aplicações de


software que utilizam serviços disponíveis em uma rede como a
Web” [Endrei et al., 2004].

● Objetivos:
● Integração de sistemas heterogêneos (interoperabilidade);
● Facilitar manutenções
SOA

• As SOAs são caracterizadas por serem:


● Fracamente acopladas;
● Transparentes em localização;
● Independentes de protocolo.
SOA

• Clientes não tem conhecimento de detalhes técnicos da


implementação dos serviços.

• Uma infraestrutura subjacente encarrega-se de tratar esses


detalhes.
ESTRUTURA E TERMINOLOGIA BÁSICA

Fonte: 2 (Adaptado)
ESTRUTURA E TERMINOLOGIA BÁSICA

Fonte: 2 (Adaptado)
SERVIÇOS WEB

• Um sistema de software projetado para suportar


interoperabilidade entre máquinas sobre uma rede.

• Web Services caracterizam-se por ser uma tecnologia para


computação distribuída baseada na Web.

• Características:
● Independente de linguagem ou plataforma
● Troca de mensagens XML
● Descreve uma operação a ser executada ou dados a serem
trocados
SERVIÇOS WEB

• Vantagens
● Permite diferentes serviços distribuídos executarem em uma
variedade de plataformas e arquiteturas.
● Integração com sistemas existentes.
● Integrar processos de negócios com clientes e fornecedores com
um custo menor.
● Web services permitem compartilhamento de processos sem
compartilhar tecnologias.
SERVIÇOS WEB

• Vantagens
● Oferecer serviços de negócios através da Web.
● Liberdade de escolha de ferramentas, produtos e tecnologias.
Usam padrões e protocolos abertos.
● Não fica preso a um middleware específico.
● Não importa se está utilizando Java ou Microsoft DCOM, etc.
● Permite o reúso de serviços e componentes.
SERVIÇOS WEB

• Como as vantagens são oferecidas


● Utilização de XML

● Utilização de protocolos padrão amplamente utilizados pela


indústria (HTTP, HTTPS, SOAP)

● A descrição dos serviços é disponibilizada através de um arquivo


WSDL (formato XML)
SERVIÇOS WEB

• Desvantagens

● Integrar serviços web, dinamicamente, requer que o conteúdo de


registros de dados seja confiável.
● Problemas de desempenho.
● Custo maior para processar documentos XML.
● Padrões para integração de processos de negócio e
gerenciamento de transações podem ser complexos em alguns
casos.
SERVIÇOS WEB

• Arquitetura Básica
SERVIÇOS WEB

• Processamento

Fonte: 3
SERVIÇOS WEB

• Tecnologias envolvidas
● XML
● SOAP
● UDDI
● WSDL
SERVIÇOS WEB

• XML
● eXtensible Markup Language
● Padrão para descrição de dados para serem trocados pela Web.
● Base para todos os demais.
● Mensagens baseadas no protocolo SOAP.
● Descrições de serviços escritas em WSDL.
● Descrições de localização como entradas UDDI.
SERVIÇOS WEB

• SOAP
• Simple Object Access Protocol
• Formato de dados comum para troca de dados cliente–servidor.
• Utilizado para troca de informações em ambientes distribuídos.

Mensagem SOAP, formada por:


• Envelope;
• Cabeçalho (header);
• Corpo principal (mandatory body);
SERVIÇOS WEB

• SOAP

Fonte: 3
SERVIÇOS WEB
<SOAP−ENV: E n v e l o p e
xmlns:SOAP−ENV=
” h t t p : // schemas . xmlsoap . org / soap / e n v e l o p e / ” SOAP−E N V : e n c o d i n
g S t y l e=
” h t t p : // schemas . xmlsoap . org / soap / e n c o d i n g / ”>
<SOAP−ENV: Header >
< t : T r a n s a c t i o n x m l n s : t=”some−URI ” SOAP−E NV: must Understand=”1
”>
</ t : T r a n s a c t i o n>
</SOAP−ENV:Header>
<SOAP−ENV: Body >
<m: Get Book Price xmlns: m=”some−URI ”>
< t i t l e >My L i f e and Times</ t i t l e >
<a u t h o r> F e l i x H a r r i s o n</ a u t h o r>
</ m: Get Book Price>
</SOAP−ENV:Body>
</SOAP−E NV: Envelope>
SERVIÇOS WEB

• WSDL

● Web Service Description Language


● Linguagem para composição de documentos que descrevem a
interface de um WS.
● É um documento XML que descreve um conjunto de mensagens
SOAP e como essas mensagens são trocadas.
● Especifica o que uma mensagem de requisição deve conter e
como será a mensagem de resposta.
● Define a localização do WS e qual protocolo de comunicação é
utilizado para conversar como serviço.
SERVIÇOS WEB
<? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?>
< d e f i n i t i o n s name=”Book Search ”
target Namespace=” h t t p : // myexample . com/ b o o k s e a r c h . wsdl ” x m l n s : . . .
<t y p e s>
...
</ t y p e s>
< message name=”Boo k Se arch Input ”>
<p a r t name=”body ” e l e m e n t : ” x s d l : B o o k R e q u e s t ”/>
</ message>
< message name=”Book Search Output ”>
<p a r t name=”body ” t y p e=” x s d l : B o o k R e s p o n s e ”/>
</ message>
<port Type name=”Books Port Type ”>
< o p e r a t i o n name=”get Books ”
< i n p u t message=”t n s : B o o k R e q u e s t ”/>
<o u t p u t message=”t n s : B o o k R e s p o n s e ”/>
</ o p e r a t i o n>
</ port Type>
< b i n d i n g name=”B o o k s S e a r c h B i n d i n g ” t y p e=”t n s : B o o k s P o r t T y p e ”>
...
</ b i n d i n g>
< s e r v i c e name=” B o o k S e a r c h S e r v i c e ”>
<p o r t name=”Books Search Port ” b i n d i n g=” t n s : B o o k s S e a r c h B i n d i n g ”>
< s o a p : a d d r e s s l o c a t i o n=” h t t p : // example . com/ b o o k s e a r c h ”/>
</ p o r t>
</ s e r v i c e>
</ d e f i n i t i o n s>
SERVIÇOS WEB

• UDDI

Universal Description, Discovery and Integration

Repositório/registro/diretório de WS
● Constitui as “páginas amarelas” dos WS
● Localização de WS
● Obtenção de informações sobre os serviços
● Modo de utilizar o serviço (interface)
● Fornece todos os detalhes de como utilizar os serviços
SERVIÇOS WEB
< b u s i n e s s E n t i t y b u s i n e s s K e y=”35 AF7F00−1419−11D6−A0DC−000C0E00ACDD ”
authorized Name=”0100002CAL ” o p e r a t o r=”www−3. ibm . com/ s e r v i c e s / u d d i ”>
<name>BooksToGo</ name>
< d e s c r i p t i o n x m l : l a n g=”en ”>
The s o u r c e f o r a l l p r o f e s s i o n a l books
</ d e s c r i p t i o n>
< c o n t a c t s>
<c o n t a c t>
<personName>Benjamin Boss</ personName>
<phone>( 877 ) 1111111</ phone>
</ c o n t a c t>
</ c o n t a c t s>
REFERÊNCIAS

• Abstração

Fonte: 3
REFERÊNCIAS

1. Endrei, M., Ang, J., Arsanjani, A., Chua, S., Comte, P., Krogdahl, P., Luo, M., and
Newling, T. (2004). Patterns: Service-Oriented Architecture and Web Services. IBM
Redbooks Series. IBM Corporation. Disponível em:
http://www.redbooks.ibm.com/abstracts/sg246303.html

2. Web services and soap. Alonso, G., Casati, F., Kuno, H., and Machiraju, V. (2003).
Web services: Concepts, architectures, and applications. Springer

3. Notas de Aula – Computação Distribuída – ICMC/USP, 2017 – Júlio Cezar Estrella

4. SOA: Princípios de Design de Serviços

5. Rotas & REST


INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

SOA e Web Services


INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

RESTFul Services
ROTEIRO
• Conceitos
• O que é REST
• Descrição de uma URI
• Implicação de uma Interface Uniforme
• Por que REST?
• A ideia por trás de REST
• Serviços RESTFul
CONCEITOS

• É como os clientes acessam um determinado serviço.


Normalmente, um serviço usará SOAP, mas se você criar um
serviço REST, os clientes acessarão seu serviço com um estilo
arquitetural diferente (chamadas, serialização como JSON etc.).
CONCEITOS

O REST usa alguns métodos HTTP comuns para inserir / excluir /


atualizar / recuperar as informações como descrevemos abaixo:

GET - Solicita uma representação específica de um recurso


PUT - Cria ou atualiza um recurso com a representação fornecida
DELETE - Exclui o recurso especificado
POST - Envia dados a serem processados pelo recurso identificado
O QUE É REST?

REpresentational State Transfer


▫ Doutorado de Roy Fielding

A Web é a aplicação de maior sucesso na Internet

▫ O que torna a Web tão bem-sucedida?


Recursos Endereçáveis
REST

• O Representational State Transfer visa evocar uma imagem de


como um aplicativo Web bem projetado se comporta: uma rede de
páginas da Web (uma máquina de estado virtual), onde o usuário
progride através de um aplicativo selecionando links (transições de
estado), resultando na próxima página (representando o próximo
estado do aplicativo) sendo transferida para o usuário e renderizada
para uso.
REST

•Toda “coisa” deve ter um ID


•Toda “coisa” deve ter um URI (Uniform Resource Identifier)

• Interface restrita
● Usa os métodos padrão do protocolo
● HTTP: GET, POST, PUT, DELETE

• Recursos com várias representações


● Aplicações diferentes precisam de formatos diferentes
● Plataformas diferentes precisam de representações diferentes
(XML + JSON)
REST

•Todo objeto possui uma URI

•De um URI, sabemos:


• O protocolo (como nos comunicamos)
• O host / porta (onde está na rede)
• O caminho do recurso (com que recurso estamos nos comunicando)
DESCRIÇÃO DE UMA URI

•http://sales.com/customers/323421/customers/{customer-id}
•Leitura por humanos: Desejado, mas não mandatório
•Parâmetros da URI
•http://sales.com/customers?zip=49009
•Parâmetros de consulta para encontrar outros recursos

•http://sales.com/cars/mercedes/amg/e55;color=black

•Parâmetros da matriz para definir atributos de recursos


IMPLICAÇÃO DE UMA INTERFACE UNIFORME

• Intuitivo
• Você sabe quais operações o recurso suportará
• Comportamento previsível
• GET - somente leitura e idempotente. Nunca altera o estado do recurso.
• PUT - uma inserção ou atualização idempotente de um recurso. Idempotente
porque é repetível sem efeitos colaterais.
• DELETE - remoção de recurso e idempotente.
• POST - não idempotente, operação "vale tudo“.
• Clientes, desenvolvedores, administradores, operações sabem o que esperar
• Muito mais fácil para os administradores atribuírem funções de segurança
• Para mensagens idempotentes, os clientes não precisam se preocupar com
mensagens duplicadas.
POR QUE REST?

•Menos sobrecarga (sem envelope SOAP para encerrar todas as


chamadas)

•Menos duplicação (o HTTP já representa operações como


DELETE, PUT, GET, etc., que precisam ser representados em
um envelope SOAP).

•Mais padronizado - as operações HTTP são bem compreendidas


e operam de forma consistente. Algumas implementações de
SOAP podem ficar complicadas.
POR QUE REST?

• Mais legível e testável por humanos

• Não é necessário usar XML

• Tem o protocolo HTTP como base para transportar as mensagens


A IDEIA POR TRÁS DO REST

∙ Simplicidade é melhor
∙ A Web funciona e muito bem
∙ Os serviços web devem seguir o estilo da Web
SERVIÇOS RESTFUL

• Recursos como URI


● Utilize URI exclusivo para referenciar todos os recursos em sua API

• Operações como métodos HTTP


● GET – Consultas
● POST – Consultas
● PUT, DELETE - Inserir, atualizar e excluir

• Conexão e descoberta
∙ Como a Web, as respostas HTTP contêm links para outros recursos
EXEMPLO DE REST API

URL http://del.icio.us/api/[username]/book marks/

Method GET
Querystring tag= Filter by tag
dt= Filter by date
Start = The number of the first
bookmark to return
end= The number of the last
bookmark to return
Returns 200 OK & XML
(delicious/bookmarks+xml)
401 Unauthorized
404 Not Found
EXEMPLO DE REST API

URL http://del.icio.us/api/[username]/bookmarks/

Method POST
Request XML
Body (delicious/bookmark+xml)

Returns 201 Created & Location


401 Unauthorized
415 Unsupported Media Type
EXEMPLO DE REST API

URL http://del.icio.us/api/[usern ame]/bookmarks/[hash]

Method DELETE

Returns 204 No Content


401 Unauthorized
404 Not Found
DESENHO DO RECURSO COM INTERFACE UNIFORME

• Na dúvida, defina um novo recurso


/orders
▫ GET - list all orders
▫ POST - submit a new order
/orders/{order-id}
▫ GET - get an order representation
▫ PUT - update an order
▫ DELETE - cancel an order
/orders/average-sale
▫ GET - calculate average sale
/customers
▫ GET - list all customers
▫ POST - create a new customer
/customers/{cust-id}
▫ GET - get a customer representation
▫ DELETE- remove a customer
/customers/{cust-id}/orders
▫ GET - get the orders of a customer
JSON

• Notação de Objeto JavaScript


• Sintaxe leve para representar dados
• Mais fácil de analisar o código do cliente JavaScript
• Alternativa ao XML em aplicativos AJAX

[{"Email":"bob@example.com","Name":"Bob"},{"Email
":"mark@example.com","Name":"Mark"},{"Email":"j
ohn@example.com","Name":"John"}]
RECURSOS COM MÚLTIPLAS REPRESENTAÇÕES

∙ Cabeçalhos HTTP gerenciam essa negociação


∙ CONTENT-TYPE: especifica o tipo MIME do corpo da mensagem

∙ ACCEPT: lista delimitada por vírgula de um ou mais tipos MIME,


que o cliente gostaria de receber como resposta
∙ No exemplo a seguir, o cliente está solicitando uma representação
do cliente no formato xml ou json
GET /customers/33323
ACCEPT: application/xml,application/json
RECURSOS COM MÚLTIPLAS REPRESENTAÇÕES

• Preferências são suportadas e definidas pela especificação do


protocolo HTTP

GET /customers/33323 ACCEPT: text/html;q=1.0,


application/json;q=0.5;application/xml;q=0.7
CONSUMIR RECURSOS REST

• Facebook Graph API


• Google Drive API
• Twitter API
ARQUITETURA

• Os serviços da Web baseados em SOAP e REST permitem que a


arquitetura de três camadas seja estendida em n camadas.

Fonte: 4
REFERÊNCIAS

1. https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
2. Rotas & REST
3. Avaliação de manutenibilidade entre as abordagens de web services
RESTful e SOAP-WSDL
4. Three-Tier Architecture Overview
INFRAESTRUTURA PARA
SISTEMAS DE SOFTWARE

RESTFul Services

Você também pode gostar