Je veux créer une application web avec l'architecture suivante:Architecture: les questions technologiques
Il y a certaines fonctionnalités, whiсh est encapsulé dans le module "logique métier" (1). Il utilise MongoDB comme magasin de données (5) et externe (ligne de commande) (4).
La fonctionnalité de l'application est apportée aux utilisateurs finaux via deux canaux:
- L'application Web lui-même (2) et
- API publique (3), qui permet à des applications tierces et mobiles périphériques pour accéder à la fonctionnalité de logique métier. L'application web est écrite en Java et basée sur la plate-forme Vaadin.
Actuellement, il fonctionne sur le serveur web de Jetty.
Une exigence importante: L'application Web doit être évolutive, i. e. il doit être possible d'augmenter le nombre d'utilisateurs/de transactions qu'il peut desservir en ajoutant un nouveau matériel.
Je suit les questions concernant la mise en œuvre technique de cette architecture:
Quelle technologie peut être utilisée pour mettre en œuvre la partie de la logique métier? Quelles sont les options sensées pour créer un serveur d'application SCALABLE?
Quel serveur Web puis-je choisir pour la partie d'interface Web (2) pour la rendre évolutive? Quelles sont les options?
Les calculs effectués dans le système externe (4) sont potentiellement gourmands en ressources processeur. Par conséquent, je veux les faire de manière asynchrone, je. e.
a) l'utilisateur envoie une demande à cet effet (par l'intermédiaire de l'interface web ou API publique, 2 et 3 dans l'image ci-dessus), que
b) demande est mise dans une file d'attente, puis
c) les calculs à forte intensité de processeur sont effectués et
d) à un moment donné, la réponse est envoyée à l'utilisateur. Quelles sont les options technologiques pour implémenter cette mise en file d'attente (en dehors de JMS)?
Merci à l'avance
Dmitri
Voici ma première tentative pour répondre à cette question: http://dl.dropbox.com/u/11776689/pcc/2011_01_19_architecture.png –