Migration du portail client d'un fournisseur d'énergie régional

MacBook affichant le menu du portail client LEW montrant les différentes fonctions.

Faits clés

Contexte

Dans le cadre d'une collaboration interfonctionnelle entre le service commercial, le service clientèle, le développement SAP et le développement web, les processus des clients finaux doivent être optimisés et numérisés dans le cadre d'un projet. Pour cela, il fallait d'abord créer une base technique. Ce n'est qu'ensuite qu'il sera possible de mettre en œuvre facilement les futures mesures.

Situation avant

Les clients peuvent déjà accéder numériquement à leurs contrats et factures via une application web séparée. En outre, ils ont la possibilité d'effectuer certaines fonctions, comme la modification des données bancaires. Malheureusement, le lien direct avec le système SAP a pour conséquence que le portail client n'est plus accessible en cas de travaux de maintenance en arrière-plan. De plus, le fournisseur d'identité actuel est peu flexible et n'est plus à la pointe de la technologie. C'est pourquoi il doit être remplacé. L'application séparée fonctionne en outre sur un autre serveur et doit être gérée séparément, ce qui augmente les coûts de maintenance. Un point central qui posait de gros problèmes avec la solution précédente est le relevé des compteurs de tous les clients entre Noël et le Nouvel An. Cela entraîne une charge de travail considérable pour l'application web et les systèmes impliqués.

Objectif

Les objectifs suivants ont été identifiés :

  • Planification d'une architecture logicielle qui prend en compte les exigences non fonctionnelles telles qu'une plus grande résilience, une tolérance aux pannes et une évolutivité
  • Développement d'une base technique permettant une extensibilité flexible
  • Réduction du volume des appels téléphoniques au service clientèle
  • Augmentation du taux d'utilisation en ligne
  • Migration progressive, de sorte qu'il n'y ait pas d'interruption des opérations en cours
  • Réduction des frais d'entretien

Mise en œuvre

Les objectifs fixés ont entraîné une série de défis et de questions. Afin de pouvoir garantir une migration en douceur, il fallait tout d'abord clarifier la manière de procéder avec les clients. La reprise des comptes de l'ancien fournisseur d'identité n'a pas pu être effectuée facilement, car les mots de passe ne peuvent pas être transférés. Ce problème a pu être résolu grâce à un processus de migration et au transfert des éléments transférables des comptes utilisateurs.

Très tôt dans le projet, il était clair que le portail client devait être intégré dans l'environnement logiciel du site web afin de réduire drastiquement les frais de maintenance. Pour ce faire, il fallait réimplémenter les composants correspondants dans cet environnement - aussi bien dans le frontend que dans le backend. De plus, le code source doit être propre et testé. Cela permet de réduire l'apparition de bugs et de garantir la maintenabilité future.

Un autre aspect important était la gestion des pics de charge. Pour mieux les gérer, des processus de communication asynchrone ont été mis en place, avec l'utilisation d'un bus de services. Un avantage supplémentaire est la dissolution de la dépendance directe entre le système web et le système SAP. En cas de travaux de maintenance, l'application web peut continuer à travailler avec les données déjà récupérées et stockées temporairement dans le système SAP, tout en offrant à l'utilisateur la fonctionnalité souhaitée. Les messages qui n'ont pas pu être délivrés en raison d'une interruption de la communication entre les deux environnements sont conservés et délivrés dès que la communication est à nouveau possible. Afin de gérer au mieux l'utilisation de l'environnement web, une approche de microservices a été mise en place dans le backend, ce qui permet une mise à l'échelle individuelle des différents services. Les ressources disponibles sont ainsi exploitées de manière optimale.

Afin de pouvoir mettre rapidement la nouvelle solution à la disposition des clients, il a été décidé de procéder de manière itérative et agile lors de la mise en œuvre. Dans un premier temps, les clients doivent pouvoir accéder au nouveau site via le nouveau log-in, mais pour les fonctions qui n'ont pas encore été transférées, ils sont redirigés vers l'emplacement correspondant dans l'ancien système avec un lien correspondant. Cela a eu l'avantage de pouvoir constater très tôt dans le développement à quel point les processus d'authentification et de migration vers le fournisseur d'identité se déroulaient bien. Il en a résulté un Minimum Viable Product (MVP) qui a été mis à la disposition du cercle des clients finaux en tant que tel, afin d'impliquer les clients très tôt dans le développement.

