terça-feira, 18 de novembro de 2014

Armazenamento de dados no Google App Engine

Mais um informativo dos recursos do Google App Engine... Dessa vez, sucintamente sobre banco de dados.

http://d3a0avt069wzkc.cloudfront.net/sep_2010_vibrations/images/bigtable.jpg



O armazenamento de dados no Google App Engine não é um banco de dados relacional. O serviço de armazenamento de dados do Google App Engine é baseado no BigTable [Chang et al. 2006], um sistema distribuído de armazenamento de dados em larga escala. O BigTable funciona como um banco de dados orientado a colunas e utiliza o GFS (Google File System) para gerenciar informações, podendo ser utilizado juntamente como o MapReduce para distribuir o processamento dos dados.

As aplicações desenvolvidas para o App Engine serão executadas no Google, que realiza, caso necessário, o dimensionamento automaticamente. O Google oferece um serviço gratuito limitado e utiliza critérios de uso diário e contas por minuto para calcular o preço para aplicações que exigem um serviço profissional.

Referência:
SOUZA, R. C. Flávio; MOREIRA, Leonardo O.; MACHADO, Javam C.Computação em Nuvem: Conceitos, Tecnologias, Aplicações e Desafios. Disponível em: <http://www.ufpi.br/subsiteFiles/ercemapi/arquivos/files/minicurso/mc7.pdf>. Acesso em: 18 de novembro de 2014.


 

quarta-feira, 12 de novembro de 2014

Amazon EC2

O Amazon Elastic Compute Cloud (Amazon EC2) é um serviço da Web que fornece uma capacidade de computação redimensionável na nuvem. Ele foi desenvolvido para facilitar a web-escala de computação para os desenvolvedores.

A interface simples de serviço da Web do Amazon EC2 permite que você obtenha e configure a capacidade com mínima fricção. Oferece um controle completo de seus recursos computacionais e permite que você trabalhe no ambiente computacional comprovado da Amazon. O Amazon EC2 reduz o tempo exigido para obter e inicializar novas instâncias do servidor em minutos, permitindo que você rapidamente escalone a capacidade, para mais e para menos, à medida que os requisitos de computação forem alterados. O Amazon EC2 altera a economia da computação ao permitir que você pague somente pela capacidade que realmente utilizar. O Amazon EC2 fornece aos desenvolvedores as ferramentas para construir aplicativos resistentes a falhas e isolá-los de situações de falha comuns.


           




Este serviço permite a negócios executarem programas de aplicação em ambiente de computação AWS. O EC2 pode servir a um conjunto ilimitado de máquinas virtuais.


Desta forma, para usar o EC2, um assinante cria uma Imagem de máquina da Amazon (AMI) contendo o sistema operacional, programas de aplicativo e definições de configuração. Então, é feito o upload da AMI no Amazon Simple Storage Service (Amazon S3) e registrado como o Amazon EC2, criando um identificador de AMI ou ID de AMI. Quando isso for concluído, o assinante pode solicitar máquinas virtuais conforme a necessidade. A capacidade pode ser aumentada ou diminuída em tempo real de uma a mais de 1.000 máquinas virtuais simultaneamente. A cobrança é feita de acordo com os recursos de computação e rede consumidos.


Fonte: 
  http://aws.amazon.com/pt/ec2/
  http://aws.amazon.com/pt/ec2/getting-started/

terça-feira, 11 de novembro de 2014

Google App Engine #1

Hoje mostrarei algumas características do Google App Engine na visão da própria Google, lembrando que se trata de plataforma em nuvem do tipo Serviço (SaaS), isto é, virtualiza aplicações em múltiplos servidores, provendo hardware, conectividade, sistema operacional e serviços de software.



Linguagens e estruturas "populares" - É possível desenvolver aplicações em algumas das linguagens de programação mais populares: Python, Java, PHP e Go. Usar frameworks já existentes, como Django, Flask, Spring e webapp2. Desenvolver localmente com SDKs específicos da linguagem do idioma. Parear aplicativos com o Google Compute Engine para integrar outras tecnologias conhecidas, como Node.js, C++, Scala, Hadoop, MongoDB, Redis e muito mais.

Concentração no código - O Google se preocupa com a administração do banco de dados, a configuração do servidor, fragmentação e balanceamento de carga. Com a divisão de tráfego, é possível testar diferentes versões ao vivo do aplicativo. O suporte multilocação permite compartimentar os dados do aplicativo.

Várias opções de armazenamento - Escolhe-se a opção de armazenamento desejada: um banco de dados MySQL tradicional que usa Cloud SQL, um armazenamento de dados NoSQL sem esquemas ou armazenamento de objetos usando o Google Cloud Storage.

Serviços incorporados poderosos - O Google App Engine torna o usuário mais produtivo, eliminando a necessidade de rodar código boilerplate. Serviços gerenciados, como filas de tarefas, Memcache e a API de usuários, permitem criar qualquer aplicativo.

Ferramentas de desenvolvimento "populares" - Usa-se as ferramentas mais conhecidas, incluindo Eclipse, IntelliJ, Maven, Git, Jenkins, PyCharm e muito mais. O SDK do Google App Engine permite testar aplicativos localmente em um ambiente simulado e implantar o aplicativo com ferramentas de linha de comando simples ou a tela de início da área de trabalho.

