question connexe: strong> Quel est le moyen le plus efficace de casser une base de données centralisée? p> blockQuote>
Je vais essayer de faire cette question assez générale afin que cela profite aux autres. P>
Il y a environ 3 ans, j'ai mis en place un CRM intégré et un site Web. Parce que je voulais impressionner le client, j'ai mis en œuvre l'architecture la moins chère que je pouvais penser, qui visait à héberger la base de données centrale et le site Web sur le serveur Web. J'ai créé une application de bureau qui communique avec le serveur Web via un service Web (cette application est à partir de leur bureau principal). P>
Dans le recul, c'était plutôt stupide, comme maintenant que la société a grandi, leur connexion Internet devient plus lente et plus lente chaque mois. Maintenant, en raison des problèmes de vitesse, le logiciel de bureau momient sur une base régulière, le client est laissé avec 3 options: p>
- Achetez une connexion Internet plus rapide. Li>
- Déplacez la base de données (et le site Web) vers un serveur interne. Li>
- Re-concevez l'architecture de sorte que les bases de données CRM et Web soient séparées. LI> ol>
La première option est le "plus facile", mais pas le moins cher à long terme. Deuxième option; Si nous proposons le site Web en hébergement interne, le client doit combattre des problèmes tels que la connexion Internet surchargée / mauvaise / hors ligne, la perte de puissance, etc. et l'option finale; Le client est détesté de payer une balle entière d'argent pour que je puisse ré-concevoir et re-coder l'architecture, et je ne peux pas me permettre de le faire gratuitement (j'ai besoin de manger). P>
Y a-t-il un moyen de récupérer lorsque vous avez baisé la conception d'un système distribué si mal, qu'aucune des options ne fonctionne? Ou s'agit-il de couper vos pertes et d'apprendre simplement de l'erreur? Je me sens terrible qu'il n'y ait pas de solution rapide pour ce problème. P>
6 Réponses :
Vous n'avez pas bu. Le client souhaitait l'option la moins chère, vous leur avez cédé, c'est le coût qu'ils ont décollé. J'espère que vous n'avez pas supposé blâmer votre client. S'ils vous blâment, c'est un cas classique d'entre eux paie pour un chevy tout en voulant une Mercedes. P>
Conformément à cela: p> li>
Votre client doit prendre une décision d'entreprise sur ce qu'il faut faire. Votre travail consiste à leur expliquer les conséquences de chacun des choix aussi honnêtes et professionnels comme possible et laissez le choix à leur hauteur. P> li> ol>
N'oubliez pas que vous n'avez pas bousillé! EM> Vous leur avez fourni une solution qui a servi leurs besoins pendant des années, et ils en étaient satisfaits jusqu'à ce qu'ils dépassaient la conception du système. S'ils ne veulent pas avoir à maintenir l'évolutivité du système à nouveau trois ans, ils devront devoir être disposés à payer pour cela maintenant. Le logiciel n'est pas magique. P>
Premières choses d'abord combien du code avez-vous vraiment à jeter? Quelle langue utilisez-vous pour le client de bureau? Quelque chose .NET et vous pourrez peut-être récupérer un bon mandrin de la logique du système et ne devez que refaire l'interface utilisateur et certaines des connexions. p>
Mes pensées sont que 1 et 2 sont hors de question, tandis que 1 pourrait être une bonne idée que cela ne résout pas le vrai problème. Et nous en tant que ingénieurs devraient essayer de créer des solutions non dépendantes du client à votre guise. Et 2 les fait entrer dans quelque chose qu'ils ne sont pas des experts et il est préférable de garder l'hébergement d'autre où. P>
Également depuis que vous mentionnez un service Web est tout ce que vous perdez vraiment l'interface utilisateur? Vous pouvez toujours réutiliser les webservices de l'interface de serveur Web. P>
Enfin, vous pourriez envisager d'utiliser un cadre pour vous aider à fournir un CRUD simple basé sur le Web pour démarrer puis développer de là. P>
C'est C # .NET, tous les 3 systèmes (bureau, service Web et site Web). J'espère que je peux séparer le service Web et la base de données, mais aussi toujours là-bas i> sera des complications, ce sera donc très coûteux pour eux, plus je ne suis pas sûr d'avoir le temps. Position difficile!
Découvrez Kragens Post, je me demande toujours si c'est vraiment la connexion Internet. La base de données pourrait-elle avoir besoin d'optimisation? Le serveur est-il sous-alimenté?
Nous avons commandé une mise à niveau de RAM. C'est lent sur mon ordinateur, mais je n'ai jamais eu de temps d'horaire. Je pense que c'est lent à cause de la bande passante - Observant mon compteur de téléchargement, il est lent que lorsque l'application est maxing sur ma connexion Internet. Lorsqu'il charge quelque chose avec une petite quantité de téléchargement requis, il est assez réactif. Lorsque j'exécute l'application Desktop sur l'ordinateur de la base de données local, il est rapide.
On dirait que vous retournez trop de données, pouvez-vous penser à renvoyer des choses dans plus de morceaux? Avez-vous une pagination dans vos webservices?
Je ne l'appellerais pas une fouille sauf si: p>
Une best-up aurait été sur la sur-ingénieur un système très complexe coûtant plus que ce que la balance à l'époque est demandée. P>
En fait, il est une bonne pratique de ne pas investir autant que possible de tirer profit de l'entreprise, en utilisant la croissance pour financer d'autres investissements dans l'évolutivité, devrait-il être nécessaire. C'est une simple gestion des risques. P>
Sûrement que l'entreprise a augmenté au fil du temps, vraisemblablement avec l'aide de votre logiciel, ils ont également mis de côté quelque chose pour le niveau suivant. Ils devraient vous remercier d'avoir aidé à développer leur activité au-delà des attentes et à vous jeter de l'argent à vous afin que vous puissiez les aider à mener au niveau de croissance suivant. P>
Toutes ces trois options pourraient être bonnes. Lequel est le mieux dépend de l'analyse des avantages du coût, du retour sur investissement, etc. C'est partiellement une décision technique, mais surtout une entreprise. P>
Félicitations pour aider à renforcer une entreprise croissante jusqu'à maintenant et à l'avenir. P>
Hmm, bien je savais que leur trafic se développerait, mais je n'avais aucune idée de la manière dont les services Web affamés .NET étaient - j'ai vraiment dû faire pencher le logiciel avant de le remettre.
Êtes-vous sûr que la cause des délais d'attente est la connexion Internet et non quelques problèmes de performance dans le système Web Service / CRM? Par délai d'attente, je vais supposer que vous voulez dire quelque chose comme ~ 30 secondes, auquel cas: p>
Par type: L'architecture que vous avez actuellement semble (fondamentalement) d'accord pour moi, sur la base que (des problèmes de performance de côté), l'accès à la société au système CRM devrait être comparable à l'accès au public au système - comme tant que vos clients ont des temps de réponse raisonnables, alors la société devrait-elle. P>
L'application est très lente pour moi, mais rarement fois dehors; J'ai fabriqué des décisions de conception médiocres sur l'interface utilisateur, de sorte que lorsqu'elles ouvrent un compte client, il télécharge une charge de données non mises en cache à chaque fois - et toutes ces données sont dépendons de sorte que je ne peux pas couper d'entre elles. Si cela fonctionnait sur le réseau local, ce ne serait pas un problème, mais leur Internet est comme 2 mégabit, il est donc lent de chien.
@nbolton, je dirais probablement que cela devrait être mis en cache localement, s'il est nécessaire de l'avoir à 100% à jour, vous devez proposer une méthode de transfert uniquement des modifications apportées aux données et de fonctionner à chaque fois. Votre archéecture fondamentale a toujours l'air bien pour moi - Solutions 2 et 3 apportera leurs propres problèmes pour résoudre de toute façon! :-)
Installez une copie de la base de données sur le réseau local. Laissez ensuite le logiciel client communiquer avec la copie locale et laisser le logiciel de base de données effectuer la synchronisation entre le serveur de base de données local et la base de données sur le serveur Web. Cela dépend de la base de données que vous utilisez, mais certaines d'entre elles ont des outils pour faire ce travail. Dans MSSQL, il s'appelle la réplication. p>
Oui, j'avais envisagé la réplication MSSQL. Mais je n'ai aucune expérience avec elle, alors je suis inquiet de la manière dont les conflits sont manipulés, etc.
Êtes-vous sûr que la connexion est saturée? Vous pouvez frapper toutes sortes de problèmes de réseau, d'E / S et de base de données ... à moins que vous n'ayez déjà fait, utilisez Wireshark pour analyser le trafic; Mesurez le débit et partagez les résultats avec nous. P>
Le débit de la circulation est à travers le toit; C'est une question de bande passante.
Ne vous battez pas - ça sonne comme si vous avez fait du bon travail avec les ressources que vous avez eues à l'époque.
Juste une pensée: utilisez-vous la compression sur le lien? Si votre client et votre serveur coopèrent et peuvent utiliser la compression, vous risquez de récupérer un gros morceau de bande passante. Aussi - Proxying. Si une grande partie des données est statique, un proxy HTTP local pourrait réduire la quantité de données dupliquées volant sur le lien.
@ Martin Yeah Compression est allumé, mais en fait, je ne sais pas comment le tester; Peut-être que cela ne fonctionne pas correctement - j'ai peu d'expérience avec la compression lorsqu'il est utilisé sur les services Web ASP.NET et IIS7 (liens appréciés). À propos de la proxy, toutes les données sont dynamiques à partir du service Web, donc je ne sais pas si c'est une option.
@Colin j'ai esquivé l'idée d'hébergement interne commençant par car ils étaient un nouveau client, et je ne voulais pas les effacer avec acheter des serveurs, etc. Si je devais le refaire, je leur aurais dit de Achetez-en un - sans doute à ce sujet. Donc, vraiment c'était moi être bon marché et inexpérimenté avec les décisions commerciales (pas le client), raison pour laquelle je me sens en partie responsable. Bien que je ne puisse m'empêcher de penser qu'elles auraient eu peur d'acheter un serveur, compte tenu de leur bureau de 5 pieds carrés à l'époque ... maintenant ils ont un entrepôt.
Vous n'avez pas foutu. Le client a ce qu'ils ont payé. Les ont grandi et ont de nouveaux besoins, c'est donc de l'argent qu'ils devront dépenser. Cela se produit sur toutes les entreprises - la taille plus grande accompagne des dépenses plus importantes.
Maintenant, ils «menaçaient» d'embaucher une entreprise en Inde pour faire mon travail, car je suis si cher - je dois aimer les propriétaires d'entreprise.
@nbolton: Dans ce cas, attendons avec impatience 3 ans à partir de maintenant quand ils viennent ramper, vous priant de la réparer. ;) En supposant qu'ils soient toujours en affaires, de toute façon, et que la décision ne coule pas la société. (J'ai déjà eu l'expérience de cette sorte de sous-traitance avant.)
J'ajouterais dire que le design ne sonne pas intrinsèquement mauvais ou mal.
Re: menacer de l'offshore. Si tout ce qu'ils se soucient d'être le coût initial le plus bas, alors ils n'ont rien appris. :) Re: # 1 est le plus facile quel est le coût mensuel supplémentaire du n ° 1 et combien de temps l'option n ° 3 prendrait à la pause même avec # 1? par exemple. # 1 n'a pas de dépenses initiales mais un coût en cours plus élevé. # 3 a un investissement initial élevé, mais une réduction des coûts récurrents. Considérant le coût et le risque de n ° 3, vaut-il la peine d'effort? Plusieurs réponses / commentaires suggèrent des stratégies de mise en cache, ce qui pourrait bien s'avérer bénéfique. Cela couplé à une connexion Internet plus rapide pourrait faire des merveilles.
@Greg merci, je suis content que je ne suis pas le seul sans confiance en travail bon marché.
@Mark # 1 coûtera environ 300 £ / mois (3600 £ / an). # 3 les coûtera peut-être 4 000 £ maintenant, mais 0 £ par la suite. C'est une certitude, mais ils ne le voient pas de cette façon; Peut-être qu'ils ont des problèmes de trésorerie ... peut-être que la réplication SQL sera la meilleure option, car elle pourrait avoir le facteur de risque le plus faible (mais cela coûtera quelques milliers de livres et de nouveaux permis).