infraestrutura nuvem aws amazon web services
DESCRIPTION
Minicurso administrado na Poli USPTRANSCRIPT
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)[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]
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:
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ã!