Comment rendre une application web rapide, fiable et évolutive

scalable-web-applicationsSujet assez fréquent sur ce site mais toujours utile. Cette fois les conseils proviennent de Nick Belhomme. Qui a transcrit une excellente allocution d’Eli White à propos des application web : scalable. Eli travaillait chez Digg et lors de cette intervention il a livré ses conseils avisés sur l’architecture d’une application web évolutive:

Voici donc les quelques points importants à mettre en oeuvre pour construire une architecture capable de monter en charge et en nombre d’utilisateur sans être obligé de consommer vos ressources de manière exponentielle.

  • Premier Point : Mettre en place de la répartition de charge sur vos serveurs. C’est assez classique, mais encore faut-il le prévoir dès le début afin de ne pas mettre en place des mécanismes necessitant d’avoir une session locale, par exemple.
  • Point 2: Mettre en place de la redondance sur votre serveur de base de données via un mécanisme de Master-Slave.
  • mysql-master-slave

  • Point 3: Partitionner vos bases de données de maniere verticale :
  • De manière générale, éviter de faire des tables contenant trop de champs, ce n’est pas bon pour votre moteur de BDD, pas efficace pour le cache, et complexe à maintenir.

  • Point 4: Partitionner vos bases horizontalement, en utilisant une clef vous permettant de partager vos utilisateurs sur plusieurs  bases. Quand le nombre d’utilisateurs augmente il suffit d’ajouter des serveurs, quasiment sans toucher au code.
  • Point 5: Séparer correctement les couches applicatives (éviter de tout mélanger dans une page PHP !!!)
  • Point 6: Mettre en place du cache autour de vos bases de données, il existe des outils dédiés à cette tâche.
  • Si vous êtes en tain de réfléchir au futur de votre application, à son évolution, ou encore à l’architecture de votre prochain service vous pouvez aussi consulter ce  billet, il est assez similaire mais il vous permettra d’inscrire ces étapes dans le temps et ainsi de planifier les évolutions. Mon billet sur la croissance ‘rentable’ vous sera également utile.

    Enfin, n’hésitez pas à consulter l’article complet (en anglais) à cette adresse :

    Et croyez moi, ces points ne sont pas très compliqués à mettre en place au début de votre mise en oeuvre. C’est évidemment un peu plus coûteux, mais prendre en compte ces points dès le début vous assurera des années de tranquillité.

    N’hésitez donc pas à investir un peu plus en début de projet pour pouvoir démultiplier sans effort par la suite.

    Sources :

    Sur le même thème :

    3 Responses to “Comment rendre une application web rapide, fiable et évolutive”

    1. techadds.com says:

      Comment rendre une application web rapide, fiable et évolutive…

      Sujet assez fréquent sur ce site mais toujours utile. Cette fois les conseils proviennent de Nick Belhomme. Qui a transcrit une excellente allocution d’Eli White à propos des application web…

    2. dbscale says:

      Bonjour, le Point 4 est intéressant mais auriez vous des liens/ressources qui pourraient aider à comprendre comment implémenter cette clef pour partager les utilisateurs sur plusieurs bases?

    3. Marc says:

      Bonjour,

      Ce type de partitionnement fonctionne souvent via un hash de l’utilisateur. Si vous recherchez du code vous pouvez regarder du coté de PL/Proxy c’est le code GPL qui est utilisé pour partitionner les bases chez Skype.

      https://developer.skype.com/SkypeGarage/DbProjects/PlProxy

    Leave a Reply