Agenda:
● O que é Computação em Nuvem
● Tipos: Pública, Privada e Híbrida
● Pilares da Computação em Nuvem
● Vantagens & Desvantagens [?]
● Modelo em Camadas
● Hypervisor, Virtualização Full e
Paravirtualização
● Infraestrutura AWS
● Segurança AWS
● Serviços AWS
● Demo EC2
● Demo Beanstalk
# whoami
· Tecnólogo em Redes de Computadores - Senac/RJ
· Administrador de sistemas, Consultor de TI, Evangelista da cultura
DevOps e Entusiasta de Tecnologias Cloud.
# work
· Opera (Bemobi) · Peixe Urbano · Urbi Network
· Passei Direto · Azul Seguros · Zoop Payments
· Globo.com · TV Globo · ResolveAí
· Equinix Datacenters · Orga Systems · Rimu Hosting
# which ricardo
Blog: http://www.ricardomartins.com.br
Twitter: @ricardommartins
Email: contato@ricardomartins.com.br
O que é Computação em Nuvem
“É um estilo de computação onde recursos de TI escaláveis e elásticos são
fornecidos como um serviço usando tecnologias de rede e/ou Internet.”
Gaertner
Pilares da Computação em Nuvem
● Pay as you go: Pague pelo que usar;
● Flexibilidade: Você não está limitado à um modelo específico de recurso;
● Elasticidade: Capacidade de provisionar e desprovisionar rapidamente grandes quantidades de
recursos em tempo de execução;
● Escalabilidade: Dimensione de acordo com a demanda;
○ Vertical : Adição de recursos (memória, cpu, disco) em uma infraestrutura existente;
○ Horizontal: Adição de novos componentes de maneira transparente ao lado de
componentes já existentes.
● Confiabilidade: Segurança e Alta Disponibilidade.
Vantagens & Desvantagens
● Vantagens:
○ Acesso independente de SO do usuário;
○ Centralização de recursos;
○ Acesse de qualquer lugar;
○ Controle de gastos;
○ Sem elevado custo inicial de investimento;
○ Rapidez na implementação;
○ Facilidade de integração;
○ Sem custo de manutenção/infraestrutura (nobreaks, ar-condicionado, atualizações de
firmware).
Vantagens & Desvantagens
● Desvantagens:
○ Dependência de Internet;
○ Latência dependendo da conexão;
○ Preços em dólar
Modelo em Camadas
SaaS (Software as a Service)
O cliente utiliza aplicativos criados pelo provedor e que são executados em uma infraestrutura
em nuvem.
- Gmail, GoogleDocs;
- Heroku;
- Sales Force;
- Office 365;
- Dropbox.
Modelo em Camadas
PaaS (Platform as a Service)
O cliente pode desenvolver aplicações próprias a partir das ferramentas disponibilizadas pelo
provedor. Não administra ou controla a infraestrutura na nuvem, mas pode controlar o seu
ambiente de desenvolvimento e os seus aplicativos.
- Google App Engine;
- AWS Elastic Beanstalk;
- Cloud Foundry;
- Tsuru (Globo.com);
- OpenShift (Redhat).
Modelo em Camadas
IaaS (Infrastructure as a Service)
O cliente pode criar suas instâncias, configurar recursos como armazenamento, memória,
processadores, tráfego, rede, load balancers. Além disso possui controle sobre os sistemas
operacionais e aplicativos instalados.
- Amazon AWS;
- Azure;
- Rackspace;
- Cloudstack;
- Digital Ocean;
- Openstack.
Hypervisor, Virtualização Full e
Paravirtualização
Hypervisor (ou Virtual Machine Monitor) é a camada de software/hardware que permite a execução
concorrente de vários sistemas operacionais em um mesmo computador.
É responsável pelo controle da execução das máquinas virtuais e também funciona como um mediador
entre os dispositivos virtuais e o hardware, como por exemplo transações de I/O. Para isto precisa ter
controle sobre o processador e sobre o resto do hardware.
Existem dois tipos de Hypervisors:
● Tipo 1, também chamado de nativo ou “bare-metal”;
● Tipo 2, também chamado de hospedado (hosted em inglês).
Tipo 1: Nativo
Bare-metal é o termo dado a execução de
software diretamente sobre o hardware, sem
nenhuma outra camada de software. O
Hypervisor tem controle total sobre o
processador e o resto do hardware.
Exemplos: VMware ESXi, o Xen e o KVM
(Kernel-based Virtual Machine) que são Kernels
Linux modificados para trabalhar como
Hypervisors.
Tipo 2: Hospedado
Este tipo de Hypervisor é executado como um
software sobre um sistema operacional normal
chamado de hospede. Logo, nesta situação o
Hypervisor tem controle limitado sobre o
hardware.
Exemplos: VirtualPC, VMware
Player/Fusion/Workstation, Parallels
Desktop/Workstation, VirtualBox, dentre vários
outros.
● Paravirtualização
Um Hypervisor Tipo-1 interage de uma forma
mais eficiente com o sistema que roda na
máquina virtual pois ela sabe que está rodando
em um ambiente virtualizado.
O sistema operacional precisa ser modificado
para ser compatível com a paravirtualização.
Caso contrário, a emulação tem que entrar em
cena, penalizando a performance.
Na paravirtualização o hypervisor funciona
como uma API, uma interface, para que o
sistema operacional guest tenha acesso ao
hardware.
Maior performance
● Virtualização Full
Um Hypervisor Tipo-2 emula o hardware para
as máquinas virtuais. Assim o sistema
operacional guest é executado de forma
isolada.
O sistema operacional da máquina virtual não
sabe que está rodando em um ambiente
virtualizado e tudo o que ele precisa são os
device drivers para os dispositivos que o
hypervisor emula.
A grande vantagem da Virtualização “Full” é a
compatibilidade com qualquer sistema
operacional que rode no hardware emulado
(sem a necessidade de alterações para ter
ciência que roda em uma máquina virtual).
Menor performance
Infraestrutura AWS
● Região: Regiões demográficas distribuídas ao redor do mundo.
● Pontos Edge: Pontos de presença utilizados com objetivo de reduzir a latência para usuários
finais.
Ex.: Route53 e CloudFront
● Zonas de disponibilidade: Grupos de datacenters distintos dentro das regiões com distância de
centenas de kilômetros entre eles.
● Serviços de Infraestrutura em Nuvem
○ Computação
○ Armazenamento e entrega de conteúdo
○ Banco de dados
○ Redes
● Serviços de Plataforma em Nuvem
○ Análise de dados
○ Serviços empresariais
○ Serviços móveis
○ IoT
● Serviços de aumento de produtividade no desenvolvimento e eficiência operacional
○ Ferramentas para desenvolvedores
○ Ferramentas de gerenciamento
○ Segurança e Identidade
○ Serviços para aplicações
Serviços AWS
Computação
● Servidores Virtuais
○ Amazon EC2: Servidores virtuais na nuvem
● Servidores Físicos
○ Servidores físicos para uso exclusivo
● Contêineres
○ Amazon EC2 Container Service: Serviço escalável de gerenciamento de contêineres
○ Amazon EC2 Container Registry: Serviço de registro de conêineres para armazenamento,
gerenciamento e implementação de imagens Docker, similar ao Docker Hub.
Computação
● Implantação de aplicativos web 1-Clique
○ AWS Elastic Beanstalk: O PaaS da AWS para implementação e gerenciamento de aplicativos
Web. Envie seu código e ele se encarrega da implementação, provisionamento,
escalabilidade, balanceamento e até o monitoramento do aplicativo. Funciona de forma bem
similar ao Heroku, BlueMix, Modulus.
● Funções de computação orientadas a eventos
○ AWS Lambda: Execute seu código em resposta a eventos. É uma ferramenta para execução
de JavaScript como serviço.
● Auto Scaling
○ AWS Auto Scaling: Elasticidade automática
Armazenamento e entrega de conteúdo
● Armazenamento de objetos
○ Amazon S3: Armazenamento escalável de objetos na nuvem com suporte à versionamento e
ciclo de vida. Durabilidade de 99,999999999% e SLA de disponibildiade de 99,99%
● Armazenamento em bloco
○ Amazon EBS: Volumes de armazenamento em bloco do EC2
● Armazenamento do sistema de arquivos
○ Amazon Elastic File System: Sistema de arquivos totalmente gerenciado para EC2
● Armazenamento de arquivos mortos
○ Amazon Glacier: Armazenamento de arquivos com baixo custo na nuvem ($ 0,007/GB - S3: $
0,012/GB ). Usado para fazer backup dos seus backups no S3.
Armazenamento e entrega de conteúdo
● Armazenamento integrado
○ AWS Storage Gateway: Integração de armazenamento híbrido. É como ter o S3 fazendo
parte de sua rede corporativa. Você faz o download de uma máquina virtual que funciona
como um storage de fitas DAT. É um Virtual Tape Library configurado no seu vCenter onde
os dados são enviados ao S3, deixando uma reserva com os mais acessados em um cache
local.
● Transporte de Dados
○ AWS Import/Export Snowball: Solução de transporte de dados em escala de petabytes. A
amazon disponibiliza dispositivos para o transporte de dados até o datacenter deles.
● CDN
○ Amazon CloudFront: Rede de distribuição de conteúdo global
Banco de Dados
● Relacional
○ Amazon RDS: Serviço de banco de dados relacional gerenciado para MySQL, MariaDB,
Postgres, Oracle, SQL Server e Amazon Aurora
● NoSQL
○ Amazon DynamoDB: Database NoSQL similar ao MongoDB para armazenamento de
estruturas de dados e documentos chave-valor rápido, previsível e altamente escalável.
● Armazenamento em cache
○ Amazon ElastiCache: Serviço de armazenamento de cache em memória similar ao
Memcached/Redis.
● Data Warehouse
○ Amazon Redshift: Serviço de data warehouse em escala de petabyte.
Banco de Dados
● Migração de Databases
○ AWS Database Migration Service: Serviço para ajuda na migração de bancos de dados para a
nuvem da AWS, realizando conversão de código e de schema para migrações entre
mecanismos distintos. Como exemplo, permite migrar um banco de dados de 1TB por 3
dólares.
Redes
● Virtual Private Cloud
○ Amazon VPC: Recursos de nuvem isolados. Pode ser compreendido como seu rack de
servidores na AWS.
● Conexões diretas
○ AWS Direct Connect: Conexão de rede dedicada à AWS
● DNS
○ Amazon Route 53: Domain Name System escalável. Suporta uso de healthchecks,
roteamento por latência (geo-localidade), round-robin baseado em peso, etc.
● Balanceamento de carga
○ Elastic Load Balancing: Balanceamento de carga em alta escala
Análise de dados
● Hadoop
○ Amazon EMR (Elastic Map Reduce): Estrutura de Hadoop hospedada da AWS.
● Streaming de Dados
○ Amazon Kinesis: Processamento de fluxo de dados em tempo real. Você usa para inserir
grandes quantidades de dados de forma muito rápida (analytics, transações financeiras,
logs) e depois utilizar outros serviços da AWS para analisar estes dados. Similar ao Apache
Kafka.
● Aprendizagem de máquina
○ Amazon Machine Learning: Aprendizagem de máquina para desenvolvedores. O "skynet" da
AWS usado para prever o comportamento futuro de dados.
Análise de dados
● Data Warehouse
○ Amazon Redshift: Serviço de armazenamento de dados em escala de petabyte
● Pipelines de dados
○ AWS Data Pipeline: Serviço de orquestração para fluxos de trabalho periódicos e
direcionados a dados. É o serviço de ETL (Extract, Transform, Load) da Amazon.
● Business Intelligence
○ Amazon QuickSight: Ferramenta de BI como serviço.
● Elasticsearch
○ Amazon Elasticsearch Service: Serviço que simplifica o deploy, operação e escala do
ElasticSearch na nuvem da AWS. O ElasticSearch é um motor de busca e analytics
opensource usado para análise de logs e monitoramento de aplicações em tempo real, etc.
Serviços Empresariais
● Desktops
○ Amazon Workspaces: Provisionamento/Virtualização de desktops em nuvem.
● Email
○ Amazon WorkMail: Serviço de Email e Calendário.
● Compartilhamento de Documentos
○ Amazon WorkDocs: Serviço de compartilhamento de documentos.
Serviços móveis
● Identidade
○ Amazon Cognito: Identidade de usuário gerenciada. É um serviço de OAuth como serviço
similar ao OAuth.io por exemplo.
● Teste de aplicativos
○ AWS Device Farm: Teste de aplicativos na nuvem.
● Mobile Analytics
○ Amazon Mobile Analytics: Dados analíticos rápidos e seguros sobre o comportamento e uso
de aplicativos.
● Desenvolvimento
○ AWS Mobile SDK: Kit de desenvolvimento de software móvel
○ AWS Mobile Hub: Construa, teste e monitoramento de apps móveis. Permite adicionar e
configurar recursos como autenticação, armazenamento de dados, lógica backend, push
notifications e entrega de conteúdo em um único console, sem preocupação com
provisionamento, dimensionamento e gerência de infraestrutura.
IoT
● Internet das Coisas
○ Amazon IoT: Conecte dispositivos à Cloud. Permite a interação de dispositivos conectados
com aplicativos na nuvem e com outros dispositivos.
Ferramentas para desenvolvedores
● Gerenciamento de código fonte
○ AWS CodeCommit: Armazene e versione código em repositórios Git privados
● Implantação de código
○ AWS CodeDeploy: Automatize implantações de código. Similar ao Fabric e Capistrano.
● Distribuição contínua
○ AWS CodePipeline: Faça o lançamento de softwares usando a distribuição contínua. Permite
a execução de testes automatizados em seu código e então tomar ações baseado no
resultado dos testes. É similar ao CircleCI, Travis;
Ferramentas de gerenciamento
● Monitoramento e logs
○ Amazon CloudWatch: Monitore recursos e aplicações. Similar ao PagerDuty, Statuspage e
Pingdom.
● Modelos de recursos
○ AWS CloudFormation: Crie e gerencie recursos com modelos JSON.
● Auditoria de uso e recursos
○ AWS CloudTrail: Rastreie atividades de usuário e uso de APIs
○ AWS Config: Rastreie inventário e alterações de recursos, além de assegurar que EBS
estejam criptografados, recursos identificados com tag’s, etc.
● Gerenciamento de recursos Dev/Ops
○ AWS OpsWorks: Automatize operações usando o Chef
● Catálogo de serviços
○ AWS Service Catalog: Crie e use produtos padronizados. Permite implantar um portal de
autoatendimento de seriços AWS para seus usuários com suporte a controle de versões e
configurações, permissionamento de uso, etc.
Ferramentas de gerenciamento
● Otimização de segurança e desempenho
○ Trusted Advisor: Otimize o desempenho, segurança e custos.
Segurança e Identidade
● Gerenciamento de identidades
○ AWS Directory Service: Hospede e gerencie o Active Directory ou Samba na AWS.
● Controle de acesso
○ AWS Identity and Access Management (IAM): Gerencie o acesso de usuários, chaves de
criptografia, certificados SSL e políticas de acesso.
● Gerenciamento e armazenamento de chaves
○ AWS CloudHSM: Armazenamento de chaves baseado em hardware para conformidade
normativa
○ AWS Key Management Service: Criação e controle gerenciados de chaves de criptografia
Segurança e Identidade
● Firewall de Aplicações Web
○ AWS WAF: Auxilia na proteção de sites e aplicações web servidas via Cloud Front através de
ACL's que definem os tipos de requisições (HTTP e HTTPS) permitidas ou não. Faz filtro de
tráfego mal intencionado como SQL Injection, scripting e outras ameaças.
● Avaliação de Segurança
○ Amazon Inspector: Análise e segurança de aplicativos procurando por vulnerabilidades e
desvios de práticas recomendadas, com geração de relatório detalhado com informações
para correção.
Serviços para aplicações
● Filas
○ Amazon SQS: Serviço de enfileiramento de mensagens/dados para processamento futuro.
Similar ao RabbitMQ, ActiveMQ, ZeroMQ, SideKiq.
● Fluxo de trabalho
○ Amazon SWF: Serviço de fluxo de trabalho para coordenar componentes/tarefas em
background de aplicações similar ao Iron.io
● Streaming de aplicativos
○ Amazon AppStream: Streaming de aplicações de baixa latência via Internet. Distribua
aplicativos Windows para qualquer dispositivo e acesse remotamente. Funciona como uma
ferramenta para virtualização de aplicações.
Serviços para aplicações
● Transcodificação
○ Amazon Elastic Transcoder: Transcodificação de mídia na nuvem totalmente escalável.
● E-mail
○ Amazon SES: Serviço de envio de e-mails. Usado para envio de emails transacionais,
mensagens de marketing, boletins, alertas.
● Notificações
○ Amazon SNS: Notificações, atualizações e promoções da plataforma via push notification,
email, sms. Similar ao UrbanAirship e Twilio.
● Gerenciamento de API
○ Amazon API Gateway: Gerenciamento de backend. Permite a criação, publicação,
gerenciamento e monitoramento de APIs para suas aplicações.
Serviços para aplicações
● Pesquisa
○ Amazon CloudSearch: Serviço de pesquisa gerenciada. Usado como ferramenta de busca
full-text em sites ou apps.
Demo EC2
● https://console.aws.amazon.com/console/home
● Criando uma EC2
● Configurando Security Group
● Instalação de insumos para teste
● Criação de AMI
● Terminate na Instância Original
● Criação de Load Balancer
● Apontar domínio para ELB (www > Tipo A · Alias > ELB)
● Configuração de Launch Configuration
Demo EC2
● Configuração de Auto Scalling Group (Desired 1, Min 1, Max 2)
○ Subnet 1A / 1B
○ Marcar uso do ELB
○ Policy Up: CPU >= 85 % | 1 período de 1 minuto
○ Policy Down: CPU <= 65 % | 1 período de 1 minuto
○ Health Check Grace 60s
○ Cooldown 30s
● Checar a criação da 1a instância
● Testar acesso pelo endpoint do ELB
● Teste de Auto Scaling (stress -c 5 -i 1 -m 1 --vm-bytes 128M -t 500s)
● Checar a criação da 2s instância