Lorsque je vous ai annoncé la sortie de la version 3.5 de Cuk, vous avez été nombreux à manifester dans les commentaires le désir de savoir un petit peu plus comment fonctionne votre site internet préféré.
Je vais donc aujourd’hui essayer de vous présenter quelques aspects techniques et organisationnels du site. Je n’aborderai pas les statistiques d’accès au site, qui mériteraient (mériteront?) un article dédié.
Hébergement et matériel
Cuk.ch est hébergé chez Swisscenter depuis plusieurs années, et nous avons très souvent eu l’occasion de le dire, il s’agit d’un hébergeur de qualité, avec un service qui a toujours été à la hauteur.
Contrairement à beaucoup de sites Mac (même de taille comparable), nous ne sommes pas sur un serveur dédié. Le serveur dédié offre une flexibilité accrue, mais augmente considérablement les coûts. Ne souhaitant pas recouvrir le site de publicité, nous mettons tout en oeuvre pour pouvoir rester sur un hébergement mutualisé. Cela passe par exemple par le système de mise en cache qui sera décrit plus loin.
Qui paie, et qui est payé
Les seules sources de revenus de Cuk sont les deux publicités placées en haut de la page. Les magasins Mémoirevive et pumpkin (qui se sont d’ailleurs tous les deux récemment agrandis) nous versent une cotisation fixe par mois en échange de l’affichage permanent de leurs bannières.
Ces cotisations servent à couvrir les frais d’hébergement, ainsi que les frais divers (pour les CukDays et autres rencontres par exemple). Bref, que les choses soient claires, Cuk ne fait gagner d’argent à personne.
Notre but n’est pas de faire de l’argent. Nous préférons garder au minimum nos frais d’exploitation, et nous nous contentons d’annonceurs qui couvrent ceux-ci. Autrement dit, moins nous devons penser à l’aspect financier, mieux c’est.
Par contre, il arrive souvent que les éditeurs offrent aux testeurs soit des livres, soit des numéros de série pour les logiciels dont nous parlons. C’est de cette manière seulement que les articles sont “payés”.
Vous l’aurez compris, quand on écrit quelque chose sur Cuk, c’est donc par passion et pour le plaisir de partager! Et c’est sans doute l’une des choses qui contribue à la qualité des publications.
Organisation et rédaction
Cuk.ch, c’est avant tout un article par jour. Avec environ 40 rédacteurs actifs à différents degrés, cela implique une organisation très précise.
C’est François qui s’en occupe. Tous les quelques mois, les rédacteurs doivent s’inscrire pour un programme (par exemple un jour par semaine, x articles par mois, ou autre) et tenter de s’y tenir. Ensuite, François crée le programme, où chaque jour correspond à une réservation pour un rédacteur.
Pour cette raison, c’est un calendrier du mois qui est en première page de notre panneau d’administration:
Le calendrier
Celui-ci permet de consulter d’un coup d’oeil la liste des réservations. Les carrés de différentes couleurs correspondent à l’état d’avancement des articles.
Dans le cas idéal, ce sont les rédacteurs qui s’occupent de la rédaction et de la mise en page de leurs articles depuis une interface web, en HTML directement, en Textile brut, ou avec un éditeur WYSIWYG.
Cependant, bien que de plus en plus de rédacteurs s’occupent eux-mêmes de leurs articles, François effectue un travail considérable pour veiller sur la mise en page et corriger les éventuelles coquilles.
Donc les articles sont présents dans la base de données bien avant d’être publiés sur le site, et ce n’est que lorsque leur date est plus ancienne que la date actuelle qu’ils sont publiés, automatiquement.
Technique
Je garde l’aspect technique du site pour cette deuxième moitié de l’article. Ceux qui ne sont pas curieux de savoir comment fonctionnent les rouages informatiques de Cuk peuvent arrêter la lecture ici.
Ruby on Rails et MySQL
Depuis la version 3 de Cuk.ch, le site est basé sur la technologie Ruby on Rails, dont nous parlait Nicolas Paton ici il y a trois ans. Attention, Ruby on Rails n’est pas un CMS. RoR rend l’écriture du code du site très agréable, mais tout doit quand même être fait depuis zéro!
La base de données est de type MySQL. Elle contient le texte des quelque 2825 articles, ainsi que les 54190 commentaires à ce jour. Les images, quant à elles, sont stockées simplement sur le système de fichiers du serveur.
AJAX
Lorsque vous effectuez une recherche live avec le champ tout en haut à gauche de la page, ou lorsque vous ajoutez un commentaire, le contenu de la page change, sans pour autant devoir la recharger. C’est la magie d’AJAX.
AJAX permet à une page web chargée dans le navigateur d’interagir avec le serveur, afin de lui envoyer ou de recevoir des informations. Cette technologie est rendue très facile d’accès avec Ruby on Rails.
Performances et mise en cache
Il est évident que si les différentes pages du site devaient être générées une fois pour chaque utilisateur, Cuk.ch ne pourrait pas tenir sur un serveur mutualisé.
C’est pour cette raison que la plus grande partie des pages du site est enregistrée en cache. Concrètement, cela signifie la chose suivante. Lorsque vous tapez “http://cuk.ch/articles/21” dans votre navigateur, c’est dans un premier temps un serveur web Apache tout ce qu’il y a de plus normal qui reçoit votre requête. Le serveur vérifie ensuite si la page est présente en cache, dans quel cas il vous l’envoie directement. Si elle ne l’est pas, alors il transmet la requête à un serveur Mongrel (celui qui fait tourner l’application Ruby on Rails) qui génère la page, vous l’envoie, et l’enregistre dans le cache pour le suivant.
Cela signifie que dans l’énorme majorité des cas, votre requête sur Cuk est traitée sans passer par Ruby on Rails. Il s’agit d’un simple envoi d’un fichier HTML statique par Apache, ce qui est extrêmement peu coûteux.
Ce système est très économique en ressources. En réalité, c’est la quasi-totalité des pages du site qui est stockée en cache: toutes sauf les résultats des recherches et les pages nécessitant une authentification.
Cependant, un tel système de cache a un inconvénient. Il faut en effet être prudent, car lorsque le contenu du site est modifié, il faut que les pages en cache soient détruites (pour être recréées à la requête suivante). Ainsi, si vous changez par exemple votre nom d’utilisateur dans votre profil, toutes les pages des articles que vous avez commentés doivent être actualisées!
Bien sûr, il serait facile de simplement détruire la cache entière toutes les heures, mais ce serait bien dommage. Le système développé pour Cuk est beaucoup plus ciblé: ce ne sont que les pages concernées par chaque changement qui sont “décachées”. Et croyez-moi, c’est plus compliqué qu’il n’y parait!
Les seules pages qui sont sorties de la cache sur une base temporelle sont la page d’accueil et les pages “Le mois de Cuk” et “La semaine de Cuk”. C’est nécessaire, car les nouveaux articles deviennent accessibles dès que leur date de publication est atteinte, sans qu’aucune modification de la base de données n’ait lieu. Cette mise à jour à lieu 5 minutes après chaque heure entière. C’est pour cette raison que l’article du jour apparaît généralement à 0h05, sauf si entre-temps, un autre changement vient modifier le contenu de la page d’accueil.
Voilà, maintenant vous savez tout, ou presque!



.