Pumpkin est une application mobile née en 2014 dans l’optique de simplifier les échanges d’argent entre particuliers. Elle comprend également un service de billetterie dédié aux associations. Avec sa base utilisateurs qui double tous les 6 mois et ses 3 millions de transactions effectuées depuis la création, Pumpkin avait besoin d’une infrastructure et de services souples, capables de s’adapter à sa croissance.

« Au départ, nous avions besoin de redimensionner des instances à la volée pour s’adapter au nombre d’utilisateurs. Nous étions incubés chez EuraTechnologies, qui bénéficiait du programme AWS Activate pour les start-up. Dans ce cadre, nous avons disposé de crédits qui nous ont permis de tester Amazon Web Services (AWS). Nous avons tout de suite été séduits par la qualité et la multiplicité des services proposés. Nous continuons depuis à construire notre infrastructure sur le cloud AWS. »

  • Disposer d’une infrastructure simple et rapide à déployer
  • Se concentrer sur son cœur de métier plutôt que sur la maintenance du serveur
  • Maîtriser les coûts

« Très vite, nous avons eu nos premiers utilisateurs et nous avons dû passer d’un à plusieurs serveurs pour supporter la demande, rappelle Victor Lennel. Afin d’anticiper notre croissance, nous nous sommes logiquement intéressés aux technologies de répartition de charge (load balancing) et nous avons mis en place l’outil Elastic Load Balancing avec un autoscalling group qui permet d’adapter le nombre de serveurs en fonction de la demande. » Un besoin d’autant plus critique que depuis son lancement, Pumpkin double sa base utilisateurs tous les 6 mois et atteint aujourd’hui les 400 000 utilisateurs actifs.

Face au bon démarrage de l’application (40 à 50 connexions simultanées atteintes en un an), Pumpkin a rapidement développé de nouvelles fonctionnalités, dont Pumpkin Event, une solution de billetterie pour les associations qui peuvent vendre des billets pour leurs évènements, gérer les fonds qui y sont liés ou envoyer de l’argent. « Malheureusement, nous avons rencontré une problématique au niveau du code, car nous avions développé très vite pour voir le potentiel marché de Pumpkin, précise Victor Lennel. Comme il n’était plus maintenable, nous avons choisi de le redévelopper il y a un an et demi et nous en avons profité aussi pour revoir toute notre infrastructure. »

Face à la difficulté à maintenir ses serveurs métier, Pumpkin a alors choisi de s’appuyer sur Docker avec l'orchestrateur d'Amazon ECS. « Avec Docker et son fonctionnement en conteneurs, il est aussi très simple pour un développeur de déployer un nouveau serveur ou même un nouvel environnement, note Victor Lennel. Nous pouvons désormais nous concentrer sur notre cœur de métier. Dès qu'il y a un changement à faire en développement, nous savons qu’il sera répercuté partout, en production et pré-production. »

Autre atout de Docker : une meilleure gestion du coût et de la disponibilité des ressources pour Pumpkin Event. « Nous disposons de deux infrastructures, l’une P2P et l’autre B2B dédiée à Pumpkin Event. Lorsque les serveurs destinés à Event n’étaient pas utilisés, c’était bien sûr des ressources gaspillées, que nous ne pouvions pas exploiter pour le P2P. Et réciproquement. », précise Victor Lennel. Sur une même machine, Pumpkin a pu disposer des deux services, isolés grâce à Docker. « Ce mode de fonctionnement représente bien sûr un gain financier puisque moins de serveurs sont nécessaires pour faire tourner les services. Au total, nous avons réussi à diminuer de 15 % nos coûts par rapport à nos débuts, grâce à notre bascule vers Docker estime le CTO. Nous avons encore des chantiers en cours, l‘objectif est à terme d’atteindre les 20 % d’économie. »

Docker permet enfin de réduire le nombre de bugs grâce à la rapidité du déploiement. « Nous n’hésitons plus à déployer nos mises à jour dès que nécessaire, même plusieurs fois par jour. C’est un réel changement : dès qu’un bug est détecté, nous pouvons lancer le correctif en production une heure après, sans avoir à grouper tous les bugs comme avec notre ancienne infrastructure ». Autre petit plus de Docker et ECS, la possibilité de déployer petit à petit, pour ne jamais dégrader le service. « Avant, nous déployions en même temps sur tous les serveurs. Là, nous le faisons proportionnellement à ce dont nous avons besoin », conclut Victor Lennel.

Dès le lancement de la version deux de l’application il y a 6 mois, l’équipe de Pumpkin a vu une différence. « Avec les outils qu’AWS nous fournit, mettre à jour notre Docker dès qu’il y a un push sur le code est très facile. Nous en avons profité pour mettre en place l’intégration continue, gérée via Jenkins dans un premier temps pour recetter plus rapidement et éviter les déploiements manuels source d’erreur. On peut vite oublier de faire une manipulation ! »

La base de données de la première version de Pumpkin utilisait Mongo DB. « Nous l’utilisions beaucoup pour du relationnel, ce qui était dommage car il n’est pas optimisé pour, ce qui occasionnait une perte de performances. Lorsque nous avons vu qu'Amazon RDS avec PostgreSQL était disponible, nous avons décidé de repasser sur du SQL pur et nous nous sommes tournés vers PostgreSQL. Nous avons diminué le temps de requêtes SQL de 20 % avec Amazon Aurora Post SQL pour un coût diminué estimé à 30 % environ. »

Pumpkin a aussi gagné en rapidité et efficacité sur les requêtes effectuées. «Nous avons revu notre système d’asynchrone, par exemple, pour toutes les tâches qui peuvent être effectuées dès qu’un service est appelé, et nous avons mis en place un système de worker en utilisant Apache Kafka. Comme c’est assez complexe à maintenir, nous allons utiliser Amazon SQS et Amazon Kinesis, à partir de 2018, car ils permettent de gérer ces demandes en services managés », détaille Victor Lennel. Cinq minutes étaient à l’époque nécessaires au lancement d’une instance, sans compter le temps de déployer l’application. « Maintenant, comme les instances sont déjà lancées et qu’on a juste à lancer les nouvelles tâches, 1 min suffit. C'est un vrai gain de temps pour s'adapter aux montées en charge sur l'application ! »

À la clé, une réduction des coûts, puisque l’équipe peut faire monter l'application en charge rapidement en cas de périodes de hausse de trafic, améliorant ainsi ses performances. « Lorsqu’une association met en vente un nombre réduit de tickets et qu’il y a 10 fois plus de demandes, nous avons un énorme pic de charge, le trafic peut doubler ou tripler par rapport à une journée classique. Pouvoir gérer la montée en charge de l’application permet de diminuer l’impact de ces hausses pour que l’utilisateur ne se rende compte de rien. »

Pumpkin monitore par ailleurs ses API avec Amazon CloudWatch, véritable gain de sérénité pour l’entreprise. « Nous sommes alertés en cas de bug ou d’erreur 500, ce qui nous permet de tout de suite répondre au problème et de diminuer les temps de panne, explique Victor Lennel. Offrir un service de qualité à tout moment à nos clients, voilà tout l’enjeu pour nous. Les outils AWS que nous utilisons répondent parfaitement à cette problématique, c’est une vraie satisfaction. »