O time da Amazon Web Services (AWS) recentemente adicionou suporte ao Node.js para seu serviço Elastic Beanstalk, dando a Amazon a liderança de mercado em número de plataformas suportadas. Além do Node.js, a AWS Elastic Beanstalk dá ao desenvolvedor a habilidade de empacotar, instalar, e gerenciar aplicações escritas em Java, PHP, .NET, Ruby e Python. A AWS tem se juntado ao repleto time de provedores de Clouds com suporte ao Node.js e tentará se diferenciar dos concorrentes através da integração com os principais serviços da AWS.
Em um post no blog do CTO da AWS, Werner Vogels, sobre a adição do Node.js, Werner descreve algumas das razões para incluir esta plataforma que é cada vez mais popular.
Gastei muito tempo conversando com os desenvolvedores da AWS, sendo que muitos deles trabalham nas áreas de jogos e mobile, e a maioria destes desenvolvedores têm achado o Node.js bastante adequado para suas aplicações web. Com o modelo de programação assíncrona, orientada a eventos, o Node.js permite que estes desenvolvedores tratem um grande número de conexões concorrentes com baixa latência. Estes desenvolvedores normalmente usam instâncias EC2 combinadas com um de nossos serviços de banco de dados para criar serviços web usados na recuperação de dados ou criar interfaces mobile dinâmicas.
Jeff Barr, do time da AWS, apontou algumas de suas funcionalidades favoritas do Node.js na Elastic Beanstalk:
- Escolha entre Nginx ou Apache como proxy reverso para sua aplicação Node.js. Você pode inclusive escolher não utilizar proxy caso sua aplicação exija que o cliente estabeleça uma conexão direta.
- Configure o balanceamento de carga baseado em HTTP e TCP dependendo de qual sua aplicação necessita. Caso sua aplicação utilize WebSockets, o balanceamento de carga baseado em TCP pode ser mais apropriado para sua carga de trabalho.
- Configure a pilha do Node.js usando a versão específica do Node.js que sua aplicação precisa, ou fornecendo o comando usado para iniciar sua aplicação Node.js. Você pode também gerenciar dependências usando o npm.
- Ajude a melhorar a performance configurando a compressão gzip e arquivos estáticos usando o Nginx ou o Apache. Com a compressão gzip, você pode reduzir o tamanho da resposta ao cliente, ajudando a criar uma alta taxa de transferência. Com arquivos estáticos, você pode permitir que o Nginx ou o Apache rapidamente sirva seu conteúdo estático (como imagens ou CSS) sem ter esse tipo de requisição roubando tempo de processamento intensivo de dados que sua aplicação Node.js possa estar fazendo.
- Integre sua aplicação de forma transparente com o Amazon RDS para armazenar e recuperar dados de uma base de dados relacional.
- Customize suas instâncias EC2 ou conecte sua aplicação nos recursos da AWS usando os arquivos de configuração do Elastic Beanstalk (visite o Guia de desenvolvimento do AWS Elastic Beanstalk para aprender mais sobre arquivos de configuração).
- Execute sua aplicação Node.js dentro de um Amazon Virtual Private Cloud para ter um controle de rede adicional.
Além das funcionalidades listadas, o Elastic Beanstalk também suporta integração com Git, clusterização para alta disponibilidade e uso de variáveis por ambiente específico . A AWS fez sua primeira incursão no mundo Node.js em Dezembro de 2012 quando lançou um SDK para desenvolvedores Node.js. Esse SDK provê acesso a uma vasta gama de serviços disponíveis na AWS incluindo Amazon DynamoDB, Amazon Simple Storage Service (S3), Amazon Relational Database Service (RDS), Amazon Simple Queue Service (SQS), Amazon Elastic Compute Cloud (EC2) e outros mais.
Com esta iniciativa, a AWS junta-se as muitas outros provedores de Cloud que oferecem serviços para aplicações Node.js. Com exceção do Google App Engine. Atualmente, quase todos os fornecedores de Plataforma como Serviço disponibilizam estrutura para Node.js, incluindo Heroku, Windows Azure, Open Shift, Engine Yard e os muitos provedores do Cloud Foundry. Todos estes provedores também competem com o lider de ideias e provedor de plataforma dedicada para Node.js, o Nodejitsu. Então qual o diferencial entre estes serviços? Uma maneira é através da disponibilização de ferramentas. Werner Vogels aponta como o Elastic Beanstalk é fortemente integrado com ferramentas de desenvolvimento para muitas plataformas top de linha.
Você pode instalar e gerenciar suas aplicações em qualquer região da AWS (exceto para GovCloud). Muitas ferramentas estão disponíveis para você instalar e gerenciar sua aplicação, é só escolher sua opção favorita. Se você está construindo uma aplicação Java, pode utilizar o Toolkit AWS para Eclipse. Se está construindo aplicações .NET, pode utilizar o Toolkit AWS para Visual Studio. Se você prefere trabalhar no terminal, pode utilizar uma ferramenta de linha de comando chamada 'eb' em conjunto com o Git. Parceiros como eXoCloud IDE também oferecem integração com o Elastic Beanstalk.
O exoCloud, agora dividido e com o nome de Codenvy, provê aos desenvolvedores um ambiente para desenvolvimento baseado em Cloud podendo ser direcionado à implementações que utilizam o Node.js no Elastic Beanstalk. Além disso, para fornecer aos desenvolvedores ferramentas de deploy e instalação de aplicações Node.js, os provedores de Cloud estão se diferenciando através da integração com serviços complementares, e oferecendo soluções para o difícil problema do gerenciamento de aplicações. Um aspecto atraente da execução do Node.js no Elastic Beanstalk é a habilidade de facilitar a integração com os muitos serviços de aplicações fornecido pela AWS. As aplicações Node.js que rodam no ambiente da AWS têm acesso de baixa latência ao banco de dados, storage, computação, filas, cache e muito mais. Clouds como o Windows Azure tem uma proposta de valor diferente onde os desenvolvedores que instalam as aplicações Node.js também têm acesso ao diverso conjunto de serviços nativos para banco de dados, storage e mensageria. Provedores como Heroku e Nodejitsu não possuem os próprios conjuntos de serviços complementares, mas mantêm um refinado catálogo de serviços que podêm ser integrados com as aplicações que rodam nas plataformas de cada um.
Além de prover serviços complementares como uma maneira de se destacar, os provedores de Cloud também demonstram suas habilidades para tornar a instalação e o gerenciamento de aplicações mais fáceis. Isso significa suportar repositórios de controle de fonte baseados na web - assim como AWS, Windows Azure e o Nodejitsu - e oferecer serviços de deploy contínuo, como o Nodejitsu faz através de suporte ao TravisCI. Um monitoramento de alta qualidade e sistema de resposta podem tornar o gerenciamento de demanda muito mais simples para desenvolvedores e administradores de cloud. A AWS tem produtos para o monitoramento de uso e redimensionamento automático dos ambientes da sua aplicação e Werner Vogels explicou como o Elastic Beanstalk ajuda a provisionar aplicações com todos os recursos de gerenciamento incluídos.
O Elastic Beanstalk automatiza o provisionamento, monitoração e a configuração de muitos recursos subjacentes da AWS como o Balanceamento de Carga Elástico, Auto Scaling e EC2. O Elastic Beanstalk também fornece automação para instalar sua aplicação, rotacionar seus logs e customizar suas instâncias EC2.
Esteja atento nesta área, pois os provedores de Cloud cada vez mais aperfeiçoam os recursos de gerenciamento de aplicações e oferecem serviços nativos ou integrados que melhoram a utilidade das aplicações rodando em suas plataformas de Cloud Computing.
Veja o post original.