Site internet en construction
Veuillez excuser le manque de contenu et les bugs d'affichage, ce site est en cours de création.

La ligue contre le cancer

Site internet

La ligue contre le cancer

Présentation de la Ligue contre le cancer

La Ligue nationale contre le cancer est une association française créée le 14 mars 1918 par Justin Godart et reconnue d’utilité publique depuis le 22 novembre 19202. Organisation non gouvernementale, la Ligue a pour missions la prévention et la promotion des dépistages des cancers, l’accompagnement des personnes malades et de leurs proches et le soutien financier de la recherche publique dans tous les domaines touchant à la cancérologie. Elle est le premier organisme non-gouvernemental français de financement de la recherche dans ce domaine.

La ligue nationale contre le cancer est divisée en plusieurs comités indépendants, se partageant l’ensemble du territoire français.
Je suis entré en communication le docteur Bastien, à l’époque Président du comité de Côte d’Or en 2013. Lors de mon arrivée dans le comité, celui-ci possédait un site internet « fait maison » par son président. Après plusieurs réunions, le comité a prit la décision de me confier l’élaboration d’une plateforme de gestion de sa communication.

La plateforme de communication

L’idée de créer une plateforme de communication est née d’un besoin de centralisation des informations, de simplification de l’utilisation de la multitude de réseaux sociaux et de sécurisation des données internes. Pour toutes ces raisons, nous avons décidé de créer une plateforme unique, regroupant à la fois le site internet et les outils développés spécifiquement pour l’association.

Les fonctionnalités de la plateforme

La plateforme est alors décomposée en 3 parties :

  • L’administration
  • La plateforme utilisateur
  • Le site internet public

Dans l’administration se trouve principalement l’outil de gestion des utilisateurs. Chaque utilisateur possède un ensemble d’informations le caractérisant, dont un groupe et un rôle. Le groupe permet de lui attribué les droits sur certaines parties du site, voire à un site entier spécifique, tandis que le rôle lui confère des droits dans l’application. Ces rôles et ces groupes sont, eux aussi, configurables directement depuis la plateforme d’administration.

La plateforme utilisateur permet :

  • L’administration du site : Création de nouvelles pages, modifications des menus, gestions des contenus et des médias
  • L’accès aux statistiques du site : Le site est relié à Google Analytics. Via l’API Google, la plateforme récupère et trie les informations de Google analytics et les affiches sous forme de tableaux et graphique
  • Le remplissage des calendriers : Le comité possède plusieurs calendriers de type Google Calendar. Via l’API Google, la plateforme permet de créer, modifier, supprimer des événements dans les calendriers de l’association.
  • L’utilisation des réseaux sociaux : A partir des API Facebook & Twitter, l’application permet à certains utilisateur de publier de l’information, répondre aux commentaires, d’être présent sur Facebook & Twitter
  • Le transfert Blog / Réseaux sociaux : A chaque création de nouveaux contenu dans le blog, l’application transmet les informations à Facebook & Twitter
  • L’envoi de newsletters : Le site internet permet de récupérer des adresses e-mail, la plateforme propose la création et l’envoi de newsletter
  • La visibilité des dons : Le site internet propose un formulaire de dons, proposé par la banque de l’association. Les statistiques et les informations de chaque don est renvoyé à la plateforme.
  • La gestion des utilisateurs : Chaque « Groupe » possède un administrateur qui peut décider d’ajouter / modifier / supprimer / bloquer des droits à un utilisateurs.

Le site internet est la partie visible, accessible au public. Afin de gagner du temps et de se concentrer sur les fonctionnalités, le design du site a été choisi dans un ensemble de template.

L’architecture du projet

Nous avons décidé, avec le président du comité de Côte d’Or, que la plateforme serait, une fois finalisée, proposée à l’ensemble des autres comités de l’association. C’est pourquoi, nous avons, dès le début du projet, mis en place une architecture complexe mais robuste qui nous assurerait une continuité maximale et nous avons mis en place un plan de reprise d’activité.

Pour cela, j’ai installé plusieurs serveur web, configuré de sorte que chacun d’entre eux soit, à la fois redondant et capable d’assurer la plus part des actions vitales à lui seul.

