Aller au contenu
  1. Mes écrits/

Révolutionner la banque mobile : Développement de PHIRE chez MPower Money avec Python et la métaprogrammation

En 2008-2009, alors que la technologie mobile commençait à transformer diverses industries, j’ai eu l’opportunité de participer à un projet révolutionnaire chez MPower Money à New Delhi, en Inde. En tant qu’ingénieur logiciel, j’ai joué un rôle déterminant dans le développement de PHIRE, le premier réseau de débit mobile au monde qui permettait aux utilisateurs d’effectuer des transactions bancaires par SMS, en exploitant la puissance de Python et des techniques avancées de métaprogrammation.

La vision de MPower #

MPower Money visait à révolutionner l’accès financier en Inde, où une partie importante de la population était non bancarisée ou sous-bancarisée. L’objectif était de créer un système qui permettrait à quiconque possédant un téléphone mobile de base d’effectuer des transactions bancaires, transformant ainsi le SMS en un outil financier.

PHIRE : Une percée dans la banque mobile #

PHIRE (Phone Initiated Remittance Engine) a été conçu pour être une plateforme révolutionnaire dans le monde de la banque mobile. Il permettait aux utilisateurs de :

  1. Vérifier les soldes de compte
  2. Transférer de l’argent à d’autres utilisateurs
  3. Payer des factures
  4. Recharger des crédits mobiles
  5. Recevoir des notifications pour les transactions

Toutes ces fonctions pouvaient être effectuées à l’aide de simples commandes SMS, rendant les services bancaires accessibles à quiconque possédant un téléphone mobile, indépendamment de la connectivité Internet ou de la possession d’un smartphone.

Aperçu technique #

Technologies de base #

  • Python : Le langage de programmation principal pour le développement de l’ensemble de la plateforme
  • Métaprogrammation : Largement utilisée pour créer des structures de code flexibles et dynamiques
  • SQLite : Pour une gestion de base de données légère et sans serveur
  • Intégration de passerelle SMS : Pour gérer les messages SMS entrants et sortants

Principales fonctionnalités développées #

  1. Analyse dynamique des commandes SMS : Utilisation de la métaprogrammation pour créer un système flexible d’interprétation et d’exécution des commandes SMS.

  2. Traitement sécurisé des transactions : Mise en place d’un système sécurisé pour le traitement des transactions financières initiées par SMS, en utilisant les bibliothèques de cryptographie de Python.

  3. Mises à jour des soldes en temps réel : Assurance que les soldes des comptes étaient mis à jour en temps réel après chaque transaction, en exploitant les capacités asynchrones de Python.

  4. Intégration au système bancaire : Développement d’interfaces Python pour se connecter à l’infrastructure bancaire existante.

  5. Système de réponse automatisé : Création d’un système pour envoyer des réponses SMS automatisées pour les confirmations de transactions et les demandes de renseignements sur les comptes, en utilisant les capacités de formatage de chaînes de Python.

Défis techniques et solutions #

Défi : Créer un système de commandes flexible #

Nous avions besoin d’un système qui puisse facilement s’adapter aux nouvelles fonctionnalités et commandes bancaires.

Solution :

  • Mise en place d’un cadre de métaprogrammation étendu en Python, permettant la création et la modification dynamiques des commandes bancaires.
  • Utilisation de décorateurs Python et de métaclasses pour créer une syntaxe déclarative pour définir de nouvelles commandes SMS, facilitant l’ajout de nouvelles fonctionnalités pour les développeurs.

Défi : Assurer la sécurité dans la banque par SMS #

Sécuriser les transactions financières effectuées par SMS était primordial.

Solution :

  • Développement d’un système de chiffrement personnalisé utilisant les bibliothèques de cryptographie de Python.
  • Mise en place d’un système d’authentification à deux facteurs utilisant des mots de passe à usage unique (OTP) générés grâce à la génération de nombres aléatoires sécurisés de Python.
  • Création d’un algorithme de détection de fraude utilisant des bibliothèques d’apprentissage automatique en Python pour identifier et signaler les modèles de transactions suspectes.

Défi : Gérer un volume élevé de transactions SMS #

Le système devait traiter rapidement et avec précision un grand nombre de messages SMS.

Solution :

  • Exploitation de la bibliothèque asyncio de Python pour gérer simultanément plusieurs messages SMS.
  • Mise en place d’un système personnalisé de mise en file d’attente des messages en Python pour gérer efficacement les pics de charge.
  • Utilisation de SQLite avec une indexation optimisée pour un traitement rapide des transactions et un stockage efficace.

Défi : Assurer la fiabilité des transactions #

Compte tenu de la nature parfois peu fiable de la livraison des SMS, assurer la fiabilité des transactions était crucial.

Solution :

  • Développement d’un système robuste de gestion des transactions avec des capacités de retour en arrière en utilisant les gestionnaires de contexte de Python.
  • Mise en place d’un système d’accusé de réception des messages utilisant des coroutines pour confirmer la réception et le traitement de chaque commande SMS.
  • Création d’un processus de réconciliation des transactions utilisant le module de threading de Python pour gérer les cas de pannes réseau ou de messages retardés.

Mise en œuvre et impact #

  1. Développement rapide : La flexibilité de Python et l’utilisation de la métaprogrammation ont permis des itérations rapides et des ajouts de fonctionnalités.

  2. Évolutivité : Le système était capable de gérer des millions de transactions mensuelles, démontrant l’évolutivité de notre architecture basée sur Python.

  3. Inclusion financière : PHIRE a joué un rôle important dans l’apport de services bancaires de base aux populations mal desservies, en particulier dans les zones rurales.

  4. Innovation dans la FinTech : L’utilisation de Python et de la métaprogrammation dans un système financier était pionnière à l’époque, établissant de nouvelles normes dans le développement FinTech.

Conclusion #

Travailler sur PHIRE chez MPower Money a été une expérience transformatrice qui a démontré le potentiel de Python et de la métaprogrammation dans la création de solutions financières innovantes. En exploitant ces technologies, nous avons pu créer un système hautement flexible et évolutif qui a apporté des services bancaires à des millions de personnes qui avaient auparavant un accès limité ou nul aux services bancaires traditionnels.

Ce projet était à l’avant-garde de la révolution de la banque mobile, démontrant qu’avec une utilisation créative de paradigmes de programmation comme la métaprogrammation, il est possible de créer des solutions qui ont un impact profond sur l’inclusion financière et l’accessibilité.

Le succès de PHIRE a souligné l’importance de choisir la bonne pile technologique et les bons paradigmes de programmation lors de la conception de solutions pour des problèmes complexes. Alors que la technologie mobile et les langages de programmation continuent d’évoluer, les principes de flexibilité, de sécurité et de simplicité que nous avons défendus dans PHIRE en utilisant Python et la métaprogrammation restent cruciaux dans le développement de technologies financières inclusives.