Implantação na escala do Google - Alguns dos serviços da Web mais populares do mundo são criados nesta plataforma. É possível dimensionar até 7 bilhões de requisições por dia e reduzir o escalonamento quando o tráfego diminui.

 
Fontes:
https://cloud.google.com/appengine/

http://pt.wikipedia.org/wiki/Google_App_Engine

segunda-feira, 3 de novembro de 2014

Sobre Cloud Computing...

A seguir, alguns aspectos da Computação em Nuvem que nos levarão aos temas do nosso blog (AWS, Google App Engine e Windows Azure)...

Segundo o NIST – National Institute of Standards and Technology – a
computação em nuvem pode ser dividida em três segmentos [CSCC 2011]:


a) IaaS – Infrastucture as a Service – que basicamente é a abstração do
hardware. Consiste no serviço de prover soluções de hardware com grande
escalabilidade, disponibilidade, redundância e segurança.
b) SaaS – Software as a Service – também conhecido como software sob
demanda. Neste caso o software e todas suas dependências são hospedados em um
servidor remoto. O usuário usa uma aplicação desenvolvida pelo provedor do serviço
que está disponível para uso por diversos clientes simultaneamente.
c) PaaS – Platform as a Service – o provedor gera a plataforma necessária para o
usuário hospedar aplicações criadas por ele ou adquiridas de desenvolvedores que não
estão relacionadas ao provedor.


Entre os benefícios adquiridos com o uso dos sistemas de computação em nuvem estão:

Escalabilidade sob demanda – é uma das grandes vantagens quando se opta pela
computação em nuvem. Afinal é importante ter disponível tanto poder de processamento ou capacidade de armazenamento quanto seja necessário para determinada aplicação [ARMBRUST et al. 2009]. No caso do depósito de dados, por exemplo, paga-se apenas o espaço que for preciso para salvar os dados, além de ter uma disponibilidade de espaço de armazenamento aparentemente infindável.


Disponibilidade e amplo acesso – são imprescindíveis num sistema de computação em nuvem. O downtime – que é o tempo de indisponibilidade de um sistema – deve ser o menor possível. O processamento de uma informação depende da disponibilidade do sistema que não pode estar comprometido no momento em que o usuário precisar.


Redundância e resources pooling – se ocorrer uma falha em um sistema computacional sem redundância, informações podem ser perdidas. Porém, se houver redundância, o sistema defeituoso é substituído por outro, que manterá a disponibilidade do serviço. Já com resources pooling, um agrupamento de recursos, minimiza-se os riscos para o usuário e aumenta-se sua eficiência [WISCHIK et al. 2008].


Segurança e privacidade – são umas das prioridades no processamento e armazenamento de informações. Um usuário não pode ver as suas informações vulneráveis a ataques de terceiros. Inclusive, esta é uma das maiores barreiras que existe entre o usuário e a computação em nuvem, uma vez que há desconfiança por esta ser uma tecnologia nova e ainda não tão amadurecida. [GARFINKEL 2011].


Além desses fatores, um data center de grande porte de uma empresa provedora de computação em nuvem consome menos capital com manutenção e administração dos sistemas do que um data center particular.

Plataformas de computação em nuvem

Um sistema de computação em nuvem não necessariamente precisa ser contratado. Uma empresa pode criar uma nuvem privada, o que pode ter mais benefícios como o fato de garantir um controle de segurança próprio. Mas as nuvens privadas dependem de altos investimentos iniciais, e algumas das vantagens das nuvens públicas são perdidas. Por essa razão, algumas empresas preferem a contratação de serviços de computação em nuvem pública. Algumas das plataformas públicas disponíveis são:

a) Amazon AWS – É um sistema com foco empresarial, com licença proprietária, planos de pagamento por uso e suporte pago. Disponibiliza poder de processamento (Elastic Compute Cloud – EC2), armazenamento (Simple Storage Service – S3), bancos de dados (SimpleDB), etc.

b) Google App Engine – Este é um serviço de licença proprietária, sem custo pelos serviços ou pelos recursos utilizados até uma certa limitação. Ao atingir essa limitação é cobrada uma taxa de uso pelos recursos adicionais utilizados.


c) Microsoft Windows Azure – Serviço da Microsoft com licença proprietária, planos de pagamento por uso e serviço de suporte sem custo adicional. Os serviços disponíveis são de processamento, armazenamento, bancos de dados, entre outros.

É preciso escolher a plataforma de computação em nuvem mais adequada para cada projeto. Por isso, veremos as características relevantes de cada plataforma, como Sistemas Operacionais compatíveis, linguagens de programação suportadas e outras. 



Referências:
MAGALHÃES, Guilherme; SCHEPKE, Claudio; MAILLARD, Nicolas. Comparação entre Plataformas de Computação em Nuvem. Disponível em: <http://www.lbd.dcc.ufmg.br/colecoes/erad-rs/2012/0038.pdf>. Acesso em: 03 de novembro de 2014.