9 votes

Comment planifier une application web de niveau entreprise ?

J'en suis à un stade de ma carrière de freelance où j'ai développé plusieurs applications web pour des petites et moyennes entreprises qui prennent en charge des éléments tels que la gestion de projets, les réservations et la gestion du courrier électronique.

J'aime ce travail, mais je trouve que mes applications finissent par atteindre un point où le coût de la maintenance est très élevé. Je regarde le code que j'ai écrit il y a 6 mois et je trouve que je dois passer un moment à réapprendre comment je l'ai codé à l'origine avant de pouvoir faire un correctif ou des ajouts de fonctionnalités. J'essaie de m'entraîner à utiliser des frameworks (j'ai déjà utilisé Zend Framework et j'envisage Django pour mon prochain projet).

Quelles techniques ou stratégies utilisez-vous pour planifier une application capable de gérer un grand nombre d'utilisateurs sans se briser tout en conservant un code suffisamment propre pour être facilement maintenu ? Si quelqu'un a des livres ou des articles à recommander, ce serait également très apprécié.

9voto

vog Points 3334

Bien qu'il existe certainement de bons articles sur ce sujet, aucun d'entre eux ne remplace l'expérience du monde réel.

La maintenabilité n'est rien que vous puissiez planifier à l'avance, sauf pour les très petits projets. C'est quelque chose dont vous devez vous occuper tout au long du projet. En fait, créer des tas de classes et de code d'infrastructure à l'avance peut produire un code encore plus difficile à comprendre que le code spaghetti naïf.

Mon conseil est donc le suivant nettoyer vos projets existants en les remaniant continuellement. Examinez les parties qui ont été difficiles à modifier et efforcez-vous de trouver des solutions plus simples, plus faciles à comprendre et à adapter. Si le code est encore trop mauvais pour cela, envisagez de le réécrire à partir de zéro.

Ne lancez pas de nouveaux projets et ne vous attendez pas à ce qu'ils réussissent, simplement parce que vous avez lu quelques articles supplémentaires ou utilisé un nouveau cadre. Identifiez plutôt les échecs de vos existente et de corriger leurs spécifique problèmes. Chaque fois que vous devez modifier votre code, demandez-vous comment le restructurer pour qu'il puisse supporter des modifications similaires à l'avenir. C'est ce que vous devez faire de toute façon, parce qu'il y a des problèmes de sécurité. se être des changements similaires à l'avenir.

En effectuant ces refactorings, vous tomberez sur diverses questions spécifiques vous pouvez demander et lire des articles à ce sujet. Vous apprendrez ainsi davantage qu'en posant des questions générales et en lisant des articles généraux sur la maintenance et les frameworks.

Commencez à nettoyer votre code aujourd'hui . Ne le reportez pas à vos projets futurs.


(Il en va de même pour la documentation. Les premières documentations de tout le monde sont très mauvaises. Après plusieurs mois, elles s'avèrent être trop verbeuses et remplies de choses sans importance. Complétez donc la documentation par des solutions aux problèmes que vous rencontrez. vraiment avait, car il y a de fortes chances que l'année prochaine vous soyez confronté à un problème similaire. Ces expériences amélioreront votre style d'écriture plus que n'importe quel guide de style "comment bien écrire").

4voto

Mike Brown Points 5874

Je recommande honnêtement de regarder chez Martin Fowlers. Modèles d'architecture d'application d'entreprise . Il aborde de nombreuses façons de rendre votre application plus organisée et plus facile à maintenir. En outre, je vous recommande d'utiliser les tests unitaires pour mieux comprendre votre code. Le livre de Kent Beck sur Développement piloté par les tests est une excellente ressource pour apprendre comment aborder les modifications de votre code au moyen de tests unitaires.

3voto

Vlad Gudim Points 10161

