Arquitetura de Sistema na Nuvem

Olá, boa tarde a todos!

Estou planejando a migração de um sistema client-server desenvolvido em Delphi com Banco Relacional (Firebird) para um ambiente distribuído com Java e a utilização de Cloud (Google App Engine + Camada de dados)

Este projeto será um piloto para um projeto maior, de um sistema de gestão inteiro que futuramente será migrado para Cloud.
O sistema a ser migrado é pequeno, se trata de uma aplicação com agenda, cadastro de clientes, controle de caixa. Tudo simples, apenas para avaliar a utilização destas novas tecnologias para posterior migração de um sistema complexo.

Vou descrever o que planejei :

[list]Utilizar como camada de interface ao usuário uma aplicação no Google App Engine (GAE), desenvolvida em Java com JSP + Servlets. Nesta camada constarão os cadastros, operações, relatórios, enfim, todas as interfaces do sistema.[/list]
[list]Uma segunda camada com uma estrutura para armazenamento de dados relacionais que esteja disponível para acesso da aplicação no GAE. A idéia é utilizar o mesmo modelo relacional existente no Firebird.[/list]
[list]A camada de acesso a dados também ficará na nuvem. Não posso usar o Data Storage do google por ser NoSQL, e preciso destes dados no modelo relacional, OBRIGATÓRIAMENTE.[/list]
[list]Pensei em comunicar a camada de aplicação com a camada de dados via Web service REST ou SOAP.[/list]
[list]As duas camadas poderão estar em duas nuvens diferentes (ex.: aplicação no GAE e dados no Azure).[/list]

Gostaria de opiniões sobre esse modelo, se é o ideal, quais suas sugestões.
Mas a idéia principal é colocar toda a aplicação na nuvem, com o limitador de ter que utilizar um banco relacional.

Aguardo as opiniões!

[]s

Estuda a possibilidade de usar o heroku http://www.heroku.com/

Entrei em http://java.heroku.com/ e ainda está listado como Beta.
Existem soluções completas em java rodando no Heroku?

[]s

Bom dia Sephirot,

“Mas a idéia principal é colocar toda a aplicação na nuvem, com o limitador de ter que utilizar um banco relacional.”, você pode fazer isso utilizando apenas o Google App Engine e o Google Cloud SQL https://developers.google.com/cloud-sql/ que é o serviço de armazenamento de dados com MySQL do GAE.

[quote=Sephirot]Olá, boa tarde a todos!

Estou planejando a migração de um sistema client-server desenvolvido em Delphi com Banco Relacional (Firebird) para um ambiente distribuído com Java e a utilização de Cloud (Google App Engine + Camada de dados)

Este projeto será um piloto para um projeto maior, de um sistema de gestão inteiro que futuramente será migrado para Cloud.
O sistema a ser migrado é pequeno, se trata de uma aplicação com agenda, cadastro de clientes, controle de caixa. Tudo simples, apenas para avaliar a utilização destas novas tecnologias para posterior migração de um sistema complexo.

Vou descrever o que planejei :

[list]Utilizar como camada de interface ao usuário uma aplicação no Google App Engine (GAE), desenvolvida em Java com JSP + Servlets. Nesta camada constarão os cadastros, operações, relatórios, enfim, todas as interfaces do sistema.[/list]
[list]Uma segunda camada com uma estrutura para armazenamento de dados relacionais que esteja disponível para acesso da aplicação no GAE. A idéia é utilizar o mesmo modelo relacional existente no Firebird.[/list]
[list]A camada de acesso a dados também ficará na nuvem. Não posso usar o Data Storage do google por ser NoSQL, e preciso destes dados no modelo relacional, OBRIGATÓRIAMENTE.[/list]
[list]Pensei em comunicar a camada de aplicação com a camada de dados via Web service REST ou SOAP.[/list]
[list]As duas camadas poderão estar em duas nuvens diferentes (ex.: aplicação no GAE e dados no Azure).[/list]

Gostaria de opiniões sobre esse modelo, se é o ideal, quais suas sugestões.
Mas a idéia principal é colocar toda a aplicação na nuvem, com o limitador de ter que utilizar um banco relacional.

Aguardo as opiniões!

[]s

[/quote]

pretende usar nenhum framework?

não é muito diferente de fazer uma aplicação em um servidor web normal… se você está pensando em usar rest por exemplo eu acho que spring iria facilitar bastante…

da uma olhada nesse tutorial, que tem uns exemplos do controller do spring invocando método pelo tipo da requisição http… ai com isso você também vai ter outros benefícios do framework, isso foi uma coisa que achei legal justamente para rest…

outra opção interessante seria jax-ws, utilizando cdi também… acho que fica muito bom…

Dê uma olhada no EC2 da Amazon:
aws.amazon.com/ec2/

Sephitot da uma olhada http://www.infoq.com/br/articles/paas_comparison não é verdade que você consegue utilizar um banco de dados relacional só com o Google Cloud SQL, além do mais existem alternativas ao Google App Engine.