Infraestrutura Nuvem Aws Amazon Web Services

58
Infraestrutura em nuvem com Amazon Web Services Minicurso Poli-USP 24/09/2014 e 25/09/2014

description

Minicurso administrado na Poli USP

Transcript of Infraestrutura Nuvem Aws Amazon Web Services

Page 1: Infraestrutura Nuvem Aws Amazon Web Services

Infraestrutura em nuvem com Amazon Web Services

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

Page 2: Infraestrutura Nuvem Aws Amazon Web Services

Sobre nós

Débora Setton FernandesEngenheira de Computação pela Poli-USP (COOP 11)[email protected]

Rafael BarboloEngenheiro de Computação pela Poli-USP (COOP 10)[email protected]

Rafael Ivan GarciaEngenheiro de Computação pela Poli-USP (COOP 10)[email protected]

Page 3: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 4: Infraestrutura Nuvem Aws Amazon Web Services

Estamos contratando

Temos vagas para estagiários e efetivos. Interessados:

[email protected]

infosimples.com

Page 5: Infraestrutura Nuvem Aws Amazon Web Services

?Sobre vocês

Page 6: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 7: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 8: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura de uma aplicação web

Page 9: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 10: Infraestrutura Nuvem Aws Amazon Web Services

Um desafio para o analista de infraestrutura

Page 11: Infraestrutura Nuvem Aws Amazon Web Services

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:

Page 12: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura do Clickgram

Rails

MySQLRedis HD (arquivos)

Requisição Resposta

Page 13: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura do Clickgram - Rails é MVC

Controller

MySQLRedis HD (arquivos)

Requisição Resposta

Model View

Page 14: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física do Clickgram

Servidor

Rails MySQL

Redis HD

Tudo pode ser instalado em único servidor.

Page 15: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física do Clickgram

Servidor

MySQL

Redis HD

Como você escala para 2x a capacidade atual?

Rails

Page 16: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física do Clickgram

Servidor 1

Rails MySQL

Redis HD

Parece bom?

Servidor 2

Rails MySQL

Redis HD

hum…?

Page 17: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física do Clickgram

NOOOOOOOO!!!!

Page 18: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física do Clickgram

Servidor

MySQL

Redis HD

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

o servidor. E agora?

Page 19: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 20: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 21: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física distribuída do Clickgram

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

Page 22: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

Servidor

Redis

Servidor

HD

ServidorMySQL

(master)

Page 23: Infraestrutura Nuvem Aws Amazon Web Services

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?

Page 24: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

Servidor

Redis

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Page 25: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física distribuída do Clickgram

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

Page 26: Infraestrutura Nuvem Aws Amazon Web Services

Arquitetura física distribuída do Clickgram

Servidor

Rails

ServidorMySQL (slave)

ServidorRedis

(+ memória)

ServidorMySQL

(master)

ServidorHD

(shard 1)

ServidorHD

(shard 2)

Page 27: Infraestrutura Nuvem Aws Amazon Web Services

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?

Page 28: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 29: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 30: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 31: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 32: Infraestrutura Nuvem Aws Amazon Web Services

Modelos de contratação de infraestrutura

Page 33: Infraestrutura Nuvem Aws Amazon Web Services

Exemplos de fornecedores de infraestrutura

Page 34: Infraestrutura Nuvem Aws Amazon Web Services

Modelos de contratação de infraestrutura

SHARED VPS DEDICADO CLOUD

Page 35: Infraestrutura Nuvem Aws Amazon Web Services

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:

Page 36: Infraestrutura Nuvem Aws Amazon Web Services

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:

Page 37: Infraestrutura Nuvem Aws Amazon Web Services

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:

Page 38: Infraestrutura Nuvem Aws Amazon Web Services

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:

Page 39: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 40: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 41: Infraestrutura Nuvem Aws Amazon Web Services

Provedores de Cloud Computing

Page 42: Infraestrutura Nuvem Aws Amazon Web Services

Gartner 2014: infraestrutura como serviço em nuvem

Page 43: Infraestrutura Nuvem Aws Amazon Web Services

Gartner 2014: soluções de armazenamento em nuvem

Page 44: Infraestrutura Nuvem Aws Amazon Web Services

Amazon Web Services - Serviços oferecidos

Page 45: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 46: Infraestrutura Nuvem Aws Amazon Web Services

Amazon Web Services - Abrangência global

Regiões AWS

Page 47: Infraestrutura Nuvem Aws Amazon Web Services

Amazon Web Services - Exemplo de painel de controle

Page 48: Infraestrutura Nuvem Aws Amazon Web Services

Microsoft Azure

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

Page 49: Infraestrutura Nuvem Aws Amazon Web Services

Google Cloud Platform

Page 50: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 51: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 52: Infraestrutura Nuvem Aws Amazon Web Services

Componentes usados na atividade prática

+ ELB (Elastic Load Balacing) e Auto Scaling

Page 53: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 54: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 55: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 56: Infraestrutura Nuvem Aws Amazon Web Services

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

Page 57: Infraestrutura Nuvem Aws Amazon Web Services

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.

Page 58: Infraestrutura Nuvem Aws Amazon Web Services

Bye

Obrigado pela presença e até amanhã!