Pour améliorer la maintenabilité, vous pourriez :

  • Si vous êtes le seul développeur, adoptez un style de codage et respectez-le. Cela vous donnera confiance plus tard lorsque vous naviguerez dans votre propre code en vous demandant ce que vous auriez pu faire et ce que vous n'auriez absolument pas fait. Savoir où chercher, ce qu'il faut chercher et ce qu'il ne faut pas chercher vous fera gagner beaucoup de temps.

  • Prenez toujours le temps de mettre à jour votre documentation. Incluez la tâche dans le plan de développement ; incluez ce temps dans le plan en tant que partie d'un changement ou d'une nouvelle fonctionnalité.

  • Veillez à ce que la documentation soit équilibrée : quelques diagrammes de haut niveau, des commentaires significatifs. Les meilleurs commentaires sont ceux qui ne peuvent pas être lus dans le code lui-même. Par exemple, les raisons commerciales ou le "pourquoi" de certains morceaux de code.

  • Incluez dans le plan l'effort de maintenir la structure du code, les noms de dossiers, les espaces de noms, les noms d'objets, de variables et de routines à jour et reflétant ce qu'ils font réellement. Cela contribuera grandement à améliorer la maintenabilité. Appelez toujours un chat un chat. Évitez les gros morceaux de code, structurez-les par des moyens disponibles dans le langage de votre choix, donnez des noms significatifs aux morceaux.

  • Faible couplage et cohérence élevée. Assurez-vous d'être à jour avec les techniques permettant d'atteindre ces objectifs : conception par contrat, injection de dépendances, aspects, modèles de conception, etc.

  • Du point de vue de la gestion des tâches, vous devriez estimer plus de temps et facturer un tarif plus élevé pour les travaux non continus. N'hésitez pas à faire savoir au client que vous avez besoin de plus de temps pour effectuer de petits changements non continus étalés dans le temps, par opposition à de plus gros projets continus et à une maintenance permanente, car les frais généraux d'administration et d'analyse sont plus importants (vous devez gérer et analyser chaque changement, y compris l'impact sur le système existant, séparément). L'un des avantages dont bénéficiera votre client est une plus grande espérance de vie du système. L'autre est une documentation précise qui lui permettra de conserver la possibilité de faire appel à quelqu'un d'autre s'il décide de le faire. Les deux protègent l'investissement du client et constituent des arguments de vente solides.

  • Utilisez le contrôle de la source si vous ne le faites pas déjà.

  • Tenez un journal détaillé de tout ce qui a été fait pour le client et de toute communication importante (un simple CMS informatique ou papier). Rafraîchissez votre mémoire avant chaque mission.

  • Tenez un registre des questions laissées en suspens, des idées, des suggestions par client ; rafraîchissez-vous la mémoire avant de commencer une mission.

  • Planifiez à l'avance la manière dont l'assistance post-implémentation va être menée, discutez-en avec le client. Faites en sorte que vos systèmes soient faciles à entretenir. Prévoyez le paramétrage, les outils de surveillance, les contrôles de cohérence en cours de réalisation. Vendez le support post-mise en œuvre au client dans le cadre du contrat initial.

  • Développez vos activités en recrutant, même si vous avez besoin de quelqu'un juste pour fournir un soutien après la mise en œuvre, pour s'occuper des tâches administratives.

Lecture recommandée :

2voto

Pete Points 13373

Le conseil le plus important que je puisse donner, ayant participé à la transformation d'une vieille application web en une application web extrêmement disponible et très demandée, est d'encapsuler les éléments suivants tout. - en particulier

  1. Utilisez de bons principes et cadres MVC pour séparer votre couche d'affichage de votre logique commerciale et de votre modèle de données.
  2. Utilisez une couche de persistance robuste pour ne pas coupler votre logique métier à votre modèle de données.
  3. Prévoyez l'absence d'état et un comportement asynchrone.

Voici un excellent article sur la façon dont eBay s'attaque à ces problèmes. http://www.infoq.com/articles/ebay-scalability-best-practices

1voto

Jamie Rumbelow Points 2815
  1. Utilisez un cadre de travail / un système MVC. Plus votre code est organisé et centralisé, mieux c'est.

  2. Essayez d'utiliser Memcache. PHP a une extension intégrée pour cela, il faut environ dix minutes pour l'installer et vingt autres pour le mettre dans votre application. Vous pouvez y mettre en cache ce que vous voulez - j'y mets en cache tous les enregistrements de ma base de données - pour chaque application. Il ne se déplace pas.

  3. Je vous recommande d'utiliser un système de contrôle de source tel que Subversion si ce n'est pas déjà le cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X