Question

Vous recherchez des opinions sur la modularisation des applications Web. Déjà la plupart des applications, quelle que soit la langue ont un backend DB et de soutien tie-ins avec leur serveur d'applications Web respectif (Apache, IIS, lighttp, etc.), mais beaucoup de développeurs que j'ai eu affaire ont mal à accepter l'utilisation Memcached ou quoi que ce soit en dehors de l'espace de processus immédiat de l'application Web.

est-modularisation d'une application Web comme une bonne chose, une chose que je crois ou est-il quelque chose que je manque qui fait tout le monde de développeurs Sr. à CTO pour hésiter à déplacer des parties spécifiques de la logique métier de l'avant Web fin et dans les services de back-end spécialisés?

Par exemple, il y a quelques années je m'y suis abattu lors d'une réunion de conception du projet pour un site de trafic très élevé quand je leur ai proposé rip le processus logique intensive ACL hors du cadre d'extrémité avant et le transformer en un service semi-clusterable application dans le back-end. Pour moi, les avantages d'une séparation était plus propre du code et la possibilité de réutiliser la logique ACL à plusieurs endroits en utilisant REST / JSON comme le pont entre PHP et Python par exemple.

Les développeurs qui étaient en désaccord avec mon idée était soutenu ce « trop compliqué », mais je ne pouvais voir comment? Mes arguments sont que, tout comme il peut y avoir soupe tag pour la couche de présentation, il peut et est souvent une soupe logique de code qui est si maillé ensemble que si un problème se pose, il pourrait être presque impossible d'effectuer une correction « chirurgicale ».

pour le raccourcir vers le bas, ce sont les années con et ou pro de rupture de grandes applications vers le bas dans les processus indépendants mais coopératifs (pas fils ou demandes sous). MySQL, Memcache, processus de service similaire sont grands ... mais pourquoi rien d'autre? Comment va dans cette voie « trop compliqué »?

Était-ce utile?

La solution

Eh bien, parfois « trop compliqué » signifie « Je ne veux pas penser en dehors de ma zone de confort. »

La notion de base sonne bien --- vous parlez de l'architecture orientée services assez plausible ici.

Maintenant, en ce qui concerne les avantages et les inconvénients, la première chose contre c'est que vous Bougez ont en effet d'amener les gens à penser en dehors de leurs zones de confort. Un con plus technique est que vous avez besoin de préserver ce qui est, en effet, l'état de session. Dites que vous prenez le jeton d'authentification de votre service auth; comment est-ce jeton va rester associé à la session utilisateur correcte.

Une autre question est qu'il pourrait être plus difficile à déboguer, car il se passe plus dynamiquement.

Du côté pro, cependant, si vous pouvez répondre à la question d'état de session, vous obtenez une architecture hautement évolutive; si vous avez besoin davantage de services, vous pouvez agrandir le serveur ou simplement ajouter un autre serveur.

Autres conseils

Je suis fan de séparer la fonctionnalité logique serveur / activité de base du code d'application web. Ceci est pour quelques raisons différentes:

  1. Vous pouvez mieux contrôler la logique métier. Il n'y aura aucun moyen de mélanger ce avec le code de l'interface graphique et de créer un désordre. Vous voulez garder toute la logique métier séparée de sorte que vous pouvez ensuite faire une API pour appeler la fonctionnalité de code et espérer qu'aucune logique métier fait son chemin dans le code de l'interface graphique.
  2. Dès le vous aller rendez-vous devez concevoir une bonne API que vous devez vous utiliser pour communiquer avec le serveur du client. Le client peut être l'interface Web ou il peut être un utilisateur distant.
  3. Stabilité. GUI code web peut facilement être mal écrit et consommer trop de mémoire prenant ainsi jusqu'à l'application entière.
  4. Pour l'échelle, vous pouvez déplacer ces composants séparés sur des serveurs différents. Si vous utilisez un système de mise en cache qui permet déjà de regroupement à l'échelle peuvent être aussi simple que l'ajout de serveurs de mise en cache.
  5. J'ai trouvé que des mises à jour d'application sont le plus souvent fait au code de l'interface graphique de sorte que le service de base ne doit pas être pris vers le bas la plupart du temps.
  6. Sécurité. Vous pouvez être sûr que le code de sécurité est mis en œuvre dans le code du serveur donc si quelqu'un utilise votre API ils ne seront pas en mesure de contourner un code de sécurité qui a fait son chemin dans le code de l'interface graphique.

Notre système dispose d'un service « moteur » de base mis en œuvre comme une application Java. L'application Web est également écrit en Java et la communication (actuellement) est via RMI. Notre site / application est en croissance et nous n'avons pas encore eu à commencer à utiliser un service de mise en cache comme memcached ou JCS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top