Cocktailand - La stack technique

La stack technique de cocktailand

Publié le 29/05/2018

A la vue de cet article on me dira surement que la stack technique du site Cocktailand est overkill.

Ma réponse est simple: "Ouai carrément !"

Au-delà du plaisir de travailler sur la thématique des cocktails, je travaille sur ce projet aussi pour me faire plaisir techniquement et pour tester des technologies ou des services en mode SAS.

Comme j'ai toujours la flemme de documenter mes sides projects cet article fera office de documentation "technique".

Je vais donc découper cet article en trois parties:

  • L'hébergement
  • L'application
  • Les services SAS utilisés

L'hébergement

Scaleway

Cloudflare

Depuis la beta de scaleway, filiale de Online, je prends tous mes serveurs perso chez eux. Ils sont à la fois fiable, efficace et abordable. Il n'y a pas de frais d'installation et on peut libérer un serveur à tout moment. Pour Cocktailand j'ai pris deux serveurs pour démarrer, un pour la prod et un pour les backupsqui n'a pas d'accès à internet (ni entrant ni sortant). Pour toute la partie métrique graphite / grafana j'ai pluggué le site sur mon infra existante.

Le serveur qui héberge le site est un START1-S. Ce n'est pas une bête de course, mais au besoin je passerais à la gamme au-dessus.

Cloudflare

Cloudflare

Cloudflare est un gestionnaire de DNS en ligne qui a pour particularité d'avoir un temps de propagation proche de 0. Dans son offre de base, qui est gratuite, il permet de gérer plusieurs noms de domaine, il autorise les wildcards dans les sous domaines, mais il propose aussi tout un tas d'autres fonctionnalités intéressantes. En effet dans l'offre gratuite il propose:

  • Une protection DDOS
  • Une optimisation des assets à la volée
  • Une redirection http vers https automatique
  • Une modification des urls des assets des pages de http vers https (un garde fou sympa si on est full https)
  • Une redirection automatique vers un site mobile (s'il est différent)
  • La possibilité de bannir des ips (manuellement ou via une API)
  • ...

Pour ma part je l'utilise depuis longtemps et je n'ai jamais eu à me plaindre du moindre dysfonctionnement.

Docker compose

Docker

La stack du site est entièrement gérée avec docker.

Docker stack

Chaque brique de la partie docker (varnish, nginx, phpfpm ) peux scaller horizontallement.

Pour le moment le serveurs MySQL ainsi que les images ne sont pas scallable. Je travaillerais sur les deux points si jamais le besoin s'en fait resentir. Normalement avec l'utilisation intensive de varnish qui est fait la base de données n'est pas énormement sollicitée.

L'application

Le site est développé avec le framework Symfony. J'ai choisi SF pour sa stabilité, sa fiabilité, mais aussi car j'ai l'habitude de travailler avec au quotidien. Je sais que bien utilisé il est capable de tenir la charge

Le site fait un usage assez intensif des ESI afin de permettre une gestion du cache http assez fine. Quasiment chaque bloc de la home est un ESI. Il est par exemple possible d'avoir un temps de cache de quelques heures pour le cocktail du jour et un cache d'une journée sur le top des cocktails les plus consultés

Images

La problématique n'est pas de trouver des recettes de cocktails, mais de trouver des images libre de droits. Je n'ai malheureusement pas eu le temps de confectionner par moi-même l'ensemble des cocktails présent sur le site.

Voici donc une liste non exhaustive des sites sur lesquels je vais chercher des images quand je n'en ai pas:

Les services SAS utilisés

Comme je l'ai dit plus tôt cocktailand a aussi pour but de tester des technologies ou des services en SAS.

Algolia

Algolia

Surnommé le "Google des apps", Algolia est un service externe de moteur de recherche. Il remplace le bon vieux cluster ElasticSearch que j'aurais pu mettre sur mon serveur.

En plus d'être extrêmement performant, algolia à un service client au top.

L'offre gratuite me permet largement de faire tourner mon moteur de recherche sans restriction et avec des temps de réponses aux alentours de 50ms. La seule contrepartie demandée par algolia est de préciser que la recherche est fournie par eux en dessous des résultats.

Algolia

Très franchement je suis agréablement surprise par cette techno.

Logz.io

Logz

Logz est un agrégateur de log en mode SAS. Comme je n'ai rien de critique dans les logs je me suis permis de les externaliser. On retrouve une bonne vieille stack ELK.

Pour envoyer les logs il m'a suffi d'ajouter leur container docker rsyslog dans ma stack docker-compose. Une fois les bonnes variables d'environnements misent en place les logs remontent chez eux en quasi temps réel.

Au-delà de la simple consultation et recherche dans les logs, ils proposent un outil d'alerting. Il est par exemple possible d'envoyer un mail quand un grand nombre d'exception ou de fatale est remontée.

Coût de la plateforme

Comme le site est encore récent et qu'il ne génére aucuns revenus j'ai fait le maximum pour réduire les coups aux maximium.

Voici un état des lieux des dépenses engendrées par cocktailand.

Fonctionnalité €/mois €/an
Serveur de prod 3,99 47,88
Serveur de backup 1,99 23,88
Nom de domaine 0,70 8,39
Algolia 0 0
Logz 0 0
Cloudflare 0 0
Total 6,68 80,16