🔎 Loupe : imgfly.me
Découvrez pourquoi et comment j'ai mis en place un hébergeur d'image ainsi que toutes les petites galères rencontrées !
Pour le premier billet de cette série, je vais vous parler du service que je fais tourner depuis maintenant quelques années !
Je vais vous raconter sa création, son évolution et la petite infrastructure qu'il y a derrière. Préparez-vous, c'est parti 🛳
Les prémices
Nous voici en 2013 lorsque née l'idée de proposer un petit service d'hébergement d'image à des amis avec qui je partage un serveur TeamSpeak.
Je m'intéressais déjà au développement à l'époque, mais je n'avais pas les capacités de mettre en place un système complet au point pour assurer un service avec un minimum de qualité.
En parcourant alors les résultats Google, à la recherche d'un petit CMS qui saurait faire ça mieux que moi, je tombe sur Chevereto.
Chevereto propose 2 types de licence :
- une gratuite qui permet simplement aux visiteurs de mettre en ligne des images et d'avoir un compte d'administration pour gérer les images envoyées
- une payante obtenu à vie qui permet alors de bénéficier de fonctionnalités comme la création de comptes utilisateurs, la possibilité de trier les images par albums et plus encore.
Je décide alors de commencer par la version gratuite afin de pouvoir tester le système, pouvoir voir le fonctionnement et tester différentes installations sur différents types de serveurs. À ce moment là, Chevereto est encore en v2.
Tout fonctionne très bien sur différents serveurs (mutualisés et VPS) avec une stack LAMP en PHP5. C'est parti pour la mise en ligne !
1ère vie
Imgfly.me est d'abord né sous le nom de PicsUP.fr, contraction de pictures & upload. Le site va rester en ligne pendant 2 ans de mis 2013 à mi 2015. Il était principalement utilisé à titre personnel et par quelques amis dans le cadre de partage de screen, d'images ou de memes entre nous et comptait quelques milliers d'images. Mais durant cette période, les évolutions continuent sur le système et les mises à jour s'enchaînent jusqu'à l'arrivée de la nouvelle version 3.0 ✨
Étant satisfait du fonctionnement, je me décide à prendre une licence (env. 30€) et passer la version 2.x en 3.x. Direction la documentation, j'effectue les différentes étapes et là…
💥BOUM.
Tout est cassé… Retour en arrière, nouvelle tentative, toujours pas… Tant pis pour cette fois, je restaure le site dans la version qui fonctionne avec les bonnes données et je le laisse ainsi tourner.
Mais je ne m'avoue pas vaincu pour autant et je décide d'installer à côté la nouvelle version et cette fois tout fonctionne parfaitement, je peux procéder à mes tests qui se révèlent très positifs, car beaucoup de nouvelles possibilité comme décris plus haut.
Il est donc tant de faire un choix, retenter une migration de la v2 vers la v3 ou arrêter complètement la v2 pour passer à la v3 et enfin garder la v2 et la v3 en cohabitation quelque temps. C'est cette dernière option que j'ai retenu, mais j'ai poussé la chose un peu plus loin. 😊
Renaissance
Après ma décision de faire cohabiter les 2 versions, j'ai décidé que la v3 deviendrait en fait indépendante. Il m'a donc fallu trouver un nouveau nom, un nouveau logo et un nouveau nom de domaine : Imgfly.me
Je souhaitais un nom court (6 caractères), disponible (pas facile 😅) et avec une "symbolique" à savoir l'image (img) qui vole (fly) vers moi (.me) ou alors l'image qui s'envole vers ce fameux "cloud" (d'où le logo en forme de nuage) qui va se charger de la stocker.
J'ai donc commencé à faire des essais de logo pour en retenir 2 au final :
J'ai pendant un temps utilisé celui de gauche, mais finalement la texture n'était pas ou peu visible lorsque le logo était dans des formats plus petits comme sur le site dans le header, je me suis donc rabattu sur celui de droite, les ouvertures le rendant plus sympathique de mon point de vue et cela fait donc maintenant depuis 2016 qu'il est en place et qu'il me satisfait pleinement 😎
Il était donc temps de mettre le site en ligne et Imgfly.me vit le jour le dimanche 2 août 2015 sous un beau soleil estival !
Infrastructure
Passons maintenant à la partie la plus intéressante, l'infrastructure qui tourne derrière le site.
Depuis le début, j'ai décidé de séparer l'hébergement du site de celui des images. Je voulais pouvoir facilement faire grossir la partie stockage pur et garder la partie site la plus light possible.
Mon premier choix à l'époque a été d'utiliser une solution très connue et très performante, AWS S3 dans le datacenter irlandais. L'API S3 est très facile d'usage, le service est rapide et ne m'a jamais posé de problème… Jusqu'au jour ou d'autres personnes que mes amis et moi ont commencés à utiliser le service. Je voyais le coût d'usage drastiquement augmenter de mois en mois et j'ai donc décidé de trouver un autre fournisseur de stockage compatible S3.
Je me suis alors tourné tout naturellement vers notre leader français de l'hébergement, OVH ! Les promesses sont belles, c'est français (cocorico), c'est redondé sur plusieurs sites et le tarif est nettement inférieur à AWS alors que demander de mieux ? Je mets le site en maintenance, créé le bucket, migre les images vers celui-ci, configure le site, effectue 2 - 3 tests et c'est parti, je peux remettre le site en ligne !
Tout fonctionne relativement bien pendant plusieurs jours, jusqu'au moment où lorsque je dois envoyer plusieurs dizaines d'images. Le temps d'upload/traitement est facilement 3x plus long qu'avec S3... Je mène mes petites recherches, duplique mon installation sur un autre serveur pour effectuer des tests, mais rien n'y fais, c'est lent.
Chevereto possède une communauté assez active et avec des utilisateurs possédant de très très gros sites donc je me décide à poser une question sur le forum technique et le créateur me confirme que pour lui la solution OVH et son API est beaucoup plus lente que celle d'Amazon. Pas le choix donc il me faut trouver une autre alternative, mais j'aimerais rester dans une entreprise française pour mon stockage. Mais finalement pas besoin de chercher très loin, les utilisateurs me conseillant de me tourner vers la solution SFTP avec la location d'un serveur dédié qui pourra accueillir un bon nombre de données et me coûtera beaucoup moins cher dans le temps.
En avant pour les recherches et c'est finalement chez Scaleway (anciennement Online.net) que j'ai trouvé mon bonheur avec un Start-2-S-SATA équipé d'un petit processeur, mais d'1 To de disque et une connexion 1Gbit/s, exactement ce dont j'ai besoin.
Installation de Nginx, du certificat TLS, migration des images, configuration du site et c'est reparti ! Tout fonctionne à merveille, les uploads sont rapides comme avec S3, je n'ai plus aucun problème avec le stockage et j'ai un coût fixe tous les mois peu importe la bande passante utilisée. Et pour le backup, c'est toujours chez Scaleway que ça se passe, avec une synchronisation régulière vers leur offre Object Storage + une copie des données sous forme d'archive sur mon NAS à la maison.
Et maintenant ?
Pour ceux qui se le demandent, le site web a lui aussi beaucoup voyagé ✈Il a fait plusieurs VPS chez plusieurs fournisseurs (Ramnode, OVH, Scaleway, Pulseheberg) pour finalement atterrir dans le sud de la France à Clermont-Ferrand chez o2switch !
Voilà pour la petite histoire et toutes les péripéties !
A bientôt pour de nouvelles aventures 😉