Computação nas nuvens cada vez mais acessível – parte 2

No post anterior, escrevi um pouco sobre as vantagens da computação nas nuvens e fiz um pequeno comparativo entre alguns serviços que estão disponíveis na internet para desenvolvimento e publicação de aplicativos.

Agora vamos mostrar na prática como fazer isto usando um dos serviços citados, o AppHarbor, sem qualquer custo. A única limitação é que somente será alocada uma instância do aplicativo, ou seja, um único servidor para atender a todas as requisições. Para este aplicativo de exemplo, uma instância é mais que suficiente.

O AppHarbor foi escolhido pela familiaridade e pela facilidade de publicação com controle de versão. A implementação será feita em .Net.

Pré-requisitos:

  • Uma conta no AppHarbor
  • Sistema de controle de versão (Git ou Mercurial) – neste caso, usaremos o Mercurial
  • Visual Studio 2010 ou Visual Web Developer 2010 Express
  • Qualquer editor de HTML e CSS
  • Uma conta no GitHub – opcional, caso você queira compartilhar o código ou mantê-lo independente da hospedagem escolhida. Usarei o GitHub para disponibilizar o código fonte (link no fim do post).

Atualização:

O repositório foi migrado para o GitHub. O link está atualizado no final do post.

Ao final, teremos:

  • O código fonte da aplicação armazenado em um repositório na web
  • A aplicação hospedada nas nuvens sem restrição de acesso

A aplicação fará conversão de moedas usando um web service. Não irei entrar em detalhes sobre a implementação e sobre o uso de sistemas de controle de versão. Vamos aos passos.

Criar uma conta no AppHarbor
Se você ainda não possui uma conta, vá até o site e clique em Sign up. Depois de entrar na conta, você será redirecionado à sua página de aplicativos.

Criar um novo aplicativo
No campo abaixo de Create new application, informe o nome do seu aplicativo e clique em Create New.

Integração com o GitHub
Esta etapa pode ser ignorada caso você não queira fazer a integração com um serviço externo. Eu recomendo que faça porque além de poder compartilhar o código mais facilmente, os fontes serão mantidos mesmo se o aplicativo for excluído do servidor.
Depois de criado o aplicativo, vamos então integrá-lo com o GitHub. Cada atualização no repositório será refletida no AppHarbor. Na verdade, quando um aplicativo é criado, um repositório vazio também é criado para ele no AppHarbor. Esta integração permite atualizar automaticamente os dois repositórios.

Criar uma conta no GitHub
Da mesma maneira, se você ainda não se cadastrou, faça-o neste momento.

Criar o repositório
Entre em sua conta e clique em Repositories -> Create repository. Defina o nome do aplicativo (o mesmo). Há duas opções de sistemas de controles de versão: Git e Mercurial. Usaremos o segundo. Agora basta confirmar a criação clicando no botão ao fim do formulário.

Configurar o repositório
Clique na guia Admin para ir à pagina de configuração.

No menu à esquerda, clique em Access management para dar ao AppHarbor permissão de leitura do seu repositório. Informe o usuário apphb e clique em Read para confirmar. O resultado deve ser parecido com a tela abaixo.

O último passo da integração é inserir a URL que irá notificar o AppHarbor de cada atualização feita no repositório. Isto dispara todo o processo de publicação do aplicativo.
No mesmo menu mostrado acima, clique em Services. No campo Select a service, selecione POST e depois clique em Add service.

A URL a ser inserida aqui é gerada pelo AppHarbor e está na página do aplicativo.

Trata-se da build URL, que tem exatamente este propósito: permitir que outros aplicativos notifiquem que um novo build deve ser feito e uma nova versão deve ser publicada. Clique no botão build URL, cole o endereço no campo URL no GitHub e salve as configurações. A partir de agora, qualquer alteração no repositório fará com que a última revisão seja transferida para o AppHarbor. A compilação e a publicação no servidor são automáticas.

Clonar o repositório e sincronizar com o servidor
Todas as configurações na web já foram feitas. Agora resta clonar o repositório na máquina local (hg clone), adicionar o código fonte do projeto – que neste caso já está pronto – (hg add) e enviar as alterações (hg commit e hg push). Vejamos o resultado do push:

Das duas atualizações feitas até o momento, a mais recente ainda estava sendo publicada no servidor. Depois disto, se não houver nenhum erro, ela se torna a versão ativa e o app está online.
O endereço de acesso ao aplicativo pode ser visto na página Hostnames.

Conclusão
Há outros recursos a serem explorados mas pudemos perceber que é simples usar esta tecnologia. Mesmo num serviço gratuito como o que foi usado aqui, é possível, com um pouco mais de esforço, criar um aplicativo ou site com muito mais funcionalidades.

Tanto para desenvolvedores que trabalham sozinhos quanto para pequenas e médias empresas, existem muitas outras ferramentas prontas para serem usadas.

Links
Código fonte do conversor de moedas: https://github.com/evandroamparo/conversor-de-moedas
Endereço do aplicativo: http://conversordemoedas.apphb.com/

Computação nas nuvens

Computação nas nuvens cada vez mais acessível – parte 1

