Du monolithe aux microservices : BMW roule avec AWS
Le constructeur automobile allemand a migré son configurateur de véhicule sur une architecture de microservices entièrement bâtie sur AWS.
BMW fait partie de ces constructeurs automobiles qui proposent à ses futurs clients des configurations à la carte de ses véhicules. Sur le dernier modèle M3, sorti il y a peu des usines de Munich, pas de moins de 7 motorisations différentes sont en effet proposées, sans parler des coloris et autres options esthétiques. A cela s’ajoute une autre problématique : les nombreuses gammes de véhicules commercialisées par le constructeur.
Pour accompagner ses clients à personnaliser son véhicule, le groupe a développé une solution unifiée de configuration qu’il propose tant à ses clients qu’aux revendeurs d’automobiles, partenaires du réseau BMW. Cette plateforme fait partie de la stratégie globale du groupe dite de Digital Customer Engagement.
Historiquement, BMW repose son SI sur une approche monolithique, on-premise, comme il est de tradition dans cette industrie. « Notre monolithe n’était pas mauvais et permettait de développer rapidement », assure d’ailleurs Patrick Lanners, architecte chez BMW. Mais avec l’augmentation du nombre d’options a suivi une hausse des exigences et par conséquent, une progression inévitable de la complexité du système.
L’idée est donc venue d’opter pour une stratégie de découplage, d’opérer un recentrage sur les API et de s’installer dans l’ère des microservices. Le tout opéré dans le cloud public d’AWS. « Cela nous permet de développer plus rapidement et d’accroître la transparence en matière de consommation des API », ajoute-t-il. Il souligne également la capacité à faire travailler plusieurs équipes de façon indépendante.
Une migration vers les microservices et AWS
Ce configurateur unifié puise ses informations dans les backends du groupe. Ces informations (données sur les produits et informations techniques) portent sur les différents véhicules et sur les options. De là, la plateforme segmente les données pour donner des informations sur la faisabilité du modèle configurée par les clients, son prix, calcule les contraintes techniques, par exemple. Autant d’informations qui restent toutes accessibles via des API Restful et partagées par plus de 30 applications. « Des centaines d’appels sont réalisés par mois », témoigne d’ailleurs Patrick Lanners.
Avant la procédure de migration et de transformation de l’existant, BMW a également mené une autre transformation : celle de son IT. Jusqu’alors externalisé, il a été décidé de « prendre le contrôle de l’IT », et de ré-internaliser du moins cette partie de l’informatique.
« Il était important pour nous d’avoir autant de services que possible », lance-t-il. Les API composées pour l’ancien système ont été transformées pour être gérées par la gateway d’API d’AWS. Des interfaces ont été générées et les possibilités d’authentification sont mises en place. La logique métier, motorisée par un serveur d’applications Java (Glassfish), a été dockerisée et placée sur le PaaS d’AWS, Elastic Beanstalk. L’ensemble des jobs d’importations, jusqu’alors définis en PL/SQL, ont quant à eux été re-écrits en Java, placés dans des containers Docker, orchestrés par AWS Elastic Container Service. Enfin, d’une base Oracle, BMW a migré ses services sur la base relationnelle Cloud AWS Relational Database Service, avec un moteur Postgres.
Au final, en optant pour une architecture de microservices et le cloud, BMW s’est également doté de capacités DevOps, résume le responsable. En s’offrant ce niveau de granularité induit par les microservices et l’absence de gestion de l’infrastructure, BMW a accéléré ses développements et son cycle de release. « Aujourd’hui nos ingénieurs font tous du CI/CD ».