Aux sources de FoundationDB feat @bigdatahebdo

Durée: None

Date de sortie: 15/11/2024

Voir sur Youtube Animé par Horacio Gonzalez - @LostInBrittany et Vincent Heuschling - @vhe74 de BigData Hebdo avec la participation de : Jérôme Mainaud - @jxerome Pierre Zemb - @PierreZ Steven Le Roux - @GwinizD Épisode enregistré le 30 octobre 2024 Chapitrage et liens 03:00 - Le MACI pour le public du BigData Hebdo 05:10 - Le BigData Hebdo pour le public du MACI 07:15 - FoundationDB dans des épisodes précédentes de BigData Hebdo BigData Hebdo 93 - FoundationDB : https://bigdatahebdo.com/podcast/episode-93-foundation-db/ BigData Hebdo 160 - Live à DevoxxFR : https://bigdatahebdo.com/podcast/episode-160-bigdatahebdo-live-a-devoxxfr/ 08:50 - Avant FoundationDB chez Clever Cloud : HBase Apache HBase : https://hbase.apache.org/ 12:45 - FoundationDB, un heureux accident industriel FoundationDB : https://www.foundationdb.org/ 17:00 - FoundationDB : métabase de données, boîte à outils robuste et résiliente 30:00 - Construire sur FoundationDB Rust binding for FoundationDB : https://github.com/foundationdb-rs/foundationdb-rs 44:40 - Simulation dans FoundationDB

