Bases de données avec boulettes de viande – Migration d'IKEA du modèle de données plat (pack) vers Postgres open source


(Pixabay)

Avec son célèbre design de magasins Big Blue Boxes présent dans 30 pays à travers le monde, IKEA est l'une des marques les plus reconnaissables au monde pour des millions de clients à la recherche d'aménager leur maison avec des meubles et accessoires tendance. Dans les coulisses, le détaillant suédois a subi sa propre cure de jouvence de modernisation, centrée sur une migration vers la base de données open source Postgres.

Ce changement est dû à des tendances plus larges sur le marché de la vente au détail et à l'évolution des besoins des clients, explique Dinesh Adhikari, responsable de l'infrastructure chez IKEA Retail, en particulier en termes d'augmentation des points de rencontre avec les clients lorsque les gens visitent en ligne via le site Web de l'entreprise ou via l'application IKEA. La popularité des options en ligne augmente la portée de l’entreprise, mais ajoute également à la complexité des demandes sur les systèmes qui sous-tendent les opérations quotidiennes du détaillant. Il se passe déjà beaucoup de choses, dit Adhikari:

Il y a des systèmes de chaîne d'approvisionnement derrière elle, il y a des systèmes financiers derrière, il y a des solutions client et ensuite des solutions de collaboration pour gérer de si grandes opérations. La plupart des informations (opérationnelles) sont stockées dans les bases de données et envoyées à différents systèmes, reçues de différents systèmes, envoyées à des partenaires externes que nous avons dans la chaîne d'approvisionnement et dans d'autres domaines.

La livraison de ces bases de données est quelque chose que l'équipe Infrastructure chez IKEA fournit, ajoute-t-il, alimentant et soutenant l'essor du commerce électronique, par exemple. Mais la gestion du portefeuille de bases de données devenait une tâche plus importante, se souvient-il:

Nous utilisons des bases de données depuis assez longtemps. Nous avons construit différentes versions de bases de données au fil des ans. L'exécution de nos opérations de base de données est un peu une «vieille tâche» que nous faisons au sein de l'entreprise. Depuis qu'un si grand nombre de magasins ont grandi et que les opérations commerciales se sont développées, nous avons vu beaucoup de défis qui se sont produits. Au fil des ans, nous avons créé beaucoup de complexité en ce qui concerne la façon dont nous travaillons avec les bases de données ou ce que nos bases de données peuvent fournir.

Nous avons travaillé avec des bases de données principalement propriétaires dans notre portefeuille, de sorte que chaque fois qu'il y a un besoin pour (un utilisateur) d'accéder à une base de données, nous disons simplement: «  OK, vous allez utiliser cette base de données et cette base de données uniquement '' et cela a fonctionné pour nous jusqu'à présent. Cela a très bien fonctionné, mais nous voyons qu'il y a des lacunes, des lacunes. Nous avons reçu beaucoup de commentaires selon lesquels nos opérations, qui ont fonctionné jusqu'à présent, rencontreront probablement (plus) des défis. Nous ne sommes pas assez rapides, nous n'en faisons pas assez pour répondre à ce qui est exigé de nous (en termes de) comment nous modifions notre paysage applicatif autour de nous.

Le résultat de cette rétroaction a été de lancer une évaluation de la stratégie de la base de données afin de déterminer quels changements pourraient être le plus avantageusement apportés. Adhikari explique:

Ce fut une énorme revue que nous avons faite pour notre paysage. Nous sommes allés à chaque coin de rue, soulevant pratiquement chaque pierre. Nous voulions savoir ce que nous avons, comment nous fonctionnons, avant de prendre une décision en disant: «Voici ce que nous voulons faire». Donc, dans cette revue, nous avons examiné notre base déployée de combien de bases de données avons-nous, où ces bases de données fonctionnent-elles? Fonctionnons-nous dans nos centres de données? Nous avons des magasins où nous avons des solutions qui utilisent des bases de données – quel type de bases de données avons-nous en place (là-bas)? Quelles sont nos politiques? Quel type de processus avons-nous aujourd'hui pour déployer ces bases de données, supprimer ces bases de données, apporter des modifications à ces bases de données? Comment répondent-ils aux besoins que nous avons et où en sont-ils en termes de satisfaction des besoins à l'avenir?

L'examen a également consisté à lever le couvercle sur la vie dans les opérations de base de données et à examiner la charge de travail des équipes DBA en interne chez IKEA:

À quels types de défis font-ils face? Quel genre de catégorisation de tâches ont-ils? Toute cette évaluation consiste à en retirer chaque partie pour les opérations, puis l'ensemble de l'État… Que fait-on réellement à l'intérieur de la base de données? Quels types de logiques arrivent, quels types de codes avons-nous en place? Ensuite, nous avons également fait un peu de cartographie de cela sur nos applications pour voir quel type d'applications nous avons. Mais la partie utilisation principale était davantage (pour obtenir) un aperçu d'un point de vue DBA, d'un point de vue des opérations de base de données, d'un point de vue de la capacité de la base de données. Mais en même temps, nous avons également examiné, de quelles capacités aimables avons-nous besoin? Nous avons donc eu des discussions avec des architectes, nous avons également parlé à certains des propriétaires d'applications. Nous cherchions juste ce qui nous manque? De quoi avons-nous besoin de plus? Comment pouvons-nous améliorer les services ou les applications à utiliser?

Et inévitablement, le dernier élément de l'examen portait sur le coût total de possession:

Il ne s'agit pas seulement de notre coût de licence de base de données ou d'un coût particulier de calcul. Quel est le coût total en termes de coût pour exécuter une base de données? Combien coûte la construction sur une base de données? Combien coûte la gestion du cycle de vie? Ce sont les coûts que nous regardons sous différents aspects pour comprendre notre état dans son ensemble.

Un catalogue de résultats

L'examen complet a duré un peu plus de deux mois et a donné lieu à des résultats intéressants qui pourraient façonner les décisions futures, a déclaré Adhikari:

Il y a beaucoup de faits qui sont ressortis et que nous aurions probablement ignorés si nous continuions à regarder la base de données d'un point de vue holistique. Nous avons découvert que nous avons plus de bases de données de tests de développement que la production réelle. Je ne me souviens pas exactement quel était le ratio, mais c'était un nombre assez élevé par rapport au nombre de bases de données de production. Cela nous dit donc que nous faisons pas mal de tests – et c'est une bonne chose – mais ensuite nous faisons tourner beaucoup d'instances, probablement plus que ce dont nous avons besoin. Nous avons également appris que notre provisionnement est assez lent, soutenu par un processus lourd. C'est là que nous avons beaucoup de transferts entre les différentes équipes, donc le processus d'approvisionnement a été extrêmement lent.

Le désapprovisionnement était encore plus lent:

Il faut beaucoup d'efforts pour mettre en place une base de données, puis il faut beaucoup d'efforts pour retirer la base de données. Et juste en raison de la complexité de l'approvisionnement et du non-approvisionnement, le taux de non-mise en service était assez faible, ce qui signifie que nous provisionnions plus, mais nous n'en supprimions pas assez. Cela ajoute de la complexité à nos opérations, ce qui ajoute au coût total de possession total pour exécuter ces bases de données en place. Pendant la période de temps où ces bases de données se trouvent dans de grands environnements de test, elles commencent à vivre leur propre cycle de vie, de sorte que l'état devient tellement contaminé que même s'il s'agit de bases de données de test et de développement, elles ne peuvent pas être utilisées, car elles doivent être fraîches . Ils doivent être supprimés, ils doivent être recréés à nouveau. C'était une constatation assez intéressante d'un point de vue pratique.

D'autres enseignements ont inclus la conclusion que les opérations de base de données sont un peu un rôle banal:

Les administrateurs de base de données sont essentiellement impliqués dans la création de stockage, ils sont impliqués dans la création de données ou la création d'espaces table, l'extension des espaces table. Ils sont impliqués dans la création de cycles d'actualisation des données, les sauvegardes, la surveillance des travaux de sauvegarde, il est donc devenu une opération assez banale à exécuter. Ce que nous avons également appris, c'est que notre utilisation de calcul est assez faible, donc quelle que soit la capacité de calcul que nous fournissons, nous n'en utilisons pas autant. Donc, nous créons des bases de données, nous créons une infrastructure de calcul, nous allouons du stockage, nous allouons des processeurs et de la mémoire pour sécuriser pas mal de choses, mais nous n'utilisons pas tellement à la fin.

La nature de la technologie de base de données sous-jacente a également soulevé des points inattendus, ajoute-t-il:

Une fois que nous avons regardé à l'intérieur des bases de données, nous avons constaté que bon nombre d'entre elles avaient une structure de données plate. Certaines applications utilisaient simplement les bases de données pour stocker des données dans des tableaux et des colonnes. Il n'y avait pas ou peu (éléments relationnels), donc il y avait très peu de code à l'intérieur. C'était en fait une constatation assez intéressante. Nous n'aurions pas l'habitude d'aller à l'intérieur de la base de données et de regarder ce que nous exécutons à l'intérieur. Nous avons également découvert qu'un grand nombre de bases de données mesurent environ 30 Go, ce que nous appelons de très petite taille. Nous avons de grandes bases de données exécutant plusieurs téraoctets, mais un grand nombre de bases de données sont assez petites.

Planifier une cure de jouvence

Sur la base de toutes ces informations, la prochaine étape d'IKEA consiste à examiner ce qui se passait dans le secteur des bases de données au sens large et comment cela pourrait être mis en correspondance avec les besoins changeants du détaillant:

Ce que nous avons acheté (avant) a fonctionné pour nous, a très bien fonctionné dans le passé, mais maintenant le moment vient où les changements se produisent assez rapidement. Nous avons une augmentation de 46% des ventes via les canaux en ligne. Cela signifie que là où le commerce électronique reprend, nous devons effectuer des changements de déploiement plus rapides, nous devons avoir de meilleures capacités de test en place. Avoir ces longs délais ou avoir une base de données de tests contaminée n'est probablement pas d'une grande aide.

La décision a été prise d'adopter une approche de fourniture de services de base de données, plutôt que de déployer des déploiements standard basés sur des bases de données. Il y avait plusieurs moteurs derrière ce mouvement, explique Adhikari:

Nous voulions consolider nos bases de données. Nous voulons tirer parti de ce que nous fournissons de manière beaucoup plus légère, nous avons donc assez de tout – ni trop, ni trop peu. Et nous voulons également créer fondamentalement une API et des services de plate-forme de base de données, où nous pouvons faire du provisionnement à la volée. Lorsque les utilisateurs peuvent créer des bases de données à la demande, ils devraient pouvoir supprimer ces bases de données ou cloner des bases de données à la demande. Il y a beaucoup d'opérations RH que nous voulons exécuter sur nos bases de données et nous voulons être en mesure d'augmenter à chaque fois que nous en avons besoin ou de réduire si le besoin n'est plus là. Donc, créer des modèles qui créent essentiellement de la flexibilité et de l'agilité dans nos plateformes de bases de données.

Nous voulions également créer des bases de données adaptées. Comme je l'ai déjà dit, nous avons travaillé avec des bases de données propriétaires. Nous avons travaillé avec des bases de données relationnelles au fil des ans, mais compte tenu des faits que nous avions (découverts) lors de l'évaluation, certaines de ces bases de données de niveau entreprise étaient juste utilisées pour stocker des tables et des colonnes. Qu'est-ce que ça dit? Cela dit peut-être que nous n'utilisons pas nos technologies de base de données de la bonne manière? Nous devons donc avoir une meilleure offre de base de données où elle répond essentiellement à ce besoin et il y a un équilibre entre le coût et les performances dont nous avons besoin, la disponibilité et l'évolutivité dont nous avons besoin.

L'automatisation et la réduction des coûts ont également été des facteurs essentiels dans la nouvelle réflexion:

Nous voulions également créer une plate-forme de base de données avec des opérations efficaces, ce qui signifie que (nous pouvons créer) des tâches, créer des automatisations, créer un environnement où les choses peuvent se produire grâce à l'apprentissage automatique, en créant des capacités qui déclenchent certaines réponses et corrigent ces tâches banales de beaucoup meilleure façon. Nous avons également examiné les nouvelles (capacités dont nous avons besoin). Comment mieux gérer les interruptions? Comment devrions-nous mieux gérer les applications de données? Comment devrions-nous travailler avec nos données de test? Comment devrions-nous sauvegarder? Comment devrions-nous récupérer? Comment pouvons-nous travailler avec ces nouvelles capacités dans ce résultat cible? Et bien sûr, c'est la réduction du TCO. Si nous sommes en mesure de mettre en place un grand nombre d'automatisations, comment cela affecte-t-il notre TCO? Nous voulons réduire le coût total de possession si nous n'utilisons pas autant (comme quand) nos bases de données propriétaires de niveau entreprise.

Entrez Postgres

Les conversations avec les architectes d'infrastructure sur la façon de transformer ces besoins en réalité ont inclus un débat sur la sélection d'une solution de fournisseur de base de données relationnelle, se souvient Adhikari, mais l'attention s'est déplacée vers Postgres:

Dans la discussion, nous avons essentiellement parlé de certains noms de base de données et pourquoi devrions-nous les choisir, où devrions-nous aller? Mais à la fin, nous avons essentiellement dit: «Ayons une activité de test et d'apprentissage autour de Postgres; Qu'est-ce que Postgres peut faire pour nous, qu'est-ce que Postgres? – creusons-y ». Nous avons donc passé quelques semaines à découvrir Postgres. Nous avons essentiellement installé Postgres. Nous avons créé des cas d'utilisation et nous avons testé Postgres autour de ces cas d'utilisation, puis nous avons eu pas mal d'activité autour de cela afin que l'équipe technique qui l'a travaillé a vu que c'était un très bon produit, quelque chose que nous pouvons utiliser et que nous pouvons utiliser ici et maintenant.

Il y avait un certain nombre de raisons clés pour arriver à cette conclusion, dit-il:

Il s'agit essentiellement d'une base de données relationnelle open source. Du point de vue de l'expérience, (c'était) la simplicité du produit. Il y a beaucoup de confiance dans notre équipe d'applications et notre équipe technique pour commencer à utiliser Postgres. Un des commentaires que j'ai reçus de mes collègues est que la communauté (Postgres) est forte. Il y a beaucoup de contribution de (la communauté), il y a beaucoup de développement et beaucoup de partage de connaissances qui se produisent autour de la communauté. La communauté était donc une autre raison pour laquelle nous nous dirigions vers Postgres. Il a également une architecture qui répond essentiellement à nos besoins d'évolutivité – Comment pouvons-nous créer des clusters? Comment créer des environnements hautement disponibles, des environnements hautement évolutifs? Comment nous réalisons les applications critiques que nous pouvons intégrer à Postgres? – pour que l'architecture elle-même et toutes les extensions ou frameworks fournis avec Postgres soient définitivement un gros plus.

Mais malgré les aspects de simplicité attrayants du produit, Postgres allait devoir subir ce que Adhikari appelle «la mise à l'échelle au niveau de l'entreprise» et cela nécessitait des besoins de support supplémentaires:

Nous avions essentiellement besoin de quelques capacités en place. Comment pouvons-nous créer cette infrastructure? Comment pouvons-nous le surveiller? Comment pouvons-nous exécuter des opérations derrière cela? Et comment pouvons-nous sécuriser les données que nous apportons sur cette plateforme? Lorsque nous avons commencé ce voyage, nous avions une certaine expérience. Nous avons testé et appris, mais nous n'avions pas toutes les capacités pour créer Postgres en tant que service d'entreprise, ce que nous pouvons utiliser au sein d'Ikea ​​Retail. Alors, nous avons contacté (fournisseur de services) EDB (anciennement EnterpriseDB), et c'est là que nous avons obtenu un bon soutien en termes de création de Postgres en tant que service à l'échelle de l'entreprise. Nous avons eu pas mal de discussions avec eux sur la façon dont nous avons pu utiliser les différents outils fournis par EDB pour nous aider à créer un service de base de données Postgres.

IKEA utilise désormais l'une des éditions de la communauté Postgres et dispose également d'un serveur avancé Enterprise Postgres. À ce jour, la migration a été réussie, mais il reste encore beaucoup à faire, dit Adhikari:

C'est essentiellement un voyage. C'est quelque chose que nous continuons… .Postgres est certainement un plus et un ajout, mais notre voyage ne s'arrête pas là. Nous sommes maintenant engagés dans de nombreuses initiatives pour voir comment nous pouvons créer un meilleur service à utiliser pour IKEA. Je pense que cela va prendre un certain temps avant d'y arriver, mais nous sommes définitivement sur la bonne voie.



Source link

Un site commerce électronique permet de se lancer à moindres frais chez rapport aux entreprises classiques. De plus, vous avez la possibilité vous lancer autrement rapidement. La maîtrise d’un emploi commerce électronique ne demande pas de présence physique à un endroit précis, sauf peut-être quant à stockage et la préparation des commandes que vous avez la possibilité tout à fait externaliser, mais aussi mieux si vous ne possédez pas de accumulation (on en parlera plus tard dans l’article).