Question

Je conçois une suite d'applications Web qui ont la même fonctionnalité de base. Autrement dit, ils sauront tous comment créer et fonctionner sur des widgets. Les différences seront dans son public cible et comment un utilisateur interagira avec un widget. Essentiellement, si ces applications étaient développées indépendamment, il y aurait beaucoup d'effort dupliqué.

Pour simplifier cela, j'ai pensé à deux solutions. Je voudrais tous vos commentaires sur les avantages et les inconvénients pour chaque solution, et que vous préférez.

  1. "Plateforme" - L'idée est qu'il existe une couche de service indépendante, à LA Web Services. Ce ne serait pas un service Web, mais simplement un back-end pour toutes les applications. La plate-forme parlerait aux applications via la messagerie ou la sérialisation des objets.

    Je voudrais écrire la plate-forme avec Java, mais l'intention serait que les applications puissent être écrites avec n'importe quel cadre Web tel que Rails, Django, Flex ou tout simplement quelque chose en Java.

    La plate-forme abstrait la base de données, donc toute interaction avec le back-end serait effectuée via la plate-forme. Un problème potentiel avec cela est que la mise à jour de la plate-forme entraînera la suppression de toutes les applications. Mais au moins toutes les applications seront cohérentes en ce qui concerne le back-end.

    J'aime la façon dont cela est coupé horizontalement, et que l'application n'a vraiment qu'à se concentrer sur le frontal, plutôt que de s'inquiéter de la façon d'organiser le back-end.

  2. "Modules" - L'idée est que j'écris tout avec Java et développe des modules qui vivraient dans leurs propres pots. Chaque module représenterait un module Guice et chaque application inclurait simplement les modules qu'ils souhaitent et créeraient leurs propres injecteurs.

    Cette approche rendrait chaque application complètement indépendante les unes des autres, en dehors du partage d'une base de données commune. Ainsi, théoriquement, il serait beaucoup plus facile de déployer une application dans un environnement différent sans s'inquiéter de la plate-forme. Je serais coincé dans un environnement de langue, Java. Cependant, JRuby et Jython seraient disponibles. Alors peut-être que ce n'est pas vraiment une préoccupation.

    De plus, je prévois qu'il est plus facile de personnaliser une application sans effectuer la plate-forme. Le seul con est que si je met à jour un module, je voudrais redéployer chaque application à l'aide de ce module. Ce serait facile avec une intégration continue, cependant.

Merci pour votre temps.


En ce qui concerne la réponse de Gary, j'ai décidé d'adopter une approche hybride.

Je vais développer une plate-forme, qui sera le point d'accès des applications Web aux données et services. Je vais ensuite modulariser la plate-forme, mais tous les modules resteront sous un seul référentiel avec un POM parent. Bien que je puisse les garder tous dans un seul pot, j'aimerais que la séparation du chemin de classe à des fins de développement me fasse réfléchir / autres avant de nécessiter un module pour dépendre d'une autre.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top