Plus de 20 ans d'expérience dans les métiers du web, ça commence à faire n'est ce pas ? :)
Ces dernières années j'ai principalement travaillé sur des projets courts Front End (React / Gatsby) ainsi que sur des projets plus conséquents sur du Back End à très forte montée en charge.
j'ai acquis de très bonnes connaissances sur la conception de plateformes permettant un scaling horizontal et des montées en traffic atteignant plusieurs millions d'utilisateurs quotidiens.
Je passe sur le sérieux, la rigueur et les efforts continus pour que le code / les features soient élégants, bien conçus, testés et pérennes - ce sont des choses qui devraient être "standard"
Pour terminer, je suis un éternel curieux et n'hésite pas à me remettre en question, y compris dans mes domaines de prédilection - tout bouge tellement vite !
Mise en place d'un BackOffice à l'aide de React - intégration depuis Zeppelin / Sketch
Redéfinition de la plateforme existante
Context de départ : un MVP constitué d'une API REST et de deux SDKs mobiles (iOS et ANDROID). L'API est en NodeJS (Express.js) - La base de données est MongoDB.
Step 1 : Appropriation de la base de code et analyse des goulots d'étranglement. Une roadmap est constituée.
Step 2 : Remise à plat complète du projet. Des spécifications concernant une nouvelle version de l'API sont écrite. Ces modifications impactent la totalité de la chaine : L'API, les SDKs : API versionnée, chaque besoin métier est contenu dans son propre namespace et doit être RESTFull. Mise en place de bests pratcices en terme de code et de tests.
Step 3 : Un plan de migration sur 12 mois est établi, en collaboration avec l'équipe SDK. Une update "Big Bang" n'est pas une opttion : il ne doit pas y avoir d'impact avec les clients utilisant la plateforme, une rétrocompatibilité complète est nécessaire.
Step 4 : Mise en place de la nouvelle architecture : MariaDB est uttilisé sur toutes les données relationnelles (comptes clients, configurations, etc), MongoDB sert de Cache pour la gestion des utilisateurs (devices iOS et Android) et ElasticSearch est utilisé pour les données de type Log / TimeSeeries.
Step 5 : Développement incrémental de l'API et des composants core
DevOps / CI
Tests automatisés
Docker everywhere possible
Déploiement de trois clusters ElasticSearch (25 noeuds)
Déploiement de deux clusters KAFKA (3 noeuds haute capacité)
Chiffres clés
Utilisateurs actifs quotidiens passants d'un ordre de magnitude de quelques centaines de milliers à plusieurs millions.* Collecte de donnée par utilisateur passant de quelques dizaines à plusieurs centaines* Scalability horizontale de l'API - Utilisation de KAFKA pour les données en entrée du système / ingestion asynchrone