Dev (Back & Front)ARTIGO

Construindo aplicações leves para servidores na nuvem

Este é um artigo explicando o básico da arquitetura deixando alguns links de frameworks e API’s interessantes.

Com o aumento da demanda de serviços na nuvem, mais do que antes, é necessário construir sistemas com arquitetura diferenciada. O mercado demanda por soluções facilmente escaláveis de deploy otimizado e com baixo custo computacional.

Pretendo apresentar aqui, um exemplo de como atingir estes objetivos partindo de uma arquitetura REST, utilizando as tecnologias que estão despontando no mercado e abordar, de uma forma prática, os principais pontos a serem considerados e sugerir uma implementação do modelo proposto.

Arquitetura para a nuvem

Hoje é real a necessidade de criar sistemas otimizados para servidores remotos. Com o aumento da demanda de aplicações escaláveis, é necessário que nós, desenvolvedores, saibamos cada vez mais como optimizar nossas aplicações para este cenário.

Considerando os maiores players, é notável que a arquitetura JEE clássica, como por exemplo JSF + EJB + Hibernate não escala em servidores leves (Tomcat ou Jetty). Sabemos que serviços de PaaS (plataforma como serviço) como por exemplo, Google App Engine e Amazon Elastic Beanstalk, utilizam estes servidores, e por isso não dão suporte a EJB, por exemplo. Por isso, é necessário se libertar do modelo clássico e experimentar outros designs.

Então, por onde começar?

HTML com Javascript e Json

As nossas páginas poderiam ser construídas com HTML e Javascript, trafegando Json para o servidor. Isso é interessante, pois podemos deixar as operações de criação e renderização das telas para o navegador. Com o aumento do poder computacional dos navegadores modernos, não é mais necessário sobrecarregar os servidores com rotinas de criação das telas.

REST

O famoso REST (Representational State Transfer ou Transferencia de estado representativo) é uma forma interessante de se pensar nos sistemas hypermidia atuais. Os conceitos básicos não se aplicam somente a uma linguagem específica, mas sim a técnica de engenharia de software descrita inicialmente por Roy Fielding.

Resumidamente, poderíamos dizer: mensagens sem estado (um protocolo “simples”, como HTTP).

Poderíamos usar as operações básicas do HTTP para realizar chamadas ao servidor de nossas aplicações:

  • POST: Cria um recurso/dado no servidor
  • GET: Retorna um recurso (ou lista de recursos) do servidor
  • PUT: Faz update de um recurso no servidor
  • DELETE: Remove um recurso do servidor

Mais do servidor

Alguns detalhes adicionais sobre a parte server-side: podemos utilizar persistência com JPA/Hibernate ou JDBC. Todas estas soluções são funcionais nos servidores comuns da nuvem.

Como implementar com Java?

Na implementação das telas, podemos usar HTML, Jquery e AngularJSPara trabalhar com o REST, utilizaríamos o RESTEasyA implementação de persistência poderia ser feita com JPA/Hibernate, que é de amplo conhecimento do pessoal que trabalha com Java.

Finalizando

Este foi um artigo explicando o básico da arquitetura deixando alguns links de frameworks e API’s interessantes.

O que você acha destas sugestões? Qual a viabilidade de implementar elas nos próximos sistemas que você irá trabalhar? Você gostaria de ver um exemplo de código?

é desenvolvedor e Software Craftsman na Dextra (www.dextra.com.br), trabalha com sistemas web desde 2008. Graduando em engenharia de computação, entusiasta Linux, gosta de trabalhar com novas tecnologias e descobrir paradigmas de desenvolvimento de software.

Ver perfil