Ceci nous donne donc la liste des serveurs suivants :

  • Deux serveurs d’entrée : Ce sont les serveurs qui sont reliés aux différents noms de domaines.
    Ils fonctionnent sous la distribution Linux DEBIAN. Pour créer un système de proxy redondant load-balancé, j’utilise le logiciel Nginx.
    Ces serveurs sont très important, dans la mesure où ce sont eux qui sont appelés en premier par les utilisateurs et qu’ils vont faire la balance pour le trafic.
  • Le serveur applicatif : C’est ce serveur qui supporte les codes sources du projet.
    Il fonctionne sous la distribution Linux DEBIAN. Sur ce serveur, tournent principalement APACHE & PHP.
    Afin de simplifier la gestion des médias, j’ai configuré le serveur de sorte que les dossiers de médias (distants) soient considéré comme des dossiers virtuels
  • Un serveur multimédia principal, relié à plusieurs serveurs médias secondaires
    Ces serveurs sont surtout de grosses unités de stockage, pratiquant une redondance des données, ainsi, chaque média est disponible au minimum sur 2 serveurs.
    Accessibles à distance via un sous-domaine spécifique, uniquement en cas de problème avec le serveur principal, ils se comportent comme des dossiers virtuels pour le serveur applicatif
  • Un « cluster » de deux serveurs pour la base de données : La base de données MySQL est stockée sur un serveur principal, recopiée en temps réel sur un serveur esclave.
  • Un serveur de sauvegarde : Une nouvelle unité de stockage bien plus importante que toutes les autres, permet d’effectuer des sauvegardes régulières.
    Chaque serveur possède une tâche CRON permettant d’effectuer une sauvegarde hebdomadaire complète ainsi qu’une sauvegarde incrémentale journalière.
    Le serveur de sauvegarde est configuré afin qu’il récupère et conserve au minimum 4 archives complètes. Il est aussi programmé pour transférer la plus récente des sauvegarde à un serveur FTP mis à disposition par l’hébergeur.
    Enfin, il a pour ordre d’envoyer un e-mail aux administrateurs à chaque récupération de sauvegarde.

Le développement de l’application

Une version « from scratch »

Comme beaucoup d’application, la plateforme a connue plusieurs versions. La première d’entre-elle a été développée intégralement en PHP, sans utiliser aucun framework ni aucun CMS. (Mais pourquoiiiiiiiii !!???) En fait, cette plateforme a été le second projets qui m’ait été demandé de développer. Pour mon premier projet, j’avais développé un semblant de « framework » personnel qui me permettait de gérer facilement à la fois la communication entre plusieurs serveurs et des bases de données distribués. J’ai donc choisi de réutiliser celui-ci, que j’avais mis toutes mes études à développer, et que je connaissais parfaitement. Quant aux CMS, c’est vrai que, lorsque l’on regarde le projet finalisé, un bon WordPress Multisite bien implémenté, avec quelques plugins maison aurait sans doute fait l’affaire. Mais je vous rappelle quand même qu’on était en 2013. WordPress n’était pas l’outil qu’on connait aujourd’hui et pour ma part, je n’ai jamais été un grand fan de ce CMS, dans lequel j’ai mis du temps (j’avoue) à croire réellement et à en comprendre l’utilité.

Reprise sur Laravel

Une seconde version a été développée à l’aide du framework Laravel.
J’ai choisi ce framework principalement pour sa simplicité d’utilisation. Le petit outil « artisan » proposé est génial ! L’utilisation de composer pour intégrer des « plugins » est simplissime, la prise en main du modèle MVC est très aisée, la documentation est assez complète (et en partie disponible en français) et enfin la communauté est très active.

Cette nouvelle version est venue corriger plusieurs petits bugs de la première version, notamment la gestion du stockage et la rapidité d’accès à la base de données. Cette mise à jour a aussi été l’occasion de faire l’impasse sur quelques fonctionnalité dont l’association ne se servait plus réellement et qui prenait pas mal de ressource inutilement.

L’abandon du projet

Ce projet de plateforme a été développé et mis en place dans son intégralité. Je suis personnellement assez fier qu’il ait tenu le coup durant près de 5 ans. Mais il a bel et bien été abandonné après cela.