A computação nas nuvens está disponível e acessível para qualquer desenvolvedor a um custo muito baixo e com muita facilidade de implantação. 

Chamada por alguns de “a nova onda em tecnologia”, a computação nas nuvens ou cloud computing não é apenas um assunto da moda, mas um modelo de computação que surgiu para atender às demandas de TI da atualidade. Mas não é uma novidade: grandes empresas como a Microsoft já vem há muitos anos investindo nesta área e mantendo uma boa parte de sua força de trabalho dedicada a criar tecnologia para as nuvens. Nem tão pouco é uma exclusividade para os grandes. Hoje é possível usar toda esta tecnologia de maneira fácil e rápida. Vamos mostrar algumas vantagens para as empresas e usuários mas o nosso foco é o uso da computação nas nuvens do ponto de vista de um desenvolvedor.

Vantagens

Podemos citar muitas mas creio que todas elas vêm do fato de que a computação nas nuvens está fortemente ligada ao conceito de virtualização, que também já deixou de ser uma coisa só para grandes corporações. Eu mesmo tenho três sistemas operacionais em meu computador, com a ajuda do VMWare. Em escalas diferentes, seja nos data centers da Google ou num desktop, o princípio é o mesmo: usar os recursos computacionais de forma inteligente.

Escalabilidade

Não importa o tamanho da aplicação, os recursos sempre podem ser estendidos de acordo com a demanda dos negócios.  A facilidade de monitoramento e gerenciamento permite a alocação de mais recursos como memória, processamento e armazenamento em banco de dados sob demanda. Isto possibilita uma elasticidade virtual e não física do data center.

Redução de custos

Encarando a TI com um serviço, não é mais necessário investir em instalações físicas, servidores e pessoal para administrar toda a infraestrutura envolvida nisso. Também pode-se dispensar a preocupação com o sistema operacional e a implantação do software, que geralmente é feita de forma transparente.

Alta disponibilidade

A virtualização, quando bem utilizada, permite que o sistema fique online com uma probabilidade muito pequena de “queda”, já que vários servidores podem atuar em conjunto para servir às requisições dos usuários. A carga de rede é balanceada, assim como a capacidade de processamento, minimizando os riscos de uma sobrecarga no sistema.

Tecnologia acessível

Não faltam ofertas de serviços nas nuvens. Webmails, sistemas financeiros, colaboração em equipe e qualquer coisa que se possa imaginar e desenvolver. O fato é que hoje a computação nas nuvens está disponível e acessível para qualquer desenvolvedor a um custo muito baixo e com muita facilidade de implantação. Segundo o especialista em TI, Edivaldo de Araujo Filho, empresas de todos os portes podem tirar proveito deste modelo:

“O conceito de Cloud está há algum tempo em destaque no mercado e já é uma realidade para muitas empresas, principalmente de pequeno e médio porte, as quais já migraram toda ou parte de sua infraestrutura de TI para a nuvem, contratando como serviço a solução tecnológica de suporte aos seus negócios. Nas grandes corporações os CIOs também vêm buscando fortemente virtualizar suas infraestruturas, investindo, na maioria das vezes, em nuvens privadas dentro de seus próprios ambientes de TI (Private Cloud)”.

English: Cloud computing stack showing infrast...

O foco no aplicativo e não na infraestrutura é um dos principais motivos para se desenvolver para a nuvem. Vamos falar de alguns serviços, focando naqueles que oferecem planos gratuitos.

Este é um breve comparativo dos serviços disponíveis no mercado. Muitas destas empresas são startups que têm recebido muitos investimentos e prometem aumentar ainda mais a concorrência.

Serviço

Pontos fortes

Plano gratuito?

Arquitetura cheia de recursos avançados mas fáceis de usar

Até 750 horas de processamento por mês

Grande variedade de linguagens e frameworks

Sim

Utilizar a tecnologia da Google para executar seus próprios aplicativos; ambiente de desenvolvimento local, simulando a execução mesmo off-line

Sim: até 10 aplicativos com cotas de armazenamento de 500 MB cada

Facilidade de implantação com uso de controle de versão

Sim

Possui ambientes distintos para desenvolvimento (incluindo integração contínua) e execução do aplicativo

Sim

Algo em comum entre todos estes é a possibilidade de usar add-ons ou services – tecnologias que podem ser agregadas ao software, além do próprio ambiente de execução. Isto inclui banco de dados, envio de e-mail, monitoramento de erros, geração de logs e muito mais.

Alguns ainda facilitam o processo de deployment com uso de sistemas de controle de versão. Uma atualização no repositório é suficiente para que o aplicativo esteja online em segundos.

Existem também o Windows Azure da Microsoft, uma plataforma sofisticada para desenvolvimento em .Net e com avaliação gratuita por 90 dias, e o Amazon Web Services, que está investindo muito no mercado da América Latina, além de contar com uma plataforma robusta e confiável, utilizada por grandes companhias e outras empresas que terceirizam os serviços de cloud. É possível testar alguns serviços básicos por um ano.

Na próxima parte vamos mostrar como publicar uma aplicação nas nuvens em alguns passos.

Até a próxima.