La genèse de Nofrag V2 – Introduction et Architecture Technique

Il y a quelques semaines, DrLoser  m’a suggéré de rédiger un papier sur le développement de la V2 de Nofrag, qui s’est étalé de début septembre 2017 avec un gros chantier sur le forum, suivi par le nouveau site de news, jusqu’à l’ouverture des nouveaux blogs courant janvier 2018.

L’idée est de rédiger une série d’articles présentant l’architecture technique et applicative, ainsi que des tutoriaux détaillant chaque composant.

A la fin de cette série d’articles, vous aurez à votre disposition un socle logiciel permettant de faire de la publication d’articles sur un site de news, l’hébergement d’un forum, de blogs pour les besoins d’une communauté.

On va commencer par une description de l’infrastructure, résumée par ce schéma.

Nous avons créé une machine virtuelle fonctionnant sur Ubuntu et dont l’image est positionnée dans une AMI. Cette AMI est un cliché de la machine à un instant T, qui a besoin d’être associée à une instance EC2 pour prendre vie. L’EC2, c’est le terme choisi par Amazon pour parler d’une machine virtuelle. La configuration de l’EC2 est de type t2.medium : 2CPU et 4Go de RAM. Cette EC2 est positionnée dans une Auto Scaling Group, qui est un composant permettant de paramétrer le nombre d’instance EC2 simultanées et du même coup protège notre infrastructure des plantages : si une EC2 plante, l’Auto Scaling Group se charge de redémarrer une instance avec son contenu d’origine dans l’AMI et une configuration lui permettant de récupérer le contenu qui a évolué depuis la création de l’AMI.

Car oui, si nous nous arrêtions là, à chaque redémarrage d’une instance, tout le contenu de la machine qui aura évolué entre temps est perdu. Il est donc nécessaire de gérer le stockage du contenu qui évolue et qu’on doit conserver.

Ainsi, pour le contenu des différents sites (Nofrag, Forums, Wiki, Blogs) , nous utilisons le produit S3 de Amazon, qui permet le stockage de données sur le cloud. Nous synchronisons régulièrement le contenu des sites sur S3, et lors d’un redémarrage de l’EC2, ce contenu est redescendu sur l’instance afin d’avoir les fichiers les plus récents.

L’adresse IP de nofrag.com est affiliée à l’Auto Scaling Group pour avoir accès en permanence à l’instance EC2 en cours depuis l’IP associée au nom de domaine.

Concernant la base de données, RDS (managée sous AWS), et sous MariaDB, elle n’est pas hébergée sur l’EC2 mais sur une machine dédiée, elle n’est pas dans l’Auto Scaling Group car elle se gère toute seule, notamment en terme de maintenance. Ce choix s’est fait pour des raisons de performances et de sécurité. Il s’agit d’une  t2.small : 1CPU et 2Go de RAM. De par l’utilisation de plusieurs caches, son taux d’utilisation est relativement faible.

Tout ce petit monde est défini dans une Availability Zone, qui permet de choisir le datacenter sur lequel sera stocké nos composants. On trouve également la notion de region, qui est la zone géographique où l’on héberge nos composants. Ces deux parties ne sont pas neutres car elles ont de l’influence sur la manière dont sont traitées les données légalement, et sur le montant de la facture. En effet, il est important de définir des zones et datacenters communs.

Rassurez-vous, nos données sont en Europe.

Bilan

Me concernant, j’ai trouvé hyper enrichissant l’utilisation du cloud Amazon, d’un point de vue personnel mais aussi professionnel. C’est très performant, quoique pas toujours clair.

Nous n’utilisons qu’une infime partie des fonctionnalités proposées, comme vous pouvez le voir dans cette petite liste. Si un jour on veut se lancer dans les learning machine, on a ce qu’il faut !

Voilà pour l’infrastructure technique, prochain article sur l’architecture applicative.

5 réflexions sur « La genèse de Nofrag V2 – Introduction et Architecture Technique »

  1. Très intéressant. Rien de surprenant pour qui fait un peu d’archi et a déjà joué avec les services Amazon, mais d’une part c’est pas le cas de tout le monde et en plus c’est super cool de savoir un peu comment vous avez monté tout ça (curiosité mal placée, tout ça …).

    Toujours pour satisfaire ma curiosité, j’aurais aimé quelques chiffres : genre en vitesse de croisière ou en période de pointe, vous êtes à combien d’instances simultanées ? Quelle volumétrie pour les contenus S3 synchronisés ?

    Autre question, c’est pourquoi ne pas plutôt laisser S3 faire office de CDN ?
    À titre d’exemple sur l’article NoFrag https://nofrag.com/2018/03/13/111171/ je vois (enfin plutôt je suppose) que l’image de fond PUBG est servie depuis votre instance EC2 (https://nofrag.com/wp-content/uploads/2018/03/pubg-like-header.jpg)
    Si j’ai bien compris, je suppose que ce genre de contenu qui est synchronisé vers S3 en runtime et depuis S3 au démarrage des instances EC2, mais si c’était directement stocké et servi par S3 ça pourrait alléger les instances EC2, non ? (NB : en rédigeant ces lignes je me dis que c’est peut-être juste pas possible à cause de l’archi applicative et qu’il faut que j’attende le prochain article :D)

    En tout cas, j’adore ce genre de contenu et j’espère qu’il y en aura d’autre (même si ça parlera pas à tout le monde :))

    1. Combien d’instances : 1 seule, quelque soit la période. On n’a pas besoin d’en mettre plus pour l’instant, le site répond bien. Mais quand Nofrag aura pris la place de GameKult, on aura peut-être des besoins différents 🙂

      Sur S3, on a actuellement un peu plus de 13 Go stockés, qui redescendent sur l’instance EC2 au démarrage (pas tout car en fonction de l’âge de l’AMI, une partie seulement est redescendue du cloud).

      On avait commencé à passer par CloudFront comme CDN, avec les url d’images pointant vers cloudfront, mais CloudFlare propose un service gratuit, et c’est transparent au niveau des URL appelées. En fait on passe par les DNS de cloudflare, qui s’occupe de faire proxy pour le contenu (pas le HTML, uniquement certaines extensions, comme les CSS ou les images). Et là pour le coup on a de réelles économies, j’y reviendrai dans un prochain article.

      Merci pour tes encouragements !

Laisser un commentaire