Pourquoi ?

Plusieurs raisons m’ont amené à abandonner ce projet.

La première, ce sont les changements au sein de l’association elle même. En effet, avec le temps, la présidence de l’association a changé à plusieurs reprises et les priorités de l’association avec. Le site internet n’était plus une priorité et les outils proposés sur la plateforme ne correspondaient plus aux attentes de l’association. Au final, de toute la plateforme, après 5 ans, l’association n’utilisait plus que le site internet.

La seconde, c’est le coût financier évident du projet. Lorsqu’il a été pensé, le projet devait incorporer plusieurs associations. Il était donc important que toutes les données soient redondantes, sauvegardées régulièrement et accessibles avec un taux d’erreur très faible. Mais après 5 ans, seuls 3 comités avaient rejoint la plateforme. Financièrement, il était très difficile de supporter le coût d’une dizaine de serveurs (même si avec le temps certains ont été remplacés et d’autre totalement supprimés) pour assurer la survie de seulement 3 sites internet.

La troisième, c’est l’évolution de la technologie elle même. Encore une chose à laquelle je n’avais pas pensé ! La technologie évolue ! Bon, ça peut sembler idiot à dire, mais quand on se lance, on ne pense pas forcément que cela aura un impact aussi significatif. Lorsque l’on développe un site, un logiciel ou une application pour le plaisir, pour soi-même ou même pour un petit client … sa durée de vie est assez limité. D’ici 2 ans, on aura eu le temps de revoir le client et de lui proposer autres chose. Mais quand on doit maintenir un produit sur près d’une demi-décennie, il faut penser aux évolutions et aux mises à jour régulièrement, sans quoi, les outils deviennent vite inutilisable.

D’autres raisons plus personnelles, comme le manque de temps, la volonté de passer à autre chose, le besoin de changement … m’ont aussi poussé à abandonner le projet.

Comment ?

L’abandon du projet a été assez simple. J’étais propriétaire (locataire) de l’ensemble des serveurs, je les avais installé, j’avais tous les codes d’accès. J’étais propriétaire des noms de domaine et en contact régulier avec l’ensemble des clients hébergés par la plateforme. J’ai donc prévenu 6 mois à l’avance, par e-mail, l’ensemble des clients de ma volonté de mettre fin à ce projet. J’ai proposé à chacun d’entre eux une procédure pour qu’ils récupèrent leurs données ainsi qu’un devis pour la mise en place d’un nouveau site, sur WordPress cette fois-ci et hébergé directement par leur soins.

L’un des trois comités m’a répondu positivement, les autres n’ont pas répondu. J’ai donc laissé 6 mois s’écouler, puis j’ai renvoyer un nouvel e-mail, 15 jours avant de tout débrancher.

Ma conclusion sur ce projet

Les points positifs :

  • Un projet passionnant à mettre en place
  • J’ai installer et configuré plusieurs serveurs complexes
  • J’ai découvert Laravel au travers de cette plateforme
  • J’ai appris à utiliser les API de Google, Facebook, Twitter et celle d’une banque
  • Le projet a tenu 5 ans !!

Les points négatifs :

  • Le projet m’a pris beaucoup de temps et d’argent
  • Je suis déçu de ne pas avoir réussi à convaincre plus de monde d’adhérer
  • J’ai compris que seul, c’est quand même compliqué de gérer un projet intégralement (réflexion, réunion, recherche de client, développement, infrastructure, mise à jour …)

En conclusion, ce projet a été très intéressant pour moi dans la mesure où il m’aura permis d’apprendre. Il m’aura aussi permis d’apporter, à mon niveau, un petit quelque chose en plus, à une association qui apporte un réel soutien à des gens qui en ont besoin et rien que pour cela, je suis content d’avoir pris le temps de le faire.

Si j’avais à refaire ce projet aujourd’hui, je le ferais avec plaisir en suivant ces quelques règles :

  • Plateforme développée en PHP7 grâce au framework Laravel
  • Hébergement dédié basé sur un Linux DEBIAN + Plesk
  • Sauvegarde sur « AWS iceberg« 
  • Accès via les DNS de « Cloudflare«