Mise en œuvre des contrats de données chez GoCardless
Chez GoCardless, nous utilisons des contrats de données pour améliorer la qualité et la fiabilité des données . Nous sommes dans ce voyage depuis près d'un an maintenant, et bien que nous ayons quelques apprentissages , nous faisons de grands progrès.
Aujourd'hui, je veux partager un peu sur la façon dont nous avons mis en œuvre les contrats de données chez GoCardless.
Une brève introduction aux contrats de données
Si vous n'êtes pas familier avec les contrats de données, je vous recommande de lire d'abord mon article de décembre de l'année dernière où j'ai présenté le concept et ce que nous visons à réaliser avec GoCardless, mais pour résumer brièvement, c'est la façon dont nous générons, consommons et gérons nos données. Nous passons à un modèle où nous sommes beaucoup plus délibérés sur les données que nous produisons pour la consommation - nous voulons qu'elles soient de bonne qualité, avec des schémas, des versions et de la documentation.
Le contrat de données définit la structure des données, ses propriétés et fournit les interfaces permettant d'interagir avec les données, ce qui pour nous est généralement GCP Pub/Sub et/ou BigQuery . Il s'agit en fait d'une API pour nos données .

S'appuyant sur notre plate-forme d'infrastructure
Chez GoCardless, nous avons une excellente plateforme d'infrastructure en libre-service que nous appelons Utopia. C'est ainsi que nous gérons nos ressources GCP et déployons des services sur notre cluster Kubernetes, et vise à promouvoir l'autonomie et la propriété. Toute configuration dans Utopia doit être autonome, documentée et vérifiable.

Cela correspond parfaitement à nos objectifs pour les contrats de données ! C'était donc une évidence de construire notre implémentation sur Utopia. Cela nous a également donné la possibilité de déployer et de gérer toutes les ressources de service dont nous avions besoin pour aider nos utilisateurs à gérer leurs données. Cela nous a donc fait réfléchir… Étant donné un contrat de données qui documente suffisamment les données et leurs propriétés, pouvons-nous configurer et déployer tout ce dont nous avons besoin pour gérer ces données conformément à nos exigences en matière d'utilisabilité, de sécurité et de confidentialité ? Après un pic rapide, la réponse était oui .
Pour plus de détails sur Utopia, consultez notre tutoriel "Getting Started" que nous avons ouvert l'année dernière .
Définir un contrat de données
Voici à quoi ressemble un contrat de données chez GoCardless :
{
contract: new() {
metadata+: {
name: 'bank_account_information',
description: 'Information on bank accounts used for ...',
},
schema+: {
versions: [
new_version('1', anonymisation_strategy.overwrite,
[
field(
'bank_account_id',
'Unique identifier for a specific bank account, following the standard GC ID format.',
data_types.string,
field_category.gocardless_internal,
is_personal_data.yes,
personal_data_identifier.indirect,
field_anonymisation_strategy.none,
required=true,
primary_key=true,
),
field(
'account_balance',
'Payer\'s account balance. May be positive or negative.',
data_types.double,
field_category.payer_confidential,
is_personal_data.yes,
personal_data_identifier.direct,
field_anonymisation_strategy.nilable
),
field(
'account_holder_name',
'Payer\'s account holder name, as entered by the payer.',
data_types.string,
field_category.payer_confidential,
is_personal_data.yes,
personal_data_identifier.direct,
field_anonymisation_strategy.hex
),
],
[ ddrSubject('bank_accounts', 'bank_account_id') ],
) + withPubSub() + withBigQuery(),
],
},
},
}
Déploiement du contrat de données
Une fois la définition du contrat de données fusionnée dans un référentiel Git par les propriétaires de données eux-mêmes, nous créons les ressources, services et déploiements suivants.

Tout cela est fait au nom des propriétaires de données. Les ressources GCP et les services Kubernetes sont par contrat de données, donc quelque chose qui affecte un pipeline n'affectera pas un autre.
Les ressources GCP font partie de leurs propres projets GCP de services, ce qui donne explicitement aux propriétaires de données l' autonomie nécessaire pour les gérer et la responsabilité de le faire. Les alertes des services Kubernetes sont acheminées vers les propriétaires de données, car ils seront généralement les mieux placés pour les gérer. Si ce n'est pas le cas, l'équipe Data Infrastructure est toujours là pour un support de deuxième ligne.
Notre mise en œuvre des contrats de données est conçue pour être flexible . Nous ne nous soucions pas de la façon dont les données sont structurées, tant qu'elles contiennent toutes les informations dont nous avons besoin pour créer et déployer les services et les ressources utilisés pour gérer ces données. Nous permettons aux utilisateurs de choisir les services dont ils ont besoin, et nous avons constaté que près d'un tiers des utilisateurs ont choisi de ne pas déployer Pub/Sub, et beaucoup choisissent de ne pas créer de table BigQuery, ce qui en fait un bon choix pour l'inter-service cas d'utilisation de la communication. Tout cela fait partie de la façon dont nous favorisons l'autonomie de nos générateurs de données.
Nous utilisons également le contrat et les métadonnées qu'il contient pour mettre à jour des services centralisés, par exemple notre catalogue de données. De plus, comme nous utilisons des outils tels que BigQuery et Looker, bien que les données soient séparées afin de promouvoir la propriété et l'autonomie, elles ne sont pas cloisonnées : vous pouvez interroger les données de différents projets GCP sans aucun coût ni limitation, ce qui permet aux consommateurs de rejoindre ensembles de données et trouvez des informations, peu importe qui possède et gère les données sous-jacentes.

Tout n'est pas dans la mise en œuvre
Cette implémentation nous est évidemment très spécifique. Il se trouve que nous disposons d'une excellente plate-forme d'infrastructure sur laquelle nous pouvons nous appuyer et qui correspond parfaitement à ce que nous voulons réaliser avec les contrats de données. Cela nous a permis de construire ce que nous appelons notre infrastructure de données basée sur des contrats, où, à partir d'un contrat de données, nous pouvons déployer tous les outils et services nécessaires pour générer, gérer et consommer ces données.
Mais la mise en œuvre n'est pas la partie la plus importante. Comme l'écrivait récemment Tristan Handy , ce qui compte, c'est "l'identification du problème et l'alignement sur les types de garanties que nos systèmes doivent nous fournir".
En fin de compte, nous considérons les contrats de données comme notre véhicule pour améliorer la qualité des données chez GoCardless. Nous changeons la culture des données au sein de l'organisation, soutenue par notre infrastructure de données de pointe et garantie par un contrat de données.
Si vous sentez que GoCardless vous plaît et que vous souhaitez en savoir plus sur la vie chez GoCardless, vous pouvez trouver nos publications sur Twitter , Instagram etLinkedIn .
Êtes-vous intéressé à rejoindre GoCardless ? Consultez notre tableau des emplois ici .