Escolar Documentos
Profissional Documentos
Cultura Documentos
Janeiro de 2010
Jinesh Varia
jvaria@amazon.com
Pgina 1 de 23
Janeiro de 2010
Introduo
Os arquitetos de software esto h vrios anos descobrindo e implementando vrios conceitos e prticas recomenda
das para criar aplicativos altamente escalveis. Atualmente na era do tera, esses conceitos so ainda mais aplicveis
por causa dos conjuntos de dados em contnuo crescimento, padres de trfego imprevisveis e a procura por tempos
de resposta mais rpidos. Este whitepaper vai reforar e reiterar alguns destes conceitos tradicionais e discutir como
pode evoluir no contexto da computao em nuvem. Tambm sero discutidos alguns conceitos sem precedentes,
como a elasticidade que surgiu devido natureza dinmica da nuvem.
Este artigo direcionado para os arquitetos de nuvem, que esto se preparando para mover um aplicativo empresarial
de um ambiente fsico fixo para um ambiente virtualizado em nuvem. O foco deste whitepaper destacar conceitos,
princpios e prticas recomendadas na criao de novos aplicativos em nuvem ou na migrao de aplicativos existente
para a nuvem.
Histrico
Como um arquiteto de nuvem, importante compreender os benefcios de computao em nuvem. Nesta seo,
voc vai aprender alguns dos benefcios tcnicos e comerciais da computao em nuvem e dos diferentes servios
atualmente disponveis na AWS.
Pgina 2 de 23
Janeiro de 2010
Reduo do tempo de entrega: a paralelizao uma das grandes maneiras de acelerar o processamento. Se um
trabalho com computao ou dados de uso intensivo que podem ser executados em paralelo podem levar 500 horas
para processar em uma mquina, com as arquiteturas de nuvem [6], seria possvel gerar e iniciar 500 instncias
e processar o mesmo trabalho em 1 hora. Ter uma infraestrutura elstica disponvel fornece o aplicativo com a
capacidade de explorar a paralelizao de forma econmica, reduzindo o tempo de mercado.
O Amazon Elastic Compute Cloud (Amazon EC2) um servio da Web que fornece uma capacidade de computao
redimensionvel em nuvem. Voc pode agrupar o sistema operacional, o software de aplicativo e as definies de
configurao associadas em uma Amazon Machine Image (AMI). Voc pode utilizar essas AMIs para configurar vrias
instncias virtualizadas, bem como encerr-las utilizando as chamadas simples de servio web para dimensionar a
capacidade de reduzir ou expandir rapidamente, alterando o seu requisito de capacidade. Voc pode comprar as
Pgina 3 de 23
Janeiro de 2010
Instncias On Demand cujo pagamento calculado por hora ou as Instncias Reservadas cujo pagamento efetuado
uma nica vez e de um pequeno valor e receber uma taxa mais baixa de utilizao para executar a instncia do que
para uma instncia On-Demand ou tambm pode comprar as Instncias Spot para as quais possvel solicitar reduo
de valores pela capacidade no utilizada e reduzir ainda mais o seu custo. As instncias podem ser iniciadas em uma
ou mais regies geogrficas. Cada regio tem vrias Zonas de disponibilidade. As Zonas de disponibilidade so as
posies distintas que so projetadas para serem isoladas das falhas em outras Zonas da disponibilidade e fornecem
rede de conectividade acessvel e de baixa latncia para outras Zonas de disponibilidade da mesma regio.
Amazon
RDS
Seu aplicativo
Auto
Scaling
Elastic
LB
Definio de fluxo de
trabalho do Amazon
Elastic MapReduce
Nuvem
Watch
Buckets e
objetos do
Amazon S3
Amazon
Cloud
Front
Snapshots
Amazon
Virtual Private Cloud
Os endereos do Elastic IP permitem que voc atribua um endereo IP esttico de forma programtica a uma instncia.
Voc pode habilitar o monitoramento em uma instncia do Amazon EC2 utilizando o Amazon CloudWatch2 a fim de
ganhar visibilidade na utilizao de recursos, desempenho operacional e padres de demanda global (incluindo mtricas
como a utilizao do CPU, leituras e gravaes de discos e trfego de rede). Voc pode criar um grupo Auto Scaling
utilizando o recurso Auto-scaling3 para dimensionar automaticamente a sua capacidade em determinadas condies
com base em mtricas que o Amazon CloudWatch coleta. Voc tambm pode distribuir o trfego de entrada, criando
um Elastic Load Balancer utilizando o servio Elastic Load Balancing4. Os volumes do Amazon Elastic Block Storage (EBS)5
fornecem armazenamento persistente anexado rede para instncias do Amazon EC2. Snapshots consistentes nos
volumes EBS atuais podem ser criadas e armazenadas no Amazon Simple Storage Service (Amazon S3)6.
Pgina 4 de 23
Janeiro de 2010
O Amazon S3 um armazenamento de dados distribudo e altamente durvel. Com uma interface simples de servios da
web, voc pode armazenar e recuperar grandes quantidades de dados como objetos em buckets (containers) a qualquer
momento, de qualquer lugar na web utilizando verbos HTTP padro. As cpias de objetos podem ser distribudas e
armazenadas em cache em 14 pontos de presena ao redor do mundo, criando uma distribuio utilizando o servio
Amazon CloudFront7 um servio da web para entrega de contedo (esttico ou de streaming). O Amazon SimpleDB8
um servio da web que oferece uma funcionalidade principal de pesquisa de banco de dados em tempo real e de
consulta simples de dados estruturados, sem a complexidade operacional. Voc organiza seus dados estruturados
emdomnios e pode executar consultas em todos os dados armazenados em um domnio especfico. Os domnios so
conjuntos deitens que so descritos por pares de valores de atributos. O servio de banco de dados relacional9 (Amazon
RDS) facilita a configurao, a operao e o dimensionamento de seu banco de dados relacional em nuvem. Voc pode
iniciar uma Instncia de banco de dados e obter acesso a um banco de dados MySQL completo sem se preocupar com
tarefas comuns de administrao de banco de dados como backups, gerenciamento de patch, etc.
O Amazon Simple Queue Service (Amazon SQS)10 oferece uma fila hospedada altamente escalvel e confivel para o
armazenamento de mensagens medida em que elas transitam entre computadores.
O Amazon Simple Notifications Service (Amazon SNS)11 fornece uma maneira simples para notificar aplicativos ou
pessoas a partir da nuvem criando tpicos e utilizando um protocolo de publicao de assinatura.
O Amazon Elastic MapReduce12 fornece uma estrutura Hadoop hospedada sendo executada na infraestrutura de escala
da web do Amazon Elastic Compute Cloud (Amazon EC2) e Amazon Simple Storage Service (Amazon S3) e permite que
voc crie JobFlows personalizados. JobFlow uma sequncia de etapas do MapReduce.
O Amazon Virtual Private Cloud (Amazon VPC)13 permite que voc amplie a sua rede corporativa em uma nuvem privada
contida na AWS. O Amazon VPC utiliza o modo Tunnel IPSec que permite que voc crie uma conexo segura entre um
gateway no seu datacenter e um gateway na AWS.
O Amazon Route53 um servio DNS altamente escalvel que permite que voc gerencie os seus registros DNS, criando
um HostedZone para cada domnio que voc gostaria de gerenciar.
O AWS Identity and Access Management (IAM)14 permite que voc crie mltiplos usurios e gerencie permisses para
cada um desses usurios a partir de sua conta da AWS. O IAM integrado nativamente nos servios AWS. Nenhuma
das APIs de servio foi alterada para suportar a IAM, aplicativos de sada e as ferramentas projetadas a partir de APIs
de servio da AWS continuam a funcionar enquanto a IAM estiver sendo usada.
A AWS tambm oferece diversos servios de pagamento e faturamento15 que aproveitam a infraestrutura de pagamento
da Amazon.
Pgina 5 de 23
Janeiro de 2010
Todos os servios de infraestrutura da AWS oferecem um utilitrio de estilo de preos sem exigir contratos ou
compromissos a longo prazo. Por exemplo, voc paga por hora pelo uso da instncia do Amazon EC2 e paga pelo
gigabyte para armazenamento e transferncia de dados no caso do Amazon S3. Mais informaes sobre cada um
desses servios e seus definies de preo pague somente pelo o que usar esto disponveis no site da AWS.
Observe que o uso da nuvem da AWS no requer sacrificar a flexibilidade e o controle a que voc j est acostumado:
Voc livre para utilizar o modelo de programao, linguagem ou sistema operacional (Windows, OpenSolaris
ou qualquer tipo de Linux) de sua escolha.
Voc livre para escolher os produtos da AWS que melhor satisfazem as suas necessidades voc pode utilizar
qualquer um dos servios individualmente ou em qualquer combinao.
A AWS fornece recursos redimensionveis (armazenamento, largura de banda e computao), e por isso voc
est livre para utilizar muito ou pouco e s paga o que voc de fato utilizar.
Voc livre para utilizar as ferramentas de gerenciamento de sistema utilizadas no passado e ampliar o seu
datacenter para dentro da nuvem.
Pgina 6 de 23
Janeiro de 2010
Conceitos de nuvem
A nuvem refora alguns conceitos antigos de criao de arquiteturas [13] da Internet altamente escalveis e introduz
alguns novos conceitos que mudam completamente o modo pelo qual os aplicativos so criados e implantados. Assim,
quando voc passar do conceito para a implementao, voc pode obter a sensao de que "Tudo mudou, mas nada
diferente". A nuvem altera vrios processos, padres, prticas, filosofias e refora alguns princpios tradicionais de
arquitetura orientados ao servio que voc aprendeu pois eles so ainda mais importantes do que antes. Nesta seo,
voc ver alguns desses novos conceitos de nuvem e conceitos SOA renovados.
Os aplicativos tradicionais foram projetados com base em alguns paradigmas pr-concebidos que tinham relevncia
econmica e arquitetnica no momento em que foram desenvolvidos. A nuvem traz algumas filosofias novas que
voc precisa entender e que so argumentadas abaixo:
Estas so as informaes que devem se transformar em uma parte inerente do seu aplicativo e se voc projetar a sua
arquitetura com as caractersticas acima em mente, logo em seguida a sua arquitetura e infraestrutura trabalharo
juntas para disponibilizar a voc a escalabilidade que est procurando.
Pgina 7 de 23
Janeiro de 2010
Grandes despesas
de capital
Demanda prevista
Demanda real
Abordagem de expanso
Abordagem de
expanso tradicional
Elasticidade automatizada
16
http://en.wikipedia.org/wiki/Slashdot_effect
Pgina 8 de 23
Tempo t
Janeiro de 2010
A infraestrutura tradicional geralmente exige uma previso da quantidade de recursos computacionais que o seu
aplicativo utilizar ao longo de um perodo de vrios anos. Se voc subestimar, os seus aplicativos no tero a
potncia suficiente para lidar com o trfego inesperado, resultando potencialmente na insatisfao do cliente.
Se voc superestimar, perder dinheiro com recursos suprfluos.
No entanto, a natureza elstica e on demand da abordagem de nuvem (elasticidade automatizada), permite que a
infraestrutura possa ser alinhada (como ela se expande e reduz) com a demanda real, aumentando assim a utilizao
global e reduzindo os custos.
A elasticidade uma das propriedades fundamentais da nuvem. A elasticidade o poder para dimensionar recursos
computacionais diminuindo ou expandindo facilmente e com o mnimo de atrito. importante compreender que a
elasticidade acabar por conduzir a maioria dos benefcios da nuvem. Como um arquiteto de nuvem, voc precisar
internalizar este conceito e trabalhar em sua arquitetura de aplicativo a fim de aproveitar a nuvem ao mximo.
Tradicionalmente, os aplicativos foram projetados para a infraestrutura fixa, rgida e pr-provisionada. As empresas nunca
tiveram a necessidade de provisionar e instalar servidores em base diria. Como resultado, a maioria das arquiteturas de
software no atendem a implementao rpida ou a reduo de hardware. O tempo de provisionamento e investimento
inicial at a aquisio de novos recursos era demasiadamente elevado, os arquitetos de software nunca investiram tempo
e recursos na otimizao para a utilizao do hardware. Era aceitvel se o hardware no qual o aplicativo estava sendo
executado fosse subutilizado. A noo de elasticidade dentro de uma arquitetura foi esquecida porque a ideia de ter
novos recursos em minutos no foi possvel.
Com a nuvem, essa mentalidade precisa mudar. A computao em nuvem simplifica o processo de aquisio dos
recursos necessrios; no h nenhuma necessidade de fazer pedidos antes do tempo e de manter o hardware no
utilizado em cativeiro. Em vez disso, os arquitetos de nuvem podem solicitar o que precisam poucos minutos antes
de precisarem ou automatizar o processo de aquisio, aproveitando a vasta escala e o tempo de resposta rpida da
nuvem. O mesmo se aplica para liberar os recursos desnecessrios ou subutilizados quando voc no precisa deles.
Se voc no pode abraar a mudana e implementar a elasticidade na sua arquitetura de aplicativo, voc ser incapaz
de aproveitar a nuvem ao mximo. Assim como um arquiteto de nuvem, voc deve pensar de maneira criativa pensando
de que maneiras voc pode implementar a elasticidade no seu aplicativo. Por exemplo, a infraestrutura que costumava
executar compilaes dirias todas as noites e realizar testes de regresso e unidade todas as noites s 2h durante duas
horas (muitas vezes denominadas como Caixa de controle de qualidade da compilao) ficava como ociosa pelo resto
do dia. Agora, com a infraestrutura elstica, pode-se executar compilaes noturnas em caixas que esto ativas e est
sendo pago apenas por 2 horas por noite. Da mesma forma, um problema interno no aplicativo da web de emisso
de tquetes que sempre utilizado para executar em capacidade mxima (5 servidores 24 x 7 x 365) para atender a
demanda durante o dia agora pode ser configurado tambm para ser executado sob demanda (5 servidores das 9h
as 17h e 2 servidores das 17h as 9h) com base no padro de trfego.
Projetar arquiteturas inteligentes de nuvens elsticas, para que a infraestrutura seja executada somente quando voc
precisa dela, uma arte em si. A elasticidade deve ser um dos requisitos do projeto arquitetnico ou uma propriedade
do sistema. Perguntas que voc precisa fazer: quais os componentes ou as camadas em minha arquitetura de aplicativo
podem se tornar elsticas? O que ser necessrio para tornar esse componente elstico? Qual ser o impacto da
implementao da elasticidade minha arquitetura geral do sistema?
Na prxima seo, voc ver tcnicas especficas para implementar a elasticidade em seus aplicativos. Para aproveitar
efetivamente os benefcios da nuvem, importante um arquiteto com essa mentalidade.
Pgina 9 de 23
Janeiro de 2010
No temendo restries
Quando voc decidir mover os seus aplicativos para a nuvem e tentar mapear as suas especificaes de sistema para
aquelas disponveis na nuvem, voc vai notar que a nuvem pode no ter a especificao exata do recurso que voc tem
no local. Por exemplo, a nuvem no fornece um X de memria RAM em um servidor ou Meu banco de dados precisa
ter mais IOPS do que posso obter em uma nica instncia.
Voc deve compreender que a nuvem fornece recursos abstratos e eles se tornam poderosos quando voc os combina com
o modelo de provisionamento on demand. Voc no deve ficar com receio e nem constrangido, quando estiver utilizando
recursos de nuvem porque importante compreender que, mesmo que voc no tenha uma rplica exata do seu hardware
no ambiente da nuvem, voc poder obter mais desses recursos em nuvem para compensar essa necessidade.
Por exemplo, se a nuvem no lhe fornecer RAM com exatido ou maior quantidade em um servidor, tente usar um
cache distribudo do tipo memcached17ou particionar seus dados em vrios servidores. Se seus bancos de dados
precisam de mais E/S por segundo e no mapearem diretamente a da nuvem, h vrias recomendaes que voc
pode escolher de acordo com seu tipo de dados e utilizao. Se for um aplicativo de leitura frequente, voc pode
distribuir a carga de leitura atravs de uma frota de escravos sincronizados. Como alternativa, voc pode usar um
algoritmo de fragmentao [10] que direciona os dados aonde eles precisam estar ou voc pode usar vrias solues
de clustering de bancos de dados.
Recapitulando, quando voc combina os recursos de provisionamento sob demanda com a flexibilidade, voc vai notar
que aparentes restries na verdade podero ser entendidas como formas que realmente iro melhorar a escalabilidade
e o desempenho geral do sistema.
Administrao virtual
O advento da nuvem mudou o papel do administrador do sistema para um "administrador de sistema virtual". Isso
simplesmente significa que tarefas rotineiras realizadas por esses administradores agora tornaram-se ainda mais
interessantes medida que eles aprendem mais os sobre aplicativos e decidem o que melhor para a empresa como
um todo. O administrador do sistema j no tem a necessidade de provisionar servidores, instalar software e conectar
dispositivos de rede j que todo esse trabalho maante substitudo por alguns cliques e linhas de comando. A nuvem
incentiva a automao porque a infraestrutura programvel. Os administradores de sistema precisam mover a roda
da tecnologia e aprender como gerenciar recursos abstratos de nuvem abstrata utilizando scripts.
Da mesma forma, a funo do administrador do banco de dados se altera para administrador de banco de dados virtual
na qual ele/ela gerencia recursos atravs de um console baseado na web, executa scripts que adicionam novas
capacidades por meio de programao no caso dos recursos de hardware de banco de dados se esgotarem e automatiza
os processos de rotina. O DBA virtual deve agora aprender novos mtodos de implantao (imagens de mquina virtual),
adotar novos modelos (paralelizao de consulta, geo-redundncia e replicao assncrona [11]), repensar a arquitetura
de abordagem para dados (fragmentao [9], particionamento horizontal [13], federao [14]) e aproveitamento das
diferentes opes de armazenamento disponveis na nuvem para os diferentes tipos de conjuntos de dados.
Na empresa tradicional, os desenvolvedores de aplicativos podem no trabalhar em estreita colaborao com os
administradores de rede e administradores de rede podem no ter a menor ideia sobre o aplicativo. Como resultado,
possveis otimizaes na camada de rede e na camada de arquitetura do aplicativo podero negligenciadas. Com a
nuvem, as duas funes se fundiram a uma em razovel extenso. Projetando a arquitetura de futuras aplicaes, as
empresas devem encorajar mais polinizao cruzada de conhecimento entre as duas funes e entender que elas esto
em processo de fuso.
17
http://www.danga.com/memcached/
Pgina 10 de 23
Janeiro de 2010
Boas arquiteturas de nuvem devem ser a prova de reboots e reinicalizaes. Em GrepTheWeb (discutido no artigo Cloud
Architectures [6]), usando uma combinao do Amazon SQS e do Amazon SimpleDB, a arquitetura geral do controlador
muito resistente aos tipos de falhas listados nesta seo. Por exemplo, se a instncia na qual o thread controlador
estava sendo executado for desativada, ela pode ser reativada e retomar o seu estado anterior, como se nada tivesse
acontecido. Isso foi alcanado com a criao de uma Amazon Machine Image (AMI) pr-configurada, que, quando
iniciada, retira da fila todas as mensagens do Amazon SQS e l seus estados a partir de um domnio em reboot do
Amazon SimpleDB.
Projetar com uma suposio de que o hardware subjacente ir falhar, pode prepar-lo para o futuro quando isso
realmente ocorrer.
Pgina 11 de 23
Janeiro de 2010
Este princpio de design o ajudar a projetar aplicativos de fcil operao, assim como foi destacado no artigo de
Hamilton [11]. Se voc puder estender este princpio para medir e equilibrar cargas dinamicamente e de forma
proativa, pode ser que voc consiga gerenciar a variao no desempenho de disco e de rede que existe devido
natureza multilocatria da nuvem.
Tticas especficas da AWS para implementar essa prtica recomendada:
1. Enfrente um failover com tranquilidade usando Elastic IPs: Elastic IP um endereo IP esttico que
dinamicamente remapevel. Voc pode rapidamente remapear e fazer um failover para outro
conjunto de servidores para que o seu trfego seja direcionado para os novos servidores. Isso
funciona muito bem quando voc deseja fazer atualizaes para verses mais novas ou em caso
de falhas de hardware
2. Utilize vrias Zonas de disponibilidade: as Zonas de disponibilidade so conceitualmente semelhantes
a datacenters lgicos. Ao implantar sua arquitetura em vrias Zonas de disponibilidade, voc pode
garantir alta disponibilidade. Utilize a funcionalidade de implantao do Amazon RDS Multi-AZ [21]
para replicar automaticamente atualizaes de banco de dados em vrias Zonas de disponibilidade.
3. Mantenha uma Amazon Machine Image para que voc possa facilmente restaurar e clonar
ambientes em uma Zona de disponibilidade diferente; Mantenha vrios bancos de dados
secundrios nas Zonas de disponibilidade e configure uma replicao dinmica.
4. Utilize o Amazon CloudWatch (ou vrias ferramentas de monitoramento em tempo real de cdigo
aberto) para obter mais visibilidade e tomar as medidas apropriadas em caso de degradao de
desempenho ou falha de hardware. Configure um grupo de Auto scaling para manter um tamanho
fixo de frota para que este substitua as instncias com problemas do Amazon EC2 por novas.
5. Utilize o Amazon EBS e configure trabalhos cron para que as snapshots incrementais sejam
automaticamente enviadas para o Amazon S3 e os dados sejam mantidos independentes de
suas instncias.
6. Utilize o Amazon RDS e defina o perodo de reteno para os backups, para que ele possa realizar
backups automatizados.
Pgina 12 de 23
Janeiro de 2010
A dissociao entre seus componentes, a construo de sistemas assncronos e o dimensionamento horizontal tornamse muito importantes no contexto da nuvem. Isso no somente permitir que voc amplie seu sistema adicionando
mais instncias do mesmo componente, mas tambm permitir que voc crie modelos hbridos inovadores nos quais
alguns componentes continuam a ser executados no local, enquanto outros componentes podem tirar proveito do
dimensionamento em nuvem e usar a nuvem para potncia de computao adicional e largura de banda. Dessa forma,
com o mnimo esforo, voc pode direcionar "excesso" de trfego para a nuvem atravs da implementao de tticas
de balanceamento de carga inteligente.
possvel criar um sistema de baixo acoplamento usando filas de mensagens. Se uma fila/buffer usada para conectar
quaisquer dois componentes, ser possvel oferecer suporte a simultaneidade, a alta disponibilidade e a picos de
carga. Como resultado, o sistema como um todo continua a ser executado mesmo se partes de componentes esto
temporariamente indisponveis. Se um componente desativado ou fica temporariamente indisponvel, o sistema
armazenar as mensagens em buffer e as processar quando o componente for reativado.
Chamar um mtodo em B
Controlador a partir de A
Controlador
Chamar um mtodo em C
a partir de B
Controlador
Fila A
Controlador
A
Fila C
Controlador
B
Controlador
C
Voc observar um grande uso de filas na arquitetura GrepTheWeb descritas em detalhes no artigo Cloud Architectures
[6]. Em GrepTheWeb, se muitas solicitaes de repente chegam ao servidor (uma situao de sobrecarga induzida pela
Internet) ou o processamento de expresses regulares leva mais tempo do que a mdia (lenta taxa de resposta de um
componente), as filas do Amazon SQS armazenam as solicitaes em buffer de forma durvel para que esses atrasos no
afetem outros componentes.
Tticas especficas da AWS para implementar essa prtica recomendada:
1. Use o Amazon SQS para isolar componentes [18]
2. Use o Amazon SQS como armazenamento em buffers entre componentes [18]
3. Projete cada componente a fim de que exponha uma interface de servio e seja responsvel por
sua prpria capacidade de expanso em todas as dimenses adequadas e para que interaja com
outros componentes de forma assncrona
4. Inclua a construo lgica de um componente em uma Amazon Machine Image para que ele possa
ser implantado com mais frequncia
5. Deixe seus aplicativos o mais sem monitorao de estado possvel. Armazene o estado de sesso
fora do componente (no Amazon SimpleDB, se apropriado)
Pgina 13 de 23
Janeiro de 2010
Implemente elasticidade
A nuvem traz um novo conceito de elasticidade para seus aplicativos. A elasticidade pode ser implementada de
trs maneiras:
1. Dimensionamento proativo cclico: dimensionamento peridico que ocorre em intervalo fixo (diria,
semanal, mensal ou trimestralmente)
2. Dimensionamento proativo baseado em evento: executa o dimensionamento apenas quando voc est
esperando uma grande onda de solicitaes de trfego devido a um evento de negcios agendado
(novo lanamento de produto, campanhas de marketing)
3. Auto-scaling baseado em demanda. Usando um servio de monitoramento, seu sistema pode enviar
disparadores para tomar as medidas apropriadas para que ele possa se expandir ou se reduzir com base
em mtricas (utilizao dos servidores ou rede e/s, por exemplo)
Para implementar a "Elasticidade", preciso primeiro automatizar o processo de implantao e simplificar a configurao
e o processo de compilao. Isso assegurar que o sistema pode ser expandido sem qualquer interveno humana.
Isso resultar em benefcios de custo imediato, medida que a utilizao geral aumentada ao garantir que seus recursos
estejam alinhados com a demanda, em vez de sendo executados potencialmente em servidores que so subutilizados.
Automatize sua infraestrutura
Um dos benefcios mais importantes do uso de um ambiente de nuvem a capacidade de usar APIs da nuvem para
automatizar o processo de implantao. recomendvel que voc disponha de tempo para criar um processo
automatizado de implantao no incio durante o processo de migrao e no espere at o final. Criar um processo de
implantao automatizada e repetvel ajudar a reduzir erros e facilitar um processo de atualizao eficiente e escalvel.
Para automatizar o processo de implantao:
Criar uma biblioteca de "receitas" pequenos scripts utilizados frequentemente (para instalao e configurao)
Gerencie a configurao e o processo de implantao usando agentes includos em uma AMI
Inicializao de suas instncias
Recrie o ambiente (Dev, preparo, produo) em alguns cliques e com um esforo mnimo
Mais controle sobre seus recursos abstratos baseados em nuvem
Reduzir erros de implantao induzidos pelo homem
Crie um ambiente de auto correo e de auto descobrimento que mais resistente a falhas de hardware
Pgina 14 de 23
Janeiro de 2010
Pense paralelo
A nuvem faz a paralelizao sem esforo. Se ela est solicitando dados de nuvem, armazenando dados para a nuvem,
processando dados (ou executando trabalhos) na nuvem, como um arquiteto de nuvem, voc precisar internalizar o
conceito de paralelizao ao projetar arquiteturas na nuvem. aconselhvel no apenas implementar a paralelizao
sempre que possvel, mas tambm automatiz-la pois a nuvem permite que voc crie um processo repetitivo
muito facilmente.
18
Pgina 15 de 23
Janeiro de 2010
Quando se trata de acesso a dados (recuperando e armazenando), a nuvem projetada para manipular operaes
massivamente paralelas. Para atingir o mximo desempenho e taxa de transferncia, voc deve aproveitar opedido de
paralelizao. Ao realizar o multi-threading de suas solicitaes usando threads simultneos armazenar ou buscar os
dados mais rapidamente do que solicita-los em sequncia. Assim, sempre que possvel, os processos de um aplicativo
em nuvem devem ser feitos de maneira segura para o thread atravs de uma filosofia de no compartilhamento e de
aproveitamento de multi-threading.
Quando se trata de processamento ou de solicitaes em execuo na nuvem, torna-se ainda mais importante aproveitar a
paralelizao. Uma prtica recomendada geral, no caso de um aplicativo da web, distribuir as solicitaes de entrada em
vrios servidores web assncronos usando o balanceador de carga. Em caso de aplicativo de processamento em lote, voc
pode dominar ns que podem gerar vrios ns de trabalho secundrio nessa tarefa de processos em paralelo (como em
estruturas de processamento distribudo como o Hadoop 26)
A beleza da nuvem aparece quando voc combina elasticidade e paralelizao. Seu aplicativo de nuvem pode trazer
um cluster de instncias de computao que provisionado em minutos com apenas algumas chamadas de API,
pode realizar um trabalho, executando tarefas em paralelo, pode armazenar os resultados e pode encerrar todas as
instncias. O aplicativo GrepTheWeb discutido em [6] um exemplo disso.
Tticas especficas da AWS para paralelizao:
1. Realize o lanamento de vrios threads de seu Amazon S3 conforme detalhamento no artigo sobre
Prticas recomendadas [2]
2. Realize o lanamento de vrios threads de suas solicitaes GET e BATCHPUT do Amazon SimpleDB [3]
[4] [5]
3. Crie um JobFlow usando o servio Amazon Elastic MapReduce para cada um dos seus processos dirios
de lote (indexao, anlise de logs, etc.) que calcularo o trabalho em paralelo e economizaro tempo
4. Use o servio do Elastic Load Balancing e distribua sua carga entre vrios servidores de aplicativos
web dinamicamente
26
http://hadoop.apache.org/
Pgina 16 de 23
Janeiro de 2010
Se os dados so gerados em nuvem, em seguida, os aplicativos que consomem os dados tambm devem ser
implantados em nuvem para que eles possam aproveitar a transferncia de dados em nuvem e baixa latncia.
Por exemplo, no caso de um aplicativo web de e-commerce que gera logs e dados de sequncia de cliques,
aconselhvel executar o analisador de log e relatrio de motores em nuvem.
Por outro lado, se os dados so estticos e no mudaro com frequncia (por exemplo, imagens, vdeo, udio, PDFs,
JS, arquivos CSS), aconselhvel tirar proveito de um servio de entrega de contedo para que os dados estticos sejam
armazenadas em cache em um local perifrico mais prximo do usurio final (solicitante) diminuindo assim a latncia de
acesso. Devido ao cache, um servio de entrega de contedo fornece acesso mais rpido aos objetos populares.
Tticas especficas da AWS para implementar essa prtica recomendada:
1. Insira seus dados de discos rgidos no Amazon usando o servio de Import/Export27. Pode ser mais
barato e mais rpido para mover grandes quantidades de dados usando o sneakernet28 do que para
carregar usando a Internet
2. Utilize a mesma Zona de disponibilidade para lanar um cluster de mquinas
3. Crie uma distribuio de seu bucket do Amazon S3 e deixe o contedo dos caches do Amazon
CloudFront desse bucket em todos os 14 pontos de presena ao redor do mundo
27
Mais informaes sobre o Amazon Import Export Services podem ser encontradas em http://aws.amazon.com/importexport
http://en.wikipedia.org/wiki/Sneakernet
29
http://www.verisign.com/ssl/
30
http://www.entrust.net/ssl-products.htm
28
Pgina 17 de 23
Janeiro de 2010
31
http://www.gnupg.org
http://www.pgp.com/
33
http://www.truecrypt.org/
34
http://www.arg0.net/encfs
35
http://loop-aes.sourceforge.net/loop-AES.README
36
http://www.saout.de/misc/dm-crypt/
37
http://www.truecrypt.org/
38
http://www.opensolaris.org/os/community/zfs/
32
Pgina 18 de 23
Janeiro de 2010
Se sua Amazon Machine Image (AMI) est executando processos que precisam se comunicar com outros servios web
da AWS (sondagem a fila do Amazon SQS ou para ler objetos do Amazon S3, por exemplo), um erro de concepo
comum incorporar as credenciais AWS na AMI. Em vez de incorporadas as credenciais devem ser passadas como
argumentos durante o lanamento e a criptografia antes de serem enviados pela conexo [17].
Se sua chave de acesso secreta for comprometida, voc deve obter uma nova girando para uma nova39 ID de chave de
acesso secreta. Como uma boa prtica, recomendvel que voc incorpore um mecanismo de rotao de chaves em
sua arquitetura de aplicativo para que voc possa us-lo em uma base regular ou ocasionalmente (quando o funcionrio
insatisfeito deixa a empresa) para garantir que as chaves comprometidas no possam durar por muito tempo.
Como alternativa, voc pode usar os certificados x.509 para autenticao para determinados servios da AWS. O arquivo
de certificado contm sua chave pblica em um corpo de certificado DER codificado em base64. Um arquivo separado
contm a chave privada correspondente codificado em base64 PKCS#8.
A AWS oferece suporte a autenticao multi-factor40 como um protetor adicional para trabalhar com as informaes
de sua conta em aws.amazon.com e AWS Management Console41.
Gerencie vrios usurios e suas permisses com a IAM
O AWS Identity and Access Management (IAM)42 permite que voc crie vrios usurios e gerencie permisses para
cada um desses usurios a partir de sua conta da AWS. Um usurio uma identidade (dentro de sua conta da AWS)
com credenciais de segurana exclusivas que podem ser usadas para acessar os servios da AWS. O IAM elimina a
necessidade de compartilhar senhas ou chaves de acesso e facilita a ativao e a desativao de acesso de um Usurio,
conforme apropriado.
O IAM permite que voc implemente melhores prticas de segurana, tais como menor privilgio, conceder credenciais
nicas para cada usurio dentro de sua conta AWS e s conceder permisso para acessar os servios e recursos da AWS
necessrios para os usurios realizarem seu trabalho Como padro, o IAM seguro; os novos usurios no devem
acessar os recursos do AWS at que permisses sejam explicitamente concedidas.
A IAM integrada nativamente nos servios da AWS. Nenhuma API de servio foi alterada para oferecer suporte ao IAM
e aplicaes e ferramentas baseadas em APIs de servio da AWS que continuaro a funcionar quando o IAM estiver
sendo usado. Os aplicativos s precisam comear a usar as chaves de acesso geradas para um novo usurio.
Voc deve minimizar o uso de suas credenciais de conta AWS, tanto quanto possveis quando estiver interagindo com
seus servios AWS e aproveitar as credenciais de usurio IAM para acessar recursos e servios da AWS.
Proteja seu aplicativo
Cada instncia do Amazon EC2 est protegida por um ou mais Grupos de segurana43, chamado conjuntos de regras
que especificam em qual ingresso (ou seja, entrada) o trfego de rede deve ser entregue sua instncia. Voc pode
especificar portas TCP e UDP, tipos ICMP, cdigos e endereos de origem. Os grupos de segurana oferecem proteo
bsica com um firewall para instncias em execuo. Por exemplo, as instncias que pertencem a um aplicativo web
podem ter as seguintes configuraes de grupo de segurana:
39
http://aws.amazon.com/about-aws/whats-new/2009/08/31/seamlessly-rotate-your-access-credentials/
Mais informaes sobre o Multi-factor Authentication esto disponveis em http://aws.amazon.com/pt/mfa/
41
AWS Management Console http://aws.amazon.com/console/
42
Mais informaes em http://aws.amazon.com.com/iam
43
Mais informaes sobre o grupo de segurana esto disponveis em http://docs.amazonwebservices.com/AWSEC2/2009-0715/UserGuide/index.html?using-network-security.html
40
Pgina 19 de 23
Janeiro de 2010
Figura4: Protegendo seu aplicativo web usando os grupos de segurana do Amazon EC2
Outra forma de restringir o trfego de entrada configurar firewalls baseados em software em suas instncias.
Instncias do Windows podem usar o firewall interno44. As instncias do Linux podem usar o netfilter45 e o iptables.
Ao longo do tempo, erros no software so descobertos e exigem patches de correo. Certifique-se de seguir as
seguintes orientao bsicas para maximizar a segurana do seu aplicativo:
Fazer downloads regularmente dos patches do site do fornecedor e atualizar suas AMIs
Reimplantar instncias de AMIs novas e testar os aplicativos para garantir que os patches no corrompem nada.
Certifique-se de que a AMI mais recente est implantada em todas as instncias
Investa em scripts de teste para que voc possa executar verificaes de segurana periodicamente e
automatizar o processo
Verifique se o software de terceiros est definido com as configuraes mais seguras
Nunca execute seus processos logado como raiz ou Administrador a menos que seja absolutamente necessrio
Toda as prticas segurana padro da era pr-nuvem como a adoo de boas prticas de codificao, isolamento os
dados confidenciais ainda so aplicveis e devem ser implementadas.
Em contrapartida, a nuvem retira a complexidade da segurana fsica e lhe d o controle atravs de ferramentas e
recursos para que voc possa proteger o seu aplicativo.
44
45
Pgina 20 de 23
Janeiro de 2010
Concluso
Este artigo forneceu orientaes prescritivas para arquitetos de nuvem para criar aplicativos de nuvem eficientes.
Concentrando-se em conceitos e prticas recomendadas, como projetar para falha, dissociao entre os componentes
do aplicativo, compreenso e implementao de elasticidade, combinando com a paralelizao e a integrao de
segurana em todos os aspectos da arquitetura do aplicativo, os arquitetos de nuvem podem compreender as
consideraes de design necessrias para criar aplicativos de nuvem altamente escalveis.
A nuvem da AWS oferece servios de infraestrutura altamente confiveis e voc s paga pelo o que usar. As tticas
especficas da AWS destacadas no artigo ajudaro no desenvolvimento de aplicativos em nuvem usando esses servios.
Como pesquisador, aconselhvel que voc utilize estes servios comerciais, aprenda com o trabalho dos outros,
amplie, melhore e invente computao em nuvem.
Agradecimentos
O autor profundamente grato a Jeff Barr, Steve Riley, Paul Horvath, Prashant Sridharan e Marvin Scot por fornecerem
comentrios sobre os primeiros rascunhos do presente artigo. Agradecimento especial a Matt Tavis por fornecer
informaes valiosas. Sem as suas contribuies, o artigo no teria sido possvel.
Parte do contedo deste whitepaper trecho de um captulo escrito pelo mesmo autor que aparece no livro 'Cloud Computing: Paradigms and
Patterns', Copyright 2010 John Wiley & Sons, Inc.
Pgina 21 de 23
Janeiro de 2010
2.
3.
Amazon SimpleDB Team, Query 201: Tips and Tricks for Amazon SimpleDB Query,
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1232&categoryID=176, 2008-02-07
4.
Amazon SimpleDB Team, Building for Performance and Reliability with Amazon SimpleDB,
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1394&categoryID=176, 2008-04-11
5.
6.
7.
8.
Amazon Web Services Team, Creating HIPPA-Compliant Medical Data Applications With AWS,
http://awsmedia.s3.amazonaws.com/AWS_HIPAA_Whitepaper_Final.pdf, 2009-04-01
9.
D. Obasanjo, Building Scalable Databases: Pros and Cons of Various Database Sharding Schemes,
http://www.25hoursaday.com/weblog/2009/01/16/BuildingScalableDatabasesProsAndConsOfVariousDatabaseShardingSch
emes.aspx, 2009-01-16
20. Solaris Security Team, ZFS Encryption Project (OpenSolaris), http://www.opensolaris.org/os/project/zfs-crypto/, 2009-05-01
Pgina 22 de 23
Janeiro de 2010
Pgina 23 de 23