Dans le cadre de la migration, le système de mailing "Mailjet" a également été connecté afin d'assurer la traçabilité de l'envoi des e-mails et de réduire la catégorisation erronée des spams. Effet secondaire formidable : les départements spécialisés peuvent créer et éditer des modèles d'e-mails rapidement, de manière flexible et sans l'aide de développeurs.

L'introduction d'un nouveau programme et d'un nouveau fournisseur d'identité peut entraîner des risques de sécurité. Pour vérifier le logiciel, un test d'intrusion a été effectué avant le déploiement et les constatations énumérées ont été corrigées.

Ma contribution

En tant que développeur de logiciels dans le département du développement web, j'ai participé activement à la conception et au développement. Cela comprend la planification et la définition de l'architecture du logiciel, l'implémentation de la logique commerciale dans le backend et, en raison de mes origines SAP, la connexion des fonctionnalités SAP. Pour moi, il était surtout important que les données et les fonctions puissent être appelées indépendamment de la disponibilité du système ERP. J'y suis parvenu en utilisant, entre autres, la mise en cache et un système de messagerie.

Avec un tel système, il est important de garantir l'exactitude des données. C'est pourquoi j'ai défini des règles de validation précises en concertation avec mes collègues SAP. Celles-ci sont forcées par le Domain-Driven-Design utilisé de telle sorte qu'il ne peut pas y avoir d'objet qui se trouve dans un état non valable.

Pour qu'au final l'interaction se passe bien, j'ai eu des échanges étroits et pluridisciplinaires avec mes collègues du développement SAP, du service clientèle et du service commercial. Cela m'a permis, entre autres, de veiller à une connexion rapide et sans problème des fonctions SAP et de réagir rapidement et avec flexibilité en cas d'erreur. Pour améliorer la communication avec les autres services, j'ai visualisé les processus techniques à l'aide de diagrammes.

S'il y avait des goulots d'étranglement dans le frontend, j'ai aidé à développer les composants React et la logique.

Technologies utilisées

Une multitude de technologies ont été utilisées pour la mise en œuvre de l'application. Le développement du backend a été réalisé en C# et .NET Core, tandis que le front-end a été principalement développé en React avec TypeScript. Pour le développement des interfaces REST et gRPC, j'ai utilisé le framework ASP.NET (Web API). Pour la représentation des processus asynchrones, j'ai utilisé NServiceBus, qui garantit la livraison des messages même en cas d'erreur. Pour le stockage des données, j'ai utilisé le cluster Microsoft SQL Server déjà existant. Pour le développement, j'ai eu recours à Entity Framework.

La gestion des utilisateurs a été résolue par Azure AD B2C en combinaison avec OAuth, ce qui a permis d'utiliser pour la première fois une solution gérée et facilement configurable. D'autres métriques et logs logiciels ont été collectés avec Application Insights. Les mises à jour en temps réel pour informer l'utilisateur ou actualiser le front-end ont été réalisées via SignalR et Azure Functions.

Avantages pour le client

Grâce à la mise en œuvre de la migration, de nouvelles fonctions peuvent désormais être facilement ajoutées. La meilleure évolutivité permet au service commercial d'attirer davantage de clients sur le portail sans avoir à se soucier des pertes de performance. Les relevés de compteurs s'effectuent en ligne de manière fiable et réduisent le volume des appels téléphoniques au service clientèle. L'utilisation des services en ligne a pu être augmentée de 55 % grâce à la migration et la disponibilité a même dépassé 95 %. L'évolution des utilisateurs du portail client a même dépassé les prévisions du client.

Vous avez un problème similaire, que vous souhaitez faire résoudre par un ingénieur expérimenté ? N'hésitez pas à me contacter.