Escolha de Patterns/Frameworks

Salve “GUJeiros”!

Trabalho numa empresa que tem 15 anos de experiência no desenvolvimento de Softwares para empresas de transporte urbano/turismo em COBOL e Delphi. Recentemente fomos convidados a desenvolver um sistema para monitoramento de veículos por GPS. Por exigência contratual esse sistema deve ser desenvolvido em JAVA + MYSQL + GOOGLE MAPS. E em Java somos apenas bebês. Já desenvolvi algumas aplicações Struts+Hibernate, mas nada nesse porte. Vou explicar um pouco mais como deve ser o sistema esperando que vocês me dêem “uma luz” para começar.

1 - O banco de dados (MySQL - MyISAM) será alimentado por aplicação embarcada nos módulos GPS. Estimam-se 500.000 registros / Dia

2 - O sistema deve ser capaz de exibir, usando o Google Maps, a posição de quaisquer carros no momento atual; bem como em qualquer momento desde o início do funcionamento do sistema.

3 - O sistema deve interpretar os Sensores Instalados nos veículos notificando imediatamente caso haja algum evento. Os eventos podem ser excesso de velocidade, direção perigosa, fuga de rota, defeitos mecânicos ou sinais Pânico/Coação disparados pelo Motorista.

4 - Como tratará de transporte de passageiros, o sistema deve ter Altíssima Disponibilidade e Baixíssima Tolerância a Erros.

Estamos contatando empresas especializadas em consultoria/treinamento Java para nos orientar no processo, mas até para podermos negociar os termos dessa orientação, peço a vocês que têm experiência na área, que me indiquem quais são os Design Patterns e FrameWorks mais adequados a esse tipo de situação.

Já recebi indicações de trabalhar com SOA, Spring, JPA, EJB… mais não sei qual é o padrão mais usado e indicado para essa necessidade.

Qualquer indicação de Material para Pesquisa; e, principalmente, Relatos de Experiência com as ferramentas será muito bem recebida.

Desde já, grato pela atenção e pela colaboração.

Mas alguns detalhes vc omitiu, como será recebido esses dados?Haverá(na concepção da idéia) cada ônibus com um PDA/Celular/ETC na mão para se comunicar com vc´s?Haverá um grande server instalado na rede interna da empresa se comunicando com o exterior(esses ônibus)?Ou será via hospedagem(cuidado…)?

Saiba que quando vc pôs esse item, o dono do servidor abre um puta sorriso.Isso pode ser caro, bem caro.Os detalhes de execução do sistema podem ser o de menos, em matéria de dor de cabeça.

oi Michael!

como vai?

Para voce escolher seus frameworks, vai depender tambem do conhecimento da sua equipe, do tipo de tela e processos que ocorrem muito, etc. De qualquer maneira, para voce ter muita scalability e reliability, como voce disse que precisa, vai depender da sua arquitetura, dos seus tiers, da comunicação entre eles, e nem tanto dos frameworks escolhidos. Uma arquitetura que permita clusters (como o uso do ejb3) ou em cloud (como o google app engine permite), vai sem duvida te ajudar a ganhar esses requisitos nao funcionais

Sobre os design patterns, eles costumam aparecer a medida da sua necessidade. Eles são uma solucao para um problema, enquanto esses problemas nao surgirem, nao ha necessidade de se preocupar com qual usar.

abracos

Os veículos terão um módulo AVL (GPS/GPRS) instalado e já temos em vista um servidor poderoso, ligado a uma Storage Engine, Hospedado num DataCenter bastante confiável com 5 links dedicados para a recepção dos dados. Essa parte do sistema já passou por testes está bem encaminhada, a transmissão/recepção dos dados será feita por aplicações desenvolvidas pelo fabricante dos equipamentos.

O que me preocupa é o acesso aos dados gravados no banco e a resposta imediata aos clientes/operadores do sistema. Teremos um segundo servidor, também ligado à storage engine, dedicado a aplicação.