Infraestrutura Nuvem Aws Amazon Web Services

Post on 01-Feb-2016

22 views 2 download

description

Minicurso administrado na Poli USP

Transcript of Infraestrutura Nuvem Aws Amazon Web Services

Infraestrutura em nuvem com Amazon Web Services

Minicurso Poli-USP24/09/2014 e 25/09/2014

Sobre nós

Débora Setton FernandesEngenheira de Computação pela Poli-USP (COOP 11)debora.setton@infosimples.com.br

Rafael BarboloEngenheiro de Computação pela Poli-USP (COOP 10)rafael.barbolo@infosimples.com.br

Rafael Ivan GarciaEngenheiro de Computação pela Poli-USP (COOP 10)rafael.ivan@infosimples.com.br

ENGENHARIA DE DADOS

DESENVOLVIMENTO DE SOFTWARE

CONSULTORIA EM TECNOLOGIA

Uso de Inteligência Artificial, Machine Learning e Big Data

Design e desenvolvimento de sistemas, portais e aplicativos

Treinamentos, arquitetura e sustentação de infraestrutura

Sobre nós

Estamos contratando

Temos vagas para estagiários e efetivos. Interessados:

rh@infosimples.com.br

infosimples.com

?Sobre vocês

Sobre vocês

Ano de Ingresso

0

1

2

3

4

5

6

7

2005 2006 2007 2008 2009 2010 2011 2012 2013 2014

Departamento na Engenharia Elétrica

7%7%

4%7%

74%

PCS PSI PEA PTC Outros

Agenda do minicurso

DIA 1 - CONTEÚDO TEÓRICO E DISCUSSÕES

• Arquitetura de uma aplicação web • Modelos de contratação de infraestrutura • Provedores de Cloud Computing • Apresentação de alguns serviços da Amazon Web Services

DIA 2 - ATIVIDADE PRÁTICA

Publicação de uma aplicação web utilizando a Amazon Web Services.

Arquitetura de uma aplicação web

Um desafio para o analista de infraestrutura

Você é o responsável pela infraestrutura de um novo aplicativo chamado Clickgram.

O Clickgram permite que qualquer pessoa compartilhe uma foto com seus amigos em apenas um clique!

Chegou o momento de você colocar o aplicativo no ar e seu chefe exigiu que não ocorram problemas de escalabilidade ou de disponibilidade.

Um desafio para o analista de infraestrutura

Clickgram

• Possui acesso apenas através da aplicação Web

• Uma foto pode ser armazenada no formato JPG, GIF ou PNG

• A aplicação web foi desenvolvida em Ruby on Rails

• O banco de dados é o MySQL

• O sistema de cache em memória usado é o Redis

A primeira versão do Clickgram possui as seguintes características:

Arquitetura do Clickgram

Rails

MySQLRedis HD (arquivos)

Requisição Resposta

Arquitetura do Clickgram - Rails é MVC

Controller

MySQLRedis HD (arquivos)

Requisição Resposta

Model View

Arquitetura física do Clickgram

Servidor

Rails MySQL

Redis HD

Tudo pode ser instalado em único servidor.

Arquitetura física do Clickgram

Servidor

MySQL

Redis HD

Como você escala para 2x a capacidade atual?

Rails

Arquitetura física do Clickgram

Servidor 1

Rails MySQL

Redis HD

Parece bom?

Servidor 2

Rails MySQL

Redis HD

hum…?

Arquitetura física do Clickgram

NOOOOOOOO!!!!

Arquitetura física do Clickgram

Servidor

MySQL

Redis HD

Camadas de dados não são escaladas apenas "clonando"

o servidor. E agora?

Arquitetura física do Clickgram

Servidor

Rails MySQL

Redis HD

Um servidor mais potente parece funcionar… Porém, esta abordagem possui um limite físico de componentes do servidor. Em algum momento, não haverá componentes melhores do que os atuais.

