sistemas distribuídos cloud computingpprata/spd/sd_14_15_t15.pdf1 - introdução à cloud: “as of...
TRANSCRIPT
Sistemas Distribuídos
From: Mastering Cloud Computing
Foundations and Applications Programming
Rajkumar Buyya, Christian Vecchiola, Thamarai Selvi
Morgan Kaufmann Publishers
Cloud Computing
2
Sistemas Distribuídos
1 - Introdução à Cloud:
“As of now, computer networks are still in their infancy, but as they
grow up and become sophisticated, we will probably see the spread of
‘computer utilities’ which, like present electric and telephone utilities,
will service individual homes and offices across the country”
1969, Leonard Kleinrock, scientist at ARPANET
3
Visão actual:
“I do not care where my servers are, who manages them, where my
documents are stored, or where my applications are hosted. I just want
them always available and access them from any device connected
through Internet. And I am willing to pay for this service for as long as
I need it.”
Sistemas Distribuídos
4
Sistemas Distribuídos
A cloud permite, a qualquer pessoa com um cartão de crédito aceder a:
- Hardware virtual;
- Ambientes de execução;
- Serviços de software;
- A necessidade de armazenar dados e poder aceder-lhes a partir de
qualquer lado, e
- A necessidade de ter capacidade de computação à medida das
necessidades
São as razões mais comuns para considerar a utilização da Cloud.
5
Tecnologias de Cloud Computing
I need to grow
my
infrastructure,
but I do not
know for how
long…
I cannot invest
in
infrastructure, I
just started my
business….
I want to focus on
application logic
and not
maintenance and
scalability issues
I want to access
and edit my
documents and
photos from
everywhere..
I have a surplus of
infrastructure that
I want to make use
of
I have a lot of
infrastructure that
I want to rent …
I have
infrastructure and
middleware and I
can host
applications
I have
infrastructure and
provide
application
services
6
Sistemas Distribuídos
A palavra cloud é associada a diferentes tecnologias, serviços e
conceitos:
Virtualizaed infrastructure
Hardware on demand;
Pay as you go;
Utility computing;
IT out sourcing;
Platform as a service;
Sofware as a service;
Cloud Computing;
7
Tecnologias de Cloud Computing
IT outsourcing
Pay as you
go
No capital
investments
Quality of
Service
Security
Billing
Cloud
Computing?
8
Sistemas Distribuídos
Na verdade a tecnologia da Cloud, é algo que já estamos a usar há
muito:
- Aplicações distribuídas e serviços disponíveis na Web e que são
acedidos pelos protocolos standard da Internet.
Definição:
“Cloud Computing refers to both the applications delivered as services
over the Internet and the hardware and system software in the
datacenters that provide those services.” [1]
[1] M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski, G. Lee, D.
Patterson, A. Rabkin, I. Stoica, and M. Zaharia, “A view of cloud computing,” Commun. ACM,
vol. 53, no. 4, pp. 50–58, Apr. 2010.
9
Sistemas Distribuídos
Esta definição refere-se à computação na cloud como englobando
todas as camadas do conceito de cloud, desde o hardware até aos
serviços de software e aplicações.
Dos mesmos autores:
Cloud computing é um novo modelo de negócio onde os consumidores
podem ter acesso a hardware e software, através da internet pagando
o serviço que utilizam (como fazemos com os serviços públicos de
água e eletricidade) [1].
10
Sistemas Distribuídos
É introduzido o conceito de “everything as a service” – XaaS (2),
onde os diferentes componentes do sistema podem ser fornecidos,
medidos, e portanto ter um preço correspondente a um serviço.
Esta abordagem tem implicações na forma como o software é
construído, como é implantado (deployed), como pode ser acedido,
como a infraestrutura de IT é desenhada, como as empresas vão alocar
os custos para as necessidades de IT.
(2) XaaS, acrónimo de X-as-a-Service, onde X pode ser substituído por
uma série de valores: S para Software, I para infraestrutura, P para
plataforma, H para hardware, D para base de dados, ID para
identidade, etc.
11
Sistemas Distribuídos
Definição:
“Cloud Computing is a model for enabling ubiquitous, convenient,
on-demand network access to a shared pool of configurable computing
resources (e.g., networks, servers, storage, applications and services)
that can be rapidly provisioned and released with minimal management
effort or service provider interaction”[3].
(Modelo para acesso a um conjunto partilhado de recursos computacionais
(hardware, rede, servidores, armazenamento de dados, aplicações) que podem ser
configurados de acordo com as necessidades do utilizador)
[3] P. Mell and T. Grance, “The NIST definition of cloud computing.
recommendations of the national institute of standards and technology,” NIST Special
Publication, vol. 145, no. 6, pp. 1–2, 2011.
12
Sistemas Distribuídos
A definição do NIST, realça a abordagem orientada à “utility”.
Os serviços são fornecidos, com um dado preço segundo uma
estratégia “pay-per-use”.
Considera-se que um serviço é fornecido segundo um modelo de cloud
se:
- É acessível através de um web browser, ou através de uma API de
“Web services”;
- Para começar a aceder ao serviço, não é necessário qualquer
investimento inicial;
- Apenas se paga o que se usa e enquanto se usa.
13
Sistemas Distribuídos
Apesar de muitos serviços serem grátis para utilizadores individuais,
geralmente até um certo limite de recursos, para as empresas existe um
esquema de preços que os utilizadores subscrevem.
Entre cada utilizador e o fornecedor de serviços é assinado um
Service Level Agreement onde são estabelecidas as garantias dadas
pelo fornecedor de serviços e as contrapartidas em caso de não
cumprimento.
Visão geral de como o modelo de cloud computing funciona:
10
Manjrasoft
Compute
Storage
Applications
Development and Runtime Platform
Public Clouds
Subscription-Oriented Cloud Services:X{compute, apps, data, ..}
as a Service (..aaS)
Clients
OtherCloud Services
Govt.Cloud Services
PrivateCloud
Cloud Manager
14
15
Sistemas Distribuídos
Consideram-se três modelos principais de implantação (deployment
models) e acesso à cloud:
(têm a ver com a localização, e a gestão da estrutura de cloud)
• Public clouds
Se a infraestrutura física pertence a um fornecedor de serviços, e
qualquer utilizador paga para usar os seus serviços.
• Private clouds
- Se a cloud é construída para uso exclusivo de uma organização.
• Hybrid Clouds
Se a cloud é uma combinação dos dois modelos anteriores.
16
Cloud Deployment Models
Private/Enterprise
Clouds
* A public Cloud model
within a company’s
own Data Center /
infrastructure for
internal and/or
partners use.
Public/Internet
Clouds
* 3rd party,
multi-tenant Cloud
infrastructure
& services:
* available on
subscription basis to all.
Hybrid/Inter
Clouds
* Mixed usage of
private and public
Clouds: Leasing public
cloud services
when private cloud
capacity is
insufficient
17
Sistemas Distribuídos
Consideram-se três modelos de serviço (service models):
(têm a ver com o tipo de serviços que podem ser acedidos na cloud)
“Infrastructure as a Service” (IaaS):
- Se disponibiliza capacidade de computação, rede e armazenamento
de dados.
Exemplos:
Amazon Elastic Compute Cloud (EC2), Eucalyptus, OpenNebula,
Nimbus, OpenStack, …
18
Sistemas Distribuídos
(IaaS):
- Hardware virtual é fornecido na forma de instâncias de máquinas
virtuais;
- O modelo de preço é geralmente definido por hora de utilização, e
depende das caraterísticas do hardware virtual;
- O armazenamento de dados é fornecido como espaço em disco.
- A rede é fornecida como uma coleção de serviços que fazem a
gestão da rede entre máquinas virtuais e a sua ligação à Internet ou a
outras clouds.
19
Sistemas Distribuídos
“Platform as a Service” (PaaS):
- Se disponibiliza ferramentas para desenvolver produtos de software;
Exemplos: Google App Engine, Windows Azure, LunaCloud, PiCloud,
Amazon Web Services …
- Fornecem máquinas virtuais, sistemas operativos, aplicações,
frameworks de desenvolvimento, …
- O fornecimento dos serviços é garantido por um middleware que
cria o ambiente virtual onde as aplicações são desenvolvidas. É da
responsabilidade do fornecedor fornecer escalabilidade e tolerância
a falhas.
20
Sistemas Distribuídos
(PaaS):
- O utilizador pode focar-se na lógica da aplicação.
- O utilizador tem um maior nível de abstração, mas também tem
menos controlo sobre o ambiente de execução.
21
Sistemas Distribuídos
“Software as a Service” (SaaS):
- Quando o utilizador compra uma subscrição para usar um software
online.
Exemplos: GoogleApps, Oracle OnDemand CRM, email,
Microsoft Office 365, …
- As aplicações são partilhadas por vários utilizadores, mas a
interação de cada utilizador com a aplicação é isolada dos restantes
utilizadores.
22
Sistemas Distribuídos
Runtime Environment for Applications
Development and Data Processing Platforms
Examples: Windows Azure, Hadoop, Google AppEngine
Platform as a
Service
Virtualized Servers
Storage and Networking
Examples: Amazon EC2, S3, Rightscale, vCloud
Infrastructure as a
Service
End user applications
Scientific applications
Office automation, Photo editing,
CRM, and Social Networking
Examples: Google Documents, Facebook, Flickr, Salesforce
Software as a Service Web 2.0
Interfaces
23
Sistemas Distribuídos
Mudança de Paradigma
- O modelo foi proposto sobre conceitos e tecnologias já existentes.
- O que mudou foi a abordagem de como os serviços são produzidos e
consumidos.
Um fornecedor de Cloud possui uma enorme estrutura concentrada em
datacenters (e.g., Google Cloud possui 35 datacenters espalhados pelo
nundo) construídos segundo critérios de:
- eficiência de alocação de recursos;
- eficiência energética;
- localização com acesso de rede privilegiado (high-speed networks)
24
Sistemas Distribuídos
O que o modelo de “Cloud Computing” traz de novo?
•A perceção de uma capacidade ilimitada de recursos;
Através da tecnologia de virtualização tem-se acesso a um conjunto de
instâncias de máquinas virtuais cujo número depende da quantidade de
recursos necessária em cada momento.
• Elimina ou reduz o investimento inicial em Tecnologias de
Informação (IT);
Uma empresa pode usar os serviços sem necessidade de possuir um
departamento de informática.
25
Sistemas Distribuídos
O que o modelo de “Cloud Computing” traz de novo?
• Permite a utilização dos recurso à medida que são necessários;
Os utilizadores podem aumentar ou reduzir a utilização dos recursos à
medida das necessidades de cada momento pagando apenas o que
utilizam.
26
Sistemas Distribuídos
Características, segundo o NIST:
• Broad network access (Interoperabilidade de acesso).
- O acesso aos recursos da cloud é disponibilizado pelos protocolos
standard da internet que são independentes das plataformas e
acedíveis por todo o tipo de clientes.
• Rapid Elasticity (Elasticidade de recursos)
- O sistema pode adicionar recursos, seja alocando mais capacidade de
computação para as máquinas iniciais, ou alocando mais máquinas.
Estes recursos podem ser adquiridos e libertados a qualquer momento
pelo cliente.
27
Sistemas Distribuídos
Características, segundo o NIST:
• Resource Pooling
- O fornecedor de cloud cria um conjunto de recursos comuns, que
que serão partilhados pelos vários clientes num modelo
multi-tenant. Os recursos físicos e virtuais, são alocados /realocados
à medida das necessidades. Para o cliente é criada uma abstração que
esconde a localização dos recursos.
• Measured Service (Serviço mensurável)
- O sistema é medido, auditado e reportado ao cliente tendo como base
um sistema de medida.
28
Sistemas Distribuídos
Características, segundo o NIST:
- O serviço é cobrado segundo a quantidade de dados que armazenou,
o número de transações, operações de I/O, capacidade de computação
usada, …
• On-demand Self-service
- O cliente pode alocar recursos sem necessidade de interagir com o
pessoal do fornecedor da cloud.
29
Sistemas Distribuídos
30
Sistemas Distribuídos
Outras características / vantagens:
• Redução de custos
- A utilização dos recursos é otimizada, permitindo reduzir os custos.
• Facilidade de utilização
- Não existe necessidade de adquirir licenças de hardware ou software
para utilizar ou implementar serviços.
31
Sistemas Distribuídos
Outras características / vantagens:
• Confiabilidade
- A possibilidade de fazer balanceamento de carga e replicação de
serviços, torna mais fácil a implementação de sistemas tolerantes a
falhas.
• Low barrier to entry
- Uma empresa pode ter acesso a recursos de computação sem
investimento em equipamento, pessoal, desenvolvimento e
manutenção.
32
Sistemas Distribuídos
Desvantagens:
• Soluções não personalizadas
- Muitas das aplicações ou serviços são genéricas e não adaptadas ao
cliente
• Problemas de largura de banda
- Aplicações com elevados níveis de transferência de dados podem
não ser eficientes na Cloud.
33
Sistemas Distribuídos
Desvantagens:
• Segurança e privacidade
- Os dados estão numa estrutura desconhecida do cliente.
O cliente pode ter problemas em confiar dados críticos a terceiros,
Perda de controlo dos recursos por parte do utilizador;
34
Sistemas Distribuídos
Desafios:
- Desafios técnicos: como otimizar o fornecimento dinâmico dos
recursos, garantindo a qualidade de serviço, mas reduzindo custos.
- Desafios de segurança: mesmo que os dados sejam encriptados na
comunicação, eles têm de ser desencriptados para serem
processados. Como garantir a privacidade? Como proteger contra
ataques mal intencionados?
- Problemas legais: cada país tem a sua legislação de proteção de
dados. Podem levantar-se problemas sobre quem tem direito de
acesso aos dados, por exemplo em empresas investigadas por
ilegalidades.
35
Sistemas Distribuídos
Licenças
• Quando se compra um Software tradicional, é usada uma licença
denominada End User Licence Agreement (EULA), que descreve:
- O Software comprado é do cliente;
- Pode ser instalado em uma ou mais máquinas;
- Permite uma ou mais ligações;
- Possui limitações que o próprio fabricante colocou no Software;
…
• As aplicações distribuídas pela Internet criaram a necessidade de
mudar a forma como o Software é licenciado.
36
Sistemas Distribuídos
Service Level Agreements (SLA)
Um SLA é um contrato que descreve o desempenho do serviço
contratado entre o cliente e o fornecedor (cloud provider).
- Inicialmente eram negociadas entre cliente e fornecedor
- Atualmentes são contratos standardizados até que o cliente tenha um
consumo elevado de serviços.
37
Sistemas Distribuídos
Service Level Agreements (SLA)
• Um SLA geralmente especifica os seguintes parâmetros:
- Disponibilidade de serviço (uptime);
- Tempo de resposta e latência;
- Confiabilidade dos componentes do serviço;
- Responsabilidades das partes;
- Garantias
• Se o fornecedor falhar em alguns dos parâmetros, compromete-se a
compensar o cliente com um crédito, ou a pagar uma multa.
• Um SLA funciona como um seguro de compra.
38
Sistemas Distribuídos
• Na prática, não existe uniformidade no modelo das SLAs, nem na
forma como os serviços são taxados.
• Existem vários modelos de licenças. Ex. The open Source Model .
(http://opensource.org/licenses)
• Cada organização está a colocar preços aos seus produtos de forma
diferente:
- App Store
- Google Play
- Carbonite