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 AngularJS. Para trabalhar com o REST, utilizaríamos o RESTEasy. A 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?