Além disso, o Rails pode necessitar de mais CPU, enquanto o MySQL pode necessitar de mais memória. O upgrade do servidor pode não atender a necessidades específicas de cada software.

Arquitetura física distribuída do Clickgram

Dica de ouro: isole cada componente da sua aplicação.

Servidor

Rails

Servidor

MySQL

Servidor

Redis

Servidor

HD

Arquitetura física distribuída do Clickgram

Problema: o banco de dados está muito lento. O que fazer?

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

Servidor

Redis

Servidor

HD

ServidorMySQL

(master)

Arquitetura física distribuída do Clickgram

Problema: a quantidade de escritas e leituras no sistema de arquivos (armazenamento de fotos) precisa aumentar.

O que fazer?

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

Servidor

Redis

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Arquitetura física distribuída do Clickgram

Problema: o sistema de cache precisa de mais memória. O que fazer?

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Arquitetura física distribuída do Clickgram

Problema: a aplicação Rails não está atendendo todas as requisições por conta de limitação de processamento.

O que fazer?

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Servidor

Rails

Servidor

Load balancer

Requisição

Resposta

Arquitetura física distribuída do Clickgram

Além de termos escalado a aplicação, também garantimos redundância dos componentes Rails e MySQL.

Quando "perdemos" um servidor destes componentes, as requisições continuam sendo atendidas.

Arquitetura física distribuída do Clickgram

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Servidor

Rails

Servidor

Load balancer

Requisição

Resposta

Arquitetura física distribuída do Clickgram

Redundância é um termo que abrange muitos aspectos no contexto de uma aplicação. Nossa sugestão, do ponto de vista

de arquitetura física e infraestrutura, é que todos os componentes tenham redundância de servidores, com

localizações em múltiplos data centers, preferencialmente com distância superior a 300km.

Modelos de contratação de infraestrutura

Exemplos de fornecedores de infraestrutura

Modelos de contratação de infraestrutura

SHARED VPS DEDICADO CLOUD

Modelo de hospedagem compartilhada

• É um dos modelos de hospedagem mais antigos e ainda muito popular

• É fácil colocar um site no ar, em geral os provedores oferecem construtores de site

• O servidor é compartilhado com aplicações de outros clientes (é comum um servidor hospedar mais de 1 mil aplicações)

• Você tem baixo controle sobre o ambiente que executa sua aplicação

• "Não é possível" escalar ou oferecer redundância • O preço é baixo, cerca de USD$ 10,00/mês

CARACTERÍSTICAS DE SHARED HOSTING:

Modelo de servidor virtualizado

• VPS é uma abreviação de Virtual Private Server • Desde o início da década de 2010, a maioria das

empresas de shared hosting e de servidor dedicado estão oferecendo VPS

• Um VPS é uma máquina virtual rodando em um servidor dedicado, consumindo recursos fracionados deste servidor

• Você tem alto controle sobre o ambiente que executa sua aplicação

• Não é fácil, mas é possível escalar e oferecer redundância

• O preço inicial é baixo, cerca de USD$ 20,00/mês

CARACTERÍSTICAS DE VPS:

Modelo de servidor dedicado

• É um servidor físico totalmente dedicado a você • É um dos modelos de contratação de servidores

mais antigos, muito usado por empresas que buscam alto desempenho e nível de controle

• Você tem alto controle sobre o ambiente que executa sua aplicação

• Não existe virtualização de recursos, ou seja, todos os recursos do servidor físico estão disponíveis para você

• Não é fácil, mas é possível escalar e oferecer redundância

• O preço inicial é alto, cerca de USD$ 100,00/mês

CARACTERÍSTICAS DE SERVIDOR DEDICADO:

Modelo de servidor em nuvem

• Não estamos falando de Platform As A Service (Heroku, Google App Engine, Engine Yard, etc.)

• Consiste em servidores e serviços virtualizados, e pode ser considerado uma evolução de VPS

• É uma das inovações em computação que revolucionaram a Internet, pois permite que qualquer desenvolvedor (pequeno ou grande) tenha acesso a um poder computacional capaz de executar qualquer trabalho a um preço baixo

• É fácil escalar e oferecer redundância • O preço inicial é baixo, cerca de USD$ 10,00/mês • Em geral, apresenta o melhor custo vs. benefício e

você "paga pelo que usa"

CARACTERÍSTICAS DE CLOUD SERVER:

Modelo de servidor em nuvem

EXEMPLO DE ESCALABILIDADE COM CLOUD SERVER:

Modificação de uma integração com o Facebook

3.400 servidores

~ 1 semana (8 dias)

De 50 a 3.400 servidores em 3 dias

Comparação entre modelos de infraestrutura

SHARED VPS Dedicado Cloud

Recursos compartilhadosfracionados

(virtualização)dedicados

fracionados (virtualização)

Ambiente Baixo controle Alto controle Alto controle Alto controle

Escalar recursos

"Impossível" Difícil Difícil Fácil

Redundância "Impossível" Difícil Difícil Fácil

Preço Baixo Baixo Alto Baixo

Contrato Mensal Mensal MensalPor hora

ou minuto

Provedores de Cloud Computing

Gartner 2014: infraestrutura como serviço em nuvem

Gartner 2014: soluções de armazenamento em nuvem

Amazon Web Services - Serviços oferecidos

Amazon Web Services - SDKs

JavaPython (boto)

PHP .NET Ruby Node.js

iOS Android AWS Toolkit for Visual Studio

AWS Toolkit for Eclipse

AWS Tools for Windows

PowerShellAWS CLI

JavaScript

Amazon Web Services - Abrangência global

Regiões AWS

Amazon Web Services - Exemplo de painel de controle

Microsoft Azure

http://azure.microsoft.com/en-us/services/

Google Cloud Platform

Comparação de preços entre provedores de cloud

AWS Azure Google

Contrato Por hora Por horaPor minuto, a partir

de 10 minutos

Servidor simples USD$ 9,67/mês 1GB RAM

USD$ 14,88/mês 0,75GB RAM

USD$ 9,67/mês 0,60GB RAM

Servidor médioUSD$ 52,08/mês

3,75GB RAM 2 COREs

USD$ 89,28/mês 3,5GB RAM

2 COREs

USD$ 52,08/mês 3,75GB RAM

1 CORE

Servidor avançadoUSD$ 416,64/mês

30GB RAM 8 COREs

USD$ 372,00/mês 28GB RAM

4 COREs

USD$ 416,64/mês 30GB RAM

8 COREs

Apresentação de alguns serviços da Amazon Web Services

Componentes usados na atividade prática

+ ELB (Elastic Load Balacing) e Auto Scaling

De volta ao Clickgram…

Servidor

Rails

ServidorMySQL (slave)

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Servidor

Rails

Servidor

Load balancer

Servidor

Rails

De volta ao Clickgram…

Servidor

Rails

ServidorMySQL (slave)

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Servidor

Rails

Servidor

Load balancer

Servidor

RailsELB

EC2

EC2

EC2

ElastiCache

RDS RDS

S3

Auto Scaling

Atividade prática Publicação de uma aplicação web

Resumo

Objetivo: executar o tutorial disponível em

https://infosimples.com/tutorial-senec-2014

http://senec-demo.infosimples.com

e publicar a sua versão desta aplicação web

que ficará disponível em um endereço como:

http://54.69.65.171

Resumo

IMPORTANTE!

1. O passo 1 do tutorial é criar uma conta na AWS. Não deixe para fazer isso amanhã. Chegue com a conta criada e funcional.

2. É uma boa ideia dar uma lida no tutorial, para ter ideia do que será feito durante o curso. O sucesso desta atividade vai depender mais de você do que dos instrutores.

3. Computadores próprios são bem-vindos, mas não necessários.

4. Linux é bem-vindo, mas não necessário.

Bye

Obrigado pela presença e até amanhã!