Bonjour à toutes, bonjour à tous, bienvenue dans un nouvel épisode du Big Data Hebdo,
mais pas que, puisque aujourd'hui c'est le Big Data Hebdo plus Macie.
On a décidé de faire un épisode ensemble avec les copains de Clever Cloud et donc ce que je
vous propose c'est de démarrer par un rapide tour de table puisque évidemment nos auditeurs
du Big Data Hebdo nous connaissent, mais vous ne connaissez peut-être pas nos amis de Clever
Cloud. Allez c'est à vous messieurs, présentez-vous.
Bonjour tout le monde, moi c'est Steven, Laureau, Gwynis Dues sur Twitter et je suis
directeur technique chez Clever, je m'occupe de l'équipe d'ingénierie et je passe la
main à Pierre du coup. Yes, bonjour à tous, moi c'est Pierre, je travaille avec Clever sur
tout ce qui est matériat, système distribué et on va parler beaucoup de fondations d'EB
pendant cet épisode. Jérôme ? Bonjour, moi c'est Jérôme, je travaille chez Actian sur Zinéa
Data Catalog Connecté et je suis responsable du service professionnel en gros de faire des
claquettes pour que ça se passe bien chez les clients. Ah très bien donc tu as encore élargi un
petit peu le scope de ce que tu faisais puisque la dernière fois quand c'était parlé tu
faisais, tu étais toujours sur la connectivité sur le développement ? Non ça fait une pause
en spécifique. Avant les vacances que ça a changé mais effectivement il y a de plus en plus de
travail sur le sujet. Et pour ma part Vincent Hichling, je suis parmi plein d'autres choses
que je fais mais j'accompagne mes clients pour concevoir et mieux utiliser la data
et il y a pour améliorer leur business et donc tout ça m'amène à faire de belles aventures auprès
de technologies diverses et variées et c'est pour ça qu'aujourd'hui on a décidé de faire
cet épisode qui va nous permettre de parler de quelque chose dont peut-être peu de monde a
entendu parler qui est fondation d'EB et surtout on va pouvoir voir un petit peu comment chez
Cleverclod, ils les ont dompté la bête et ils en ont fait un service qui leur permet de délivrer
des choses très très passionnantes. Et avant d'aller plus loin je pense que ça pourrait être cool de
présenter les Macis à l'audience de Big Data Hebdo et les Big Data Hebdo à l'audience de Macis. Donc si ça vous
dit on peut commencer. Qu'est ce que c'est les Macis Esteven ? Tu peux nous raconter qu'est ce que c'est les Macis
comment ça démarrer et qu'est ce qu'on raconte ? Ouais j'aurais dû préparer une réponse du coup.
Non c'est très simple. On est partie du principe qu'on a des métiers
d'ingénierie mais du coup ce sont des métiers aussi techniques et que pour être pertinent dans ton
métier tu dois faire de la veille. Ça te fait partie du métier, on ne fait pas partie de cette structure
où tu travailles dans ce qu'on te demande et puis tu fais ta veille en mode on ne veut pas que ça
ne se voie pas dans la journée. Non en fait nous on considère que la veille fait partie du métier et donc
on donne du temps aux gens pour s'améliorer, pour expérimenter, pour progresser. Puis on s'est dit
qu'on avait des canaux de partage en interne, on s'est dit qu'en fait à un moment donné est ce
vie critique ou de faire un peu le Rex de le retour d'expérience de certaines technos,
certains usages etc. Et en fait de là est venu l'idée de le partager en vidéo. Alors en interne
on a un format tech talk dans lequel on partage déjà du contenu ou des fonctionnalités, des choses
qu'on développe, des techniques etc. Et puis du coup est né le message à caractère informatique
puisqu'on s'est dit qu'il t'a le faire pourquoi ne pas le partager et voilà la naissance de
Macie. Excellent et pour que nos auditeurs comprennent puisque nous on est centriques sur la data,
vous c'est beaucoup plus vaste les sujets que vous abordez dans Macie puisque vous parlez parfois
de kernel, vous parlez parfois de réseau, vous parlez parfois de trucs très très différents
finalement. On parle même de fois de home automation, électronique parce que il n'y a pas de
caractéristique, on a des ambités différents, on a des liens en interne de chèque l'air et des
ambités externes et souvent les sujets varient à fur et à mesure des enterrés et des envies de
personnes qui sont là. Donc c'est assez eclectique en effet. Et Vincent tu peux nous présenter Big Data
Hebdo ? Bien sûr, Big Data Hebdo, alors déjà le Hebdo est souvent usurpé parce qu'il arrive
qu'on arrive à faire un épisode hebdomanaire mais c'est quand même assez rare. Big Data
mensuel ça faisait pas super donc on a dit hebdo finalement puisque vous voulez faire un média.
Et donc comment est ce que c'est né ? Tout ça c'était dans la grande époque des ado,
plusieurs groupes et autres paris data geek, les plus vieux d'entre nous vont se reconnaître là
dedans. On était en train de boire une bière à la fin de tout ça et j'étais avec Benjamin Guinebertier
qui est le co-fondateur du BDH et on s'est dit mais il n'y a pas de podcast francophone sur la data.
Et puis là nous aussi on fait beaucoup de veille pendant notre quotidien et si on partageait ça.
Et donc l'idée c'était de dire sur toute une communauté de gens, est-ce qu'on peut partager
notre veille et est-ce qu'on peut contribuer à aider les gens à progresser autour de la data.
On ne parlait pas encore d'IA à l'époque, on parlait un petit peu de machine learning à cette
époque là et au final ce qui s'est passé c'est qu'en plus ça a été beaucoup plus loin puisque
on a décidé de constituer la communauté avec derrière un Slack qui est le Slack du Big Data
Hebdo sur lequel tout le monde peut venir. Il n'y a pas de filtre à l'entrée ou quoi que ce soit.
La seule condition qu'on donne aux gens c'est de venir avec un bon esprit et essayer de partager
des choses que vous vous rencontrez pour que ça puisse être profitable pour tout le monde. Et donc
on a un Slack qui nous permet de nourrir un petit peu la veille et de mettre en commun cette veille
comme vous vous le faites en interne mais nous c'est plus en externe pour une communauté un peu plus large.
On met toujours des liens, ça sera bien entendu là parce que nos auditeurs puissent aller faire un truc.
Avec plaisir.
Venons-en un peu au sujet qui nous réunit aujourd'hui en dehors de vouloir passer un bon moment ce qui est
assurément réussi. On a parlé de FoundationDB précédemment dans le Big Data Hebdo. Vous êtes
venu Pierre et Steven déjà deux fois si ma mémoire est bonne. Dans l'épisode 93 on avait un peu parlé
de Seqé FoundationDB et puis dans l'épisode 160 on avait déjà vu un petit peu comment
ce que vous avez commencé. Si vous aviez commencé à l'appliquer pour me voir l'épisode 160
était un joyeux bordel puisque c'était un épisode qui avait été enregistré lors d'un dévox
dans une petite salle de réunion.
Ah oui je m'en souviens.
En live et ça avait été assez folklorique donc si vous voulez passer un bon moment vous pouvez aussi
écouter cet épisode qui était assez drôle. On avait évidemment vu le côté très prometteur
que pouvait avoir FoundationDB et sur le fait que vous aviez chez Clever mis un gros ticket dessus
pour pouvoir un peu creuser les choses mais on avait quand même un petit peu quelque chose
un petit peu pour l'instaurer qui restait encore un peu superficiel et donc ce qu'on va essayer
de faire aujourd'hui c'est à descendre un petit peu dans les arcs à ne de tout ça pour pouvoir
être beaucoup plus pointu et puis aller jusqu'à effectivement ce qui est votre actualité récente
qui est le fait d'avoir commencé à sortir des produits au-dessus de FoundationDB.
Alors je ne sais pas qui peut prendre le point là dessus sur le fait de remettre un petit peu
en contexte et de dire finalement ce FoundationDB pourquoi est-ce qu'il a une telle place aujourd'hui
dans votre quotidien ?
Je pense qu'il faut retracer un peu l'histoire du coup là dessus et d'où ça vient c'est à dire
qu'on avait d'abord construit de l'expertise autour de Apache Edgebase qui était une solution
transactionnelle de stockage distribué de ce qu'on appelle le clé colonne c'est du clé
valeur mais organisé par colonne donc c'est un data modèle un peu un peu spécifique et qui permettait
de stocker du clé valeur de manière ordonnée donc quand tu es capable de stocker de manière
ordonnée ça te permet des scans optimisés en fonction de certains usages ce qui est très
utilisé notamment dans la time series mais pas que ce que faire un redis si tu veux faire du
stockage quelconque en fait c'est très très souple en termes d'usage puisque la plupart des
solutions que vous utilisez de toute façon même en SQL ou en quoi que ce soit à la fin le stockage
c'est souvent du clé valeur et donc dans cette sémantique de manipulation de données on avait
déjà développé pas mal d'usages autour de tout ça mais on avait quand même toujours une petite
gêne du point de vue un peu opérationnel parce que c'était je vais pas dire complexe un système
distribué c'est toujours un peu complexe mais il y avait quand même des choses qui qui rendaient
pas les opérations des plus simples donc il faut l'outiller beaucoup pierre avait ré-redevelopé
un ce qui est du le balancer de données par dessus pour mieux répartir la donnée sur les
différents noeuds c'était pas non plus une solution qui était très efficient d'un point de vue
ressources machine mais parce que quelque part dans dans la galaxie adoupe le but n'était pas d'avoir
un cluster à je base c'était beaucoup plus d'avoir un cluster adoupe avec du mabridouz dessus du
hdfs du h base du éventuellement spark flink ou autre et donc d'avoir tous ces process qui
quelque part décloisonne le côté de compute data qui remélange tout et qui est capable
par des circuits courts d'optimiser quand même les chemins d'accès d'avoir des accès
parallélisés à certaines données donc c'est tout un paradigme qui fait que ça s'expliquait
dans ce temps là aujourd'hui 2024 les choses sont très différentes la donnée arrive beaucoup plus
dans des entrepôts de type s3 compatible avec du coup un compute qui est instantiée à la demande
uniquement et du coup les paradigmes ont un peu différé et à je base s'y retrouve beaucoup moins
là dedans et si on ajoute en plus que le problème d'âge base c'est que c'était utilisé par des
très très grosses boîtes et quand tu mets un système comme ça en place quand ça marche qui
touche pas donc on s'est retrouvé avec une version 1 utilisée par des mastodontes qui avaient des
clusters de milliers de machines mais qui vont pas aller les mettre à jour parce que ça les fait
pas marrer et du coup t'as une version 2 qui arrive puis une version 3 mais des gens qui sont
toujours en prod sur la 1 et quand tu fais une paire et bien elle doit être compatible sur version 1
version 2 version 3 donc en fait en termes de maintenance de projet c'était devenu un enfer
ce projet là du coup on n'était pas satisfait que ça d'un point de vue opérationnel et à côté
de ça il y a aussi fondation qui arrivait quoi et quand fondation est arrivée nous on l'avait déjà
repéré au tout départ en se disant ouah c'était un alien ce projet là c'est moi j'appelle souvent
ça un accident industriel puisque imagine un projet de recherche dans lequel les gens se disent
bah tiens pour aller faire un peu la base de données ultime on a besoin d'un modèle déterministe on
veut pas de garbèche collection donc ça élimine tous les langages agc et du coup pour être déterministe
il faut plus un similier au modèle acteur donc tu dis ok très bien mais ça n'existe pas forcément
c'est plus plus donc ils se sont dit bah en fait c'est pas grave on va créer notre propre abstraction
donc on va créer un langage qui va nous permettre d'exprimer ça et qui va transpiler vers du c++
déjà tu dis ok avant d'avoir fait ton premier poc de db donc ils ont fait ça après ils se
ont dit mais attends en fait pour tester la validité du modèle les accès concurrents
la transactionnalité le mvcc l'exactitude tu vois de ce qu'on veut faire et bien on va avoir besoin
de simuler l'usage pour le valider pas le test unitaire le test d'intégration qui est pas suffisant
parce qu'il permet toujours de tester que ce que tu veux tester mais la simulation et là je vous
laisse peut-être aller voir les conférences que pierre a fait sur le sujet puisque il en parle
bien mieux que moi mais la simulation permet du coup de valider des choses sur lesquelles on n'aurait
pas pensé et ça leur a permis de le langage de créer le simulateur et le simulateur de créer
la db ouais tu as fait un peu farce forward sur le sur le sujet je pense stéphane mais moi ce que
je retiens dans ce que tu viens de dire aussi c'est fut une époque où faut d'avoir des
alternatives on se satisfaisait avec toutes les contraintes qu'il imposait d'un edge base et c'est
vrai que à je vais c'est quand même une stack super complexe quoi pour toute personne qui a un
petit peu joué avec hg base même avec une distribution avec une distro à doux à maintenir
à cet ep à lancer entre guillemets c'est pas forcément le truc le plus compliqué de la terre
mais comme tout un chacun le sait qui a un peu mis les mains dans la doupe à chacun qui aurait un peu
mis les mains dans la doupe à un moment donné le sait c'est clairement un problème d'opération
c'est à dire faire ça dans la durée c'est un vrai sujet compliqué et quand on voit le mille feuilles
de j'ai un cluster j'ai un hdfs au-dessus de ça je pose des régions serveurs pour pouvoir
gérer ma donnée sur chacun des nœuds ensuite je suis obligé de gérer la coordination ensuite
je suis obligé de gérer plein de trucs et tu soulignais aussi tout à l'heure le problème
de contention c'est à dire qu'à un moment donné si on se met à écrire 80% notre trafic sur un seul
nœud du cluster et bah on va se nommer un nœud qui explose et qui plombe tout le reste du
cluster donc c'est vrai que c'est un enfer à gérer et le fait de se dire bon après est-ce que
ce socle de base de données générique qui permettent de déployer plein de cas d'usage dessus le retrouver
c'est vrai que pendant une éternité ben il n'en avait pas quoi et ça amenait à l'éparpillement
de solutions en tout genre du cacendre d'un côté du du mongodébé d'un autre et ainsi de suite
parce qu'on n'avait pas forcément des solutions qui permettaient de unifier tout ça et j'ai
l'impression que foundation est arrivé avec une réponse à plein de choses là dessus justement ce
côté building bloc qui permet de faire plein de choses comment est-ce que vous vous l'avez
vous l'avez perçu assez rapidement et comment est-ce que vous êtes arrivé vous êtes allé
en cette direction là de dire ok on va avoir une base de données et au-dessus de ça on pourra
faire plein d'usages différents lors du l'épisode 160 pierre tu nous avais parlé de comment est-ce
le warp 10 que vous avez pour mettre toutes vos time series et votre monitoring chez vous
comment est-ce que c'est venu cette réalité de justement on a une peut-être la base de données
qui va nous permettre de faire toutes nos la métabase de données on se sent peut-être trouver le
terme quoi ouais bah en fait c'est quelque chose qui est mis en avant directement dans la page de
de description du projet c'est à dire qu'en fait c'est vraiment d'où le nom en fait foundation
db sa vocation d'être la fondation pour écrire des systèmes distribués moi je quand je présente
fondation je dis toujours il y a deux aspects qui sont extrêmement important pour les développeurs
c'est une boîte à outils c'est à dire que tu peux faire plein de choses tu peux tu peux écrire
à peu près tous les data modèles que tu veux tu peux faire de la time series tu peux faire du
bloc tu peux faire tu peux faire de la queue tu peux faire vraiment énormément de choses donc
en fait tous tes problématiques métiers tu peux les représenter dans du fondation avec une API
qui est ma foi assez simple mais quand tu rentres dans les détails tu peux faire énormément de
choses donc c'est vraiment un toolbox boîte à outils pour le dev pour faire plein de choses
et d'un point de vue opérationnel tu as quelque chose d'extrêmement robuste et pour avoir opéré
et être d'astreinte et avoir réparé des edge base beaucoup trop souvent en astreinte aussi bien
dans notre ancien boulot que cléver en fait on voulait vraiment quelque chose qui soit capable
de se réparer tout seul et de se faciliter la vie et donc ce fondation en fait il est présenté
en fait comme une quelque chose d'extrêmement robuste et de tolérant à la panne et de et d'un
peu magique sur le côté opérationnel et en même temps d'une boîte à outils et en fait ça c'était
les deux ingrédients qu'on qu'on qu'on qu'on recherchait c'est à dire que je pense qu'il y a
assez peu de personnes qui opère des systèmes distribués dans les entreprises et en fait quand
tu opères quand t'es dans l'équipe qui opère les systèmes distribués bah tu dois opérer
allez un peu du kaffka du du adoup peut-être du un petit clic à hausse parce que c'est c'est le truc
en fait tu te retrouves en fait à opérer des des dizaines et des dix enfin plein de systèmes
distribués différents et du coup bah t'as une vraie complexité parce que tu dois connaître si ta
technologie elle est fragile de base bah tu te retrouves à devoir entre guillemets être expert
de plein de petits trucs donc on cherchait vraiment ce quelque chose de de pratique en opérationnel
et de d'extensible pour pour les devs et on a trop après des années de travail vraiment on est
très satisfait des deux points je crois que l'un des principaux sponsors de de foundation db
c'est apple et il ya une deuxième boîte qui est très qui peut-être je sais pas si contribue beaucoup
mais au moins il l'utilise c'est snowflake donc ce sont deux business at scale qui font des choses
très différentes finalement dans leur usage et de mémoire apple c'est tout ce qui est à cloud c'est
toutes les applications à cloud c'est dire que que fait apple mais aussi toutes les applications
à cloud que vous allez par exemple un développeur d'application apple s'il veut utiliser
à cloud d'attache et puis je sais plus quel est le nom du sub set de la pi à la clothe qui
est ça clothe qui te merci pour son application il va avoir accès à la bout de foundation db
géré par apple ça c'est donc ça veut dire qu'en termes de versatilité d'usage c'est à dire que
on va aussi bien apple va aller aussi bien stocker des photos que stocker de la métadonnée sur
des applications que de stocker les calendars partagés entre les différents devices fin
il ya une forme de cette versatilité les assez extraordinaires et par ailleurs la robustesse
pour ceux qui ont suivi les épisodes sur snowflake qu'on a pu faire par le passé snowflake vous avez
du stockage de données qui est dans du s3 like c'est à dire s3 quand c est hosté chez chez chez amazon
du gcs quand c est chez google et ainsi de suite et par contre toute la métadonnée de savoir telle
table à sa donnée à tel endroit tel table à sa donnée à tel endroit tel user peut accéder tout le
skier back ainsi tout ce qui est métadonnée du produit snowflake et stocker dans du foundation db
et ça c est entre guillemets si foundation db tombe il ya des millions d'utilisateurs qui sont
derrière des applications qui sont motorisés par snowflake qui vont qui vont qui vont pu accéder
donc c est quand même un exemple de robustesse et de fiabilité du produit qui est quand même assez
fou quoi et donc et c est pour ça que c est assez surprenant parce que finalement c est peut-être
l'un des produits de la galaxy data dont on entend le moins parler parce qu'il requiert peut-être
aussi un effort très important au dessus pour pouvoir construire quelque chose dessus c ouais
c est exactement tu soulèves un point super important en fait tu donc on a parlé de apple de
de snowflake donc eux ils ont un usage mais massif de de de foundation db alors apple et peut
partage pas trop de trucs mais bon ils ont énormément de clusters pour pouvoir distribuer
les millions d'utilisateurs et les millions les millions de mini bases de données logiques
qu'ils ont mais snowflake pour le coup il s'en peut plus transparent et il parle de il dit bah
en fait si fondation db tombe c est genre c est la catastrophe donc en fait il ya une il ya une vraie
adhérence en fait technologique ou en fait si la base de données est corrompu pour n'importe quoi
ou si la base de données n'est pas disponible en fait c est game over pour snowflake et tu l'as
dit ouais il ya d'autres entreprises il ya datadog aussi qui l'utilisent beaucoup pour la partie un
peu pareil que snowflake c est pour le stockage des métadonnées d'une région de l'équivalent
d'une région chez eux de datadog mais c c'est un peu une technologie qui est cachée parce que
justement comme c est un effet boîte outil c est que tu peux écrire ton petit système distribué
qui va répondre à ton besoin très spécifique métier de stocker par exemple des métadonnées
at scale ou ou de stocker des mini bases de données logiques du coup tu te retrouves assez rapidement
dans une situation où on fait les développeurs qui travaillent autour de fondation font tous un
peu la même chose mais dans leur langage dans leur framework avec leur contrainte de sécurité
du coup on il ya assez peu de librairie open source t'as pas de t'as pas de t'as assez peu de
contenu sur très public pour dire bah comment faut faire ci comment faut faire ça par contre
quand tu rentres dans la communauté fondation et que tu commences à discuter avec les gens en fait
tu te rends compte que tout le monde fait la même chose et tout le monde fait un peu les tu vois les
mêmes les les mêmes contraintes ou les mêmes trucs donc c est assez facile de récupérer des cas
d'usage et de savoir comment comment comment écoder un truc mais ouais ça reste une technologie cachée
c est aussi parce que t n'as pas tant d'ingénieurs d'attaque ça la plupart des gens sont plus dans
une approche d'intégration et veulent un truc très clé en main il l'installe et l'utilise là c'est un
moteur transactionnel distribué et c'est un moteur c est effectivement comme tu dis c est en termes
d'outillage tout le kit c est sans doute le bon c est qu'il faut construire au dessus et si t'as
pas l'équipe les compétences le temps la vision technologique pour le faire tu vas pas y arriver
tu vas pas y arriver quoi donc un très bon exemple par exemple c est qu'il y a pas d'authentification
sur le cluster quand on arrive sur un cluster fondation db en fait on peut faire d ilito le
puis ça va partir dans une seule transaction et en une seule transaction tu vas clireau
tout ta base de données enfin et en fait c c est quelque chose qui dit c est by design c
est à dire qu'ils veulent pas injecter de la complexité dans dans la base en elle-même
il par contre il fournissent plein d'outils en fait dans la piaille qui va te permettre de faire
ton truc à la sauce et je pense que c est ça le vraiment l'esprit de derrière fondation alors
par contre oui ça demande d'avoir des compétences parce qu'en gros c c tu te retrouve avec un
modèle clé valeur donc on pourrait se dire c est comment t écrits une base de données par
dessus du redis ouais comment tu fais des index comment tu recherches dedans enfin c c c c c
n'est pas facile je voyais un peu le sujet presque dire finalement sur une épia y est 3
tu peux construire plein de choses tu peux construire des applications plein de choses et
mettre le moteur que tu veux au dessus et finalement ben là on est à peu près dans la même dans la
même dans la même chose c est à dire que tu vas avoir une capacité à stocker des objets de
taille variable tu vas avoir une capacité à aller les retrouver à écrire des primitifs pour pouvoir
les scanner pour pouvoir les retrouver et après à toi de jouer avec de grandes libertés mais
des grandes libertés permet d'avoir tous les effets aussi bien positifs que négatifs
c'est à dire que tu peux te retrouver avec frankenstein à la fin de l'histoire quoi oui ben
faut avoir une si par exemple tu veux implémenter des genre rien qu'un clé valeur en étant
multitenante donc partager tes utilisateurs tu vois il ya quand même un peu de métier à faire
tu dois gérer tu dois avoir une un peu de connaissance sur le modèle transactionnel de
fondation pour te dire ouais alors du coup je vais dédié dédié certaines transactions à
certains utilisateurs après tu dois scoper ta donnée enfin non il ya un peu de tu c'est un
moi je vois ça comme une boîte à outils ouais ouais mais on est d'accord que c'est presque un
data os quoi qui permet de te dire ben finalement je vais avoir une capacité à op et mes données
avoir de l'outil à je peux opérer mes données mais après c'est un peu voilà tu as la boîte à
outils tu construises que tu fais avec si tu le fais mal ton meubles il sera banquale pourtant
t'es parti avec la même boîte à outils que le mec à côté qui a fait un meubles qui tient qui
tient droit quoi voilà t'as pas la couche au dessus standardisé pour autant apple a quand même
filé un petit coup de main à un moment donné ils ont ils ont publié un white paper sur le
record layer qui est la manière dont ils ont tu veux dire tu veux dire un mot non il ya deux papiers
il ya deux papiers il ya record layer et il ya quick et ils ont aussi publié même en open source
le record layer ce qui te permet de d'avoir la couche au dessus dans une implementation en java
mais qui te permet d'avoir de la gestion d'index d'avoir du ritraille sur le query d'avoir
ce genre de choses donc ça peut quand même soit en soit c'est suffisant pour ton besoin et tu peux
du coup l'ajouter et tant mieux mais sinon ça peut t'inspirer dans la compréhension de comment
passer à l'étape d'après sur sur comment construire une base de données ou l'intégrer dans ta
problématique métier la question que j'ai envie de poser par rapport à ça mais peut-être que
c'est justement quelque chose que vous vous avez et si même pas c'est pas peut-être c'est sûrement
vous l'avez vous avez dû faire ce choix architecturalement parlant on a un système
distribué donc qui dit système distribué dit une capacité à répondre de plusieurs nœuds
pour pouvoir distribuer la charge dessus c'est beaucoup distribué cette affaire et et à la
fin ça veut dire que les requêtes de la partie du middleware qu'on va construire vont aller
taper n'importe quel des nœuds ou est-ce qu'il y a un système de coordinateurs quelque part qui
prend les requêtes et qui lui après les distribuent au bon endroit et donc ça c'est le premier
truc qui me vient à l'esprit et si demain on veut faire une API qui soit capable d'aller
chercher d'aller chercher de la donnée à l'intérieur de fondation dibi de pouvoir faire des
crud sur ce cette donnée qui est dans fondation dibi comment est-ce qu'on le construit est-ce que
c'est fondation dibi qui va lui-même embarquer comme un module qu'on pourrait rajouter dans cette
API ou est-ce que c'est quelque chose qui va fonctionner à côté de fondation dibi et qui va
s'appuyer et qui va lui-même dialoguer avec fondation dibi pour aller écrire ou lire les données
au bon endroit en fait ça tu l'appiai quand tu fournis c'est on tu crée une transaction et à
partir de la transaction tu peux faire cette fin c'est un clé valeur donc c'est pute get scan et
delete alors t'as deux trois succès riz pour faire des trucs un peu rigolo mais globalement la
API elle est simple et du coup en fait comme c'est un boîte outil ce que la question de est-ce que
tu veux que chaque chaque instance de de ton middleware soit capable de taper tout ou est-ce que tu
veux avoir une une coordination du système en fait c'est là qui est qui est chouette c'est que ça
va dépendre de ton besoin de ton besoin métier si à un moment tu as besoin d'avoir fait un système
d'élection de leaders que tu vas utiliser toi dans ton système où tu vas dire bah voilà je vais
dans mon accouches middleware je vais avoir besoin d'un leader pour un client donné en fait tu peux
faire l'élection dans d'en fondation et après lui manipule les données là pour être sûr que
toi tout transite mais au contraire tu peux te dire bah en fait tout le monde a accès à tout ça
dépend vraiment de ton de ton modèle nous ce qu'on a décidé de faire justement pour éviter de
pour résoudre le problème une seule fois de comment tu stock la donnée sous quelle forme
comment tu gères les index comment tu gères les les toutes la partie multitenante etc en fait
ce qu'on a fait c'est qu'on a abstrait cette connaissance là dans un dans un boîte outil
dans un SDK un SDK par de suffondations qu'on a écrit en rust et en fait c'est ce SDK à
qui fait la magie de d'ouvrir ce qu'on appelle une base de données logique chez nous et de qui
vrapent en fait ce comportement là donc ça on a fait un ORM glorifié au dessus de fondation mais
en fait ce système là permet de faciliter le devs d'ailleurs qu'en fait on a des développeurs
des alternants tu vois par exemple qui ont pas un background système distribué à l'école tu vois
qui utilise cette ORM là comme si c'était un ORM quasiment pas pareil et c'est l'OM chez nous
qui qui gère ce ce cette complexité là de savoir bah comment tu fais du multitenant comment tu
fais l'authentification comment tu tu chroutes un peu dans dans l'environnement du client à la volée
et etc. donc en fait ce qu'on dit moi ouais non je comprends je comprends ouais pardon c'est pas
ce que je comprends c'est qu'effectivement il ya peut-être je sais pas combien de gens l'utilisaient
travers le monde mais à un moment donné il ya tout va dépendre de la de choix qui sont quand même
très directifs au démarrage est-ce que ça veut dire que pour un cluster fondation dibi il faut avoir
une homogéinité de façon de l'utiliser ou est-ce que ce middleware cette couche qu'on va rajouter
au dessus elle est propre à propre il peut y en avoir quatre ou cinq façon quatre ou cinq middleware
qui soit assis au dessus des primitives de fondation dibi et qui permettent de faire que plusieurs équipes
se partagent à même une même une même fondation dibi je pense que ça dépend vraiment de l'usage
si tu as par exemple nous par exemple tu vois on a deux grosses catégories de logiciels qui par
la fondation on a waarten et on a tout ce qu'on est en train de construire par dessus qui a un
fonctionnement complètement différent et tu vois nous on est capable de séparer ces usages là on peut
rajouter un préfix de clé si on veut partager les clusters nous on a on a séparé les clusters si on
envie mais en fait c'est chacun fait sa sauce pour le besoin nous on n'a pas non plus 15000 ingénieurs
qui ont une côte des connaissances fondation un peu un peu l'eau level donc pour nous c'est facile
d'en capsuler la connaissance métier de fondation dans une librairie que les autres peuvent réutiliser
en masquant la complexité mais tu vois un moment on peut toujours descendre dans la comp... enfin
enlever le SDK ou prendre des bouts du SDK et descendre dans la complexité ce qui est le choix
qu'on a fait nous vraiment de notre côté c'est de pouvoir abstraire fondation et la complexité
fondation et de... de... de... de... de... de... de... multiplier les devs qui soient capables d'aller
d'aller faire des choses avec fondation et là on a été plutôt bon là-dedans.
Il y a aussi un aspect dans ce qu'on gagne avec fondation il y a aussi ce qu'on perd par rapport
à HatchBase et dans la mise à l'échelle il y a moi je connais pas un KV qui tient une mise à l'échelle
aussi massive que HatchBase donc pour répondre aussi à ta question il y a aussi l'aspect
mis à l'échelle c'est à dire que si dans un des usages tu sais que tu vas être vraiment massif
enfin tu... tu... tu vas aller en centaines de terra tu vois ben peut-être que ça vaut le
coup d'en faire un cluster dédié et d'avoir... mais là c'est pas c'est pas forcément une histoire
de... de contingence logicielle c'est plus derrière de pouvoir opérationnellement gérer les choses
correctement et ça ça c'est tout à fait c'est assez légitime après je sais pas si vous vous
souvenez de Microsoft qui sur Azure avait sorti Cosmos DB qui avait comme... comme ambition alors
je sais pas ce qui est devenu le produit je sais pas du tout ce qui c'est... si ça existe toujours
si ça continue à se développer... Quand il parle de données, quand il lit pas d'un client à l'autre
ça provoque je crois enfin leurs trucs tournent et t'as des clients su...
Ouais ouais ouais je crois et l'une des ambitions de ce truc là c'était de dire la même data vous
allez pouvoir la lire en mode document vous allez pouvoir la lire en mode clé valeurs vous allez
pouvoir même je crois vous pouvez même faire du SQL dessus enfin il y avait... il y avait un côté
polymorph de l'interface sur une même donnée et donc à vous écouter ce que je comprend c'est qu'avec
un foundation DB on a un layer qui stocke de la donnée et on est capable au-dessus de ce layer de
mettre différents... différents protocoles qui vont permettre de faire différentes interactions
avec une même donnée. Ouais après c'est pas forcément une bonne idée ça parce que tu vas avoir
enfin tu vois quand tu as un modèle document et un modèle SQL c'est vraiment pas la même chose donc
tu peux théoriquement mais en pratique c'est pas c'est pas d'un intérêt fou quoi. Après proposer les
différents formats ça peut être la raison parce que moi je t'ai obligé c'est à dire avoir la
possibilité de présenter les différents formats avec un même socle technique de sous ça c'est
intéressant mais se dire j'ai la même base qui est exposée en tant que document d'un côté et
étape de l'autre à certes tu pourras le faire mais ce sera des documents pas forcément très
intéressant et c'est voilà. Ouais si le data modèle est le même en fait ça ça peut le faire avec
un forcément un middle ground qui existe. Je te propose tu repars au deuxième épisode de ça tu
repars parce qu'on a un cas d'usage qui est intéressant qu'on peut présenter. Moi ce qui
m'intéresserait de pour terminer avec un peu sur le modèle pour bien comprendre en fait puisqu'on
a dit qu'on a une boîte à outils on a dit mais concrètement en fait ça se présente comment
c'est à dire est-ce que j'ai un cluster d'un côté mon application qui se déploie à côté et
qui l'utilise en passant par réseau est-ce que c'est une bibliothèque que j'intègre et en fait
mes nœuds deviennent le nœud de fondation en gros fondation déjà est-ce que c'est un cluster
ou est-ce que c'est une bibliothèque est-ce que j'ai des contraintes en terme de langage que je
peux utiliser et puis éventuellement un peu les primitives que tu as dit qu'on a le gâté de
poutes tout à l'heure tu parlais de coordination il peut nous aider mais est-ce que c'est via des
gâtes et des poutes avec un schéma particulier ou est-ce qu'il y a vraiment des primitives pour
aider à faire une l'élection leader par exemple ou au moins de la coordination enfin ouais.
Je peux répondre à ça en gros donc fondation quand tu l'instales t'as un mode temps de l'eau
et tu choisis après la réplication donc t'as une réplication simple pour un effet un usage tu vois
en mode test container sur ta machine de dev ça marche très bien tu vois pour pouvoir tester le
truc puis après tu peux monter à l'échelle donc tu as une réplication double réplication triple et
puis après tu as des réplications avec les data center donc en fait ça t'installe un cluster
fondation avec alors tu as énormément de de rôle dedans de rôle d'acteurs donc tu vois tu as des
tu as trois quatre acteurs qui sont dédiés aux transactions la coordination t'as une je crois
t'as une liste de quinzaines d'acteurs différents qui vont se parler ensemble donc tu vois tu
imagine un des process qui se cause ensemble qui forme le cluster fondation et du coup ça
un des avantages c'est que du coup si à un moment tu as un bottleneck sur un des acteurs tu peux
rajouter des acteurs là et ça va automatiquement distribuer la charge donc ça c'est ton socle
de données et après tu as des applicatifs qui vont parler à fondation c'est ce qu'on appelle
des layers donc une couche au dessus et qui vont fournir en fait ton métier et du coup tu généralement
ce que tu fais c'est que tu comme tout tout développement applicatif tu vas venir importer
un binding une librairie qui va te faire le la couche d'accès donc t'as les binding officiels
qui sont alors java pitton go j'en ai oublié bon il est tu veux avoir les binding officiels on va
dire de de fondation qui sont fournis par apple et et et et snowflake et la communauté après t'as
plein de binding non officiel non officiel ça veut dire juste qu'ils sont maintenus par la communauté
donc là t'en as un t'en a air lang ta node bata rust nous on est mainteneur on est mainteneur
officiel du binding du bating rust semblant ça va avoir de mal de téléchargement
en dépassant en blague ça m'étonne tellement cette histoire en vrai on a 40 000 téléchargements
par jour dépasser votre équipe quoi il n'y a pas que vous qui faites du rust sur fondation non non
non loin de là je troll non mais en vrai ça se marie bien je suis on peut faire une appartée de
minutes mais le binding il est assez complexe c'est à dire tu intègres une libérerie c comme tu
fais du libère des cafés donc tu as un binding c que tu dois taper qui fait la qui gère la
communication et qui gère tout le le le bordel du coup tu vois quand tu prends un langage comme java
t'es obligé de faire du j en ai direct tu prends du go bah t'es obligé de faire du cgo et avec
tous les problèmes du coup rust en fait c'est un langage qui comme tu peux ou comme du zig tu vois
qui marche bien en interopérabilité avec du c donc ça passe par le c nécessairement ou est
parce qu'en fait le le le client le client fondation est simulé testé avec le cluster donc en
fait personne n'a envie de recoder le client en fait parce que trop dangereux donc ça veut dire
quand on de java ce qui est c c c ça marche pas bien avec les virtuols red donc on n'est pas
alors le le alors il a sa propre event loop et compagnie non le binding java et le plus propre
d'un point de vue si tu veux prendre si à un moment tu n'as pas de contrainte de langage et que tu veux
faire du fondation alors soit tu prends du respect en vite abusé mais en fait le binding java et le
plus largement le plus mature parce que c'est celui qui utilise en production par apple et
snowflake ça n'est pas switcher des choses vers du swift pour alors tu vas rire mais il ya une
p r vraiment il y a un moment ils avaient même commencé à imaginer que remplacer le c plus
enfin le le le c plus plus transpilé vers du swift pour développer dans fondation il y avait une
p r qui faisait 60 000 lignes qui rajoutait la compate swift pour développer en interne
d'enfondation et au final ils ont fait le prototype et il n'y avait jamais eu d'un plème donc ils
l'ont reviré mais il n'y a pas de ouais non il n'y a pas beaucoup de il y a un binding swift mais il
est assez expérimental j'ai pas vu beaucoup d'activité dessus mais ouais ça a l'air très java
ok est ce que ça répond à ta question j'ai revoit oui enfin je pense que le les matures c'est
juste que effectivement avec le virtuel sred aujourd'hui si tu veux profiter du comment dire
de du réactif sans sans interface réactive enfin du non bloquant avec une appellie bloquante
il faut pas que tu essaies sur le passage sinon ton sred plateforme en fait est piné et tu te
trouves dans une situation pire en fait que si tu avais des sred plateformes de base mais peut-être
que si ils ont fait sa main enfin on verra comment ça donne c'est un détail on a le même en fait on
a le même problème en rust pour le binding en fait on est obligé de faire le mapping entre la
synchrone du de la sacrone rust et le gestion du binding et pas la notion de sred virtuel en rust
tu vas partir sur un frayement cas synchrone ou quelque chose comme ça mais du coup vous faire l'inter
mais le fait de pour nous d'être en rust ça nous a aussi permis d'intégrer tous nos
layers du dessus dans le framework de simulation on demande de simuler oui
oui parce que t'as beaucoup de t'as beaucoup de cas qui se mettent à simuler notamment
et à taille de orbital aussi pour essayer dans le cadre de la base de données ils ont fait un
super simulateur d'ailleurs par dessus leur simulateur ils ont rajouté un jeu vidéo
qui est assez impressionnant quand on le voit en action on est peut-être en train de faire un truc
équivalent alors alors on en parlait est-ce que c'est ultra robuste pourquoi c'est ultra robuste
c'est que des ones ils ont développé un simulateur de condition réelle donc en fait tous les trucs
les insupportables du run des systèmes distribués donc les les paquets tcp qui s'inverse les
bits flip sur les disques les les horloges qui remontent dans le temps tout ça en fait en fait
ils ont ils ont fait une abstraction donc en fait vous avez une interface réelle une interface
simulée pour tout ce qui tout ce qui sort du c++ donc tout s'y scroll tout appelle quel con en fait
possède une version simulée qui va venir injecter de la faute et donc en fait ce qui se
passe c'est que quand tu quand t'es développeur sous fondation en fait tu as besoin de 20 000
tours de simulation qui va injecter des panne réseau des panne disques qui va couper des acteurs
etc donc en fait quand quand quand tu as une quantité de f chez fondation bah tu en fait tu as
une fenêtre noire de ton implemme qui qui va exploser quand tu vas faire quand tu vois quand
tu as une quantité un changement de coordinateur un bit flip et un problème de de de disques
durant même temps ou dans un ordre donné là ta base est secourant elle va se corrompre et
bah en fait c'est ce genre de bug là que la simulation permet d'attraper et ça c'est quelque
chose qui est réservé pour les développeurs de fondation et nous ce qu'on a fait et ça nous a
énormément aidé c'est qu'on a été capable de prendre le code notre code rust donc le notre
boîte à outils par dessus la boîte à outils et on l'a inclus dans le simulateur fondation alors
ça a demandé de la magie vaudou cc++ un peu affreuse mais en gros ça nous permet en fait de
venir tester notre code fondation et donc en gros par exemple ça nous permet de venir dire bah
quand on a quand on a quand on fait une release en pro de nos layers bah en fait on sait que
on résite sa bid flip on résiste au changement de coordinateur en fait on fait du chaos
engineering sur le cluster ouais c'est ça c'est à ça que ça me fait penser ouais ouais c'est
littéralement ça c'est jepe c'est jepe seigne in the box quoi bah c'est plus ça va plus loin que
jepe seigne c'est qu'en fait nos applicatifs en fait on sait que le notre applicatif il est robuste
à pas de réseau bid flip tout tout l'aléa de ce qui peut se passer en prod bah en fait ça
marche et du coup ce on est en fait du simulation driven development comme tiger beetle en fait
tiger beetle ils ont une cd gens qui ont copié le simulateur de fondation alors ils l'ont un peu
amélioré il ya des trucs un peu sympa qu'ils ont fait derrière mais on on est vraiment dans la même
mouvance et dans les mêmes les mêmes enjeux techniques que que du tagger beetle et compagnies
mais là où je me sens là c'est où c'est excellent c'est que tu peux certifier ton dev et ta
globalement une couverture des aléas parce que on parlait tout à l'heure du problème c'est quand
il s'agit de gérer opérationnellement les choses c'est pas le problème du développement parce que
tester le développement qu'on met au dessus d'une base de données c'est une chose ok le truc le truc
qui peut répondre au et peut avoir une tu peux avoir une une couverture de code qui soit suffisante
et puis tout va bien mais si par exemple t'as plein d'aléas comme ça qui peuvent qui sont extérieurs à
ton code ça va marcher beaucoup moins bien alors que là avec la 6 c'est je comprends bien la simulation
se charge justement de pouvoir injecter tous ces aléas possible et imaginable lorsqu'on teste
le code qu'on va faire tourner sur la base donc c'est un énorme avantage quoi c'est un énorme
avantage et mais par contre du coup on est on est les premiers à avoir réussi à faire ça c'est
à dire en fait on est les premiers à pouvoir inclure du code de l'aieur donc de couches de middleware
dans le framework de simulation du coup on s'est retrouvé dans des situations assez rigolotes
au sein de la communauté en fait tu as des tu as une condition enfin tu as une panne qui est un peu
compliqué à gérer dans dans dans fondation c'est un moment tu as des transactions qui
peuvent jouer plusieurs fois et en fait ça c'est un truc qui est assez peu connu dans dans fondation
mais tu as une cascade d'événements qui peut amener à avoir une transaction qui passe deux fois
et du coup la plupart des des gens qui implémentent du fondation en fait voient quasiment jamais cette
erreur sauf quand ça pète du coup et sa foire et apple et snowflake ils en parlent assez souvent
parce qu'ils disent oui alors du coup cette erreur là elle est vraiment chiant parce que tu
la tapes tu la tapes vraiment pire des moments et c'est pas quelque chose qui est qui est très
connu et faut vraiment un peu creuser le sujet pour bien comprendre ce système là nous en fait par
exemple on a tapé des wann parce qu'en fait le premier tour de simulation a explosé le machin et
en fait ça nous a vachement aidé de savoir ça parce qu'en fait des day one on était tombé entre
guillemets dans le pire cas de dev et une fois qu'on l'avait réglé bah en fait on était super
sereins sur le modèle quoi et enfin on évoque taille de taille orbital mais faut pas oublier que c'est
aussi un c'est aussi spécifique à un domaine qui est le domaine financier donc si toi tu as un
besoin métier qui est un peu loin du domaine financier ça va être très très peu pertinent
pour toi comme technologie là où foundation est pour le coup ultra générique quoi ah ouais on a
cité taille de taille orbital que comme exemple du deuxième base qui fait de la simulation en fait
ouais on en parle beaucoup parce qu'effectivement il en plus il marquait bien le truc c'est très
vendeur c'est bien vendu c'est bien expliqué etc ça tient sur une disquette tout mais c'est
pas spécifique quoi oui mais par contre je pense que quand t'es sur ce besoin là il est intéressant
quoi maintenant c'est pas une base générale histoire pour connaître deux trois dev là-bas
ouais non ils sont ils répondent à une vraie problématique très spécifique et ils la répondent
d'un point de vue ingénierie de façon extrêmement intéressante moi tous les tous les semaines je
vais faire un petit tour le code de taille orbital pour aller regarder deux trois trucs sur
la simul comme on y gère deux trois trucs un c'est vraiment on est dans quelque chose quand même
qui est assez avant-gardiste et qui est vraiment super intéressant c'est une autre façon de développer
clairement nous on l'a intégré à ci et en fait dès qu'on a une maïsse et tourner la simulation
pour info en termes d'indicateur avec la simulation sur le sur le coeur un vraiment
de fin de la chaîne d'évie tous les ans c'est une technique qui cumule 4000 ans de simulation c'est
à dire que c'est l'équivalent de 4000 ans de chaos engineering sur une production qui est
virtualisée mais sur une production quand même ce qui fait que si tu dois taper des bugs tu les
tu les tapes quoi tu les trouves et ça a permis de détecter des trucs comme des bugs de
firmware dans des disques durs enfin des trucs assez à l'utilisation en fait pour lesquels
t'es bien content de les choper en simulation parce que je te laisse imaginer le bug qu'évoquait
pierre tu vois en mode t'es en production et t'es un incident comme ça mais tu sais que
t'es parti pour 15 jours offline quoi et tu veux pas ça ouais et par contre en termes d'outillage
cette simulation ça se présente comment c'est à dire c'est on fait c'est un mec que l'on fait
sur le projet qui lance en mode simulation c'est ça se passe parce qu'il y a ça fait un
ordre d'aide quand même c'est important cette simulation alors tu parles de quelle la simulation
que nous on fait ou la simulation en général ou je peux te répondre aux deux d'ailleurs en gros
quand tu compiles fondation tu as tu peux le démarrer tu t'as un mode en fait où tu te fais
alors le binaire s'appelle fdb serveur tu fais fdb serveur moins moins rôle simulation et en fait
il va lancer une simu une simulation il va générer une seed et à partir de la seed tous les timing
et toutes les pannes vont être déterministes du lui donne après un fichier test qui va contenir
quel type de panne tu veux injecter quel scénario tu veux tu veux essayer de jouer et après donc
en gros c'est fdb serveur moins moins rôle simulation moins test file tar tampon et de trois
options pour activer le maximum de panne et puis ça va te jouer un jeu de simulation et du
coup nous ce qu'on fait c'est qu'on compile une librairie dynamique qui est injectée dans dans le
runtime dans le runtime fondation et du coup on c'est on teste vraiment l'aspect transactionnel
fondation c'est à dire en fait on les les seuls trucs à synchrones qu'on est capable de tester
pour le moment c'est vraiment tout ce qui est lié à fondation puisqu'en fait on utilise la simulation
comme on appelle ça les exécuteurs et les réacteurs d'en russe en asynchronous mais c'est le tout
c'est le on délègue la partie à synchrones à au simulateur et c'est le simulateur qui s'occupe
du tout excellent excellent monsieur je vous propose de comme on est des des gros tous des grands
bavards d'arrêter cet épisode sur ça ça nous a permis de j'imagine aussi pour nos auditeurs de
découvrir ce qu'est fondation dibi de pouvoir bien comprendre les enjeux d'utilisation de fondation
dibi et on se retrouve juste après pour pouvoir évoquer ce que vous en avez fait et comment vous
l'avez fait et ça ce sera l'objet du prochain épisode que vous aurez l'occasion d'écouter à très
vite

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

CleverCloud

Tags