Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Infraestrutura em nuvem com Amazon Web Services

Avatar for Infosimples Infosimples
September 24, 2014

Infraestrutura em nuvem com Amazon Web Services

Apresentação realizada durante o minicurso da SEnEC 2014, na Poli-USP.

Avatar for Infosimples

Infosimples

September 24, 2014

Other Decks in Technology

Transcript

  1. Sobre nós Débora Setton Fernandes Engenheira de Computação pela Poli-USP

    (COOP 11) [email protected] Rafael Barbolo Engenheiro de Computação pela Poli-USP (COOP 10) [email protected] Rafael Ivan Garcia Engenheiro de Computação pela Poli-USP (COOP 10) [email protected]
  2. 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
  3. 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
  4. 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.
  5. 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.
  6. 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:
  7. Arquitetura do Clickgram - Rails é MVC Controller MySQL Redis

    HD (arquivos) Requisição Resposta Model View
  8. Arquitetura física do Clickgram Servidor 1 Rails MySQL Redis HD

    Parece bom? Servidor 2 Rails MySQL Redis HD hum…?
  9. Arquitetura física do Clickgram Servidor MySQL Redis HD Camadas de

    dados não são escaladas apenas "clonando" o servidor. E agora?
  10. 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.
  11. 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
  12. 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?
  13. Arquitetura física distribuída do Clickgram Servidor Rails Servidor MySQL (slave)

    Servidor Redis Servidor MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2)
  14. Arquitetura física distribuída do Clickgram Servidor Rails Servidor MySQL (slave)

    Servidor Redis (+ memória) Servidor MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2)
  15. 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?
  16. Arquitetura física distribuída do Clickgram Servidor Rails Servidor MySQL (slave)

    Servidor Redis (+ memória) Servidor MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2) Servidor Rails Servidor Load balancer Requisição Resposta
  17. 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.
  18. Arquitetura física distribuída do Clickgram Servidor Redis (+ memória) Servidor

    MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2) Servidor Rails Servidor Load balancer Requisição Resposta
  19. 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.
  20. 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:
  21. 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:
  22. 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:
  23. 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:
  24. 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
  25. Comparação entre modelos de infraestrutura SHARED VPS Dedicado Cloud Recursos

    compartilhados fracionados (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 Mensal Por hora ou minuto
  26. Amazon Web Services - SDKs Java Python (boto) PHP .NET

    Ruby Node.js iOS Android AWS Toolkit for Visual Studio AWS Toolkit for Eclipse AWS Tools for Windows PowerShell AWS CLI JavaScript
  27. Comparação de preços entre provedores de cloud AWS Azure Google

    Contrato Por hora Por hora Por 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édio USD$ 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çado USD$ 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
  28. De volta ao Clickgram… Servidor Rails Servidor MySQL (slave) Servidor

    Redis (+ memória) Servidor MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2) Servidor Rails Servidor Load balancer Servidor Rails
  29. De volta ao Clickgram… Servidor Rails Servidor MySQL (slave) Servidor

    Redis (+ memória) Servidor MySQL (master) Servidor HD (shard 1) Servidor HD (shard 2) Servidor Rails Servidor Load balancer Servidor Rails ELB EC2 EC2 EC2 ElastiCache RDS RDS S3 Auto Scaling
  30. 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
  31. 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.