Внедрение контрактов данных в GoCardless
В GoCardless мы используем Data Contracts для повышения качества и надежности данных . Мы находимся в этом путешествии уже почти год, и хотя у нас есть некоторые уроки, мы делаем большой прогресс.
Сегодня я хочу немного рассказать о том, как мы внедрили Data Contracts в GoCardless.
Краткое введение в контракты данных
Если вы не знакомы с контрактами данных, я рекомендую сначала прочитать мой пост от декабря прошлого года , где я представил эту концепцию и то, чего мы стремимся достичь с ее помощью в GoCardless, но вкратце обобщая, это то, как мы генерируем, потребляем и управляем наши данные. Мы переходим к модели, в которой мы гораздо более обдуманно относимся к данным, которые мы производим для потребления — мы хотим, чтобы они были хорошего качества, со схемами, версиями и документацией.
Контракт данных определяет структуру данных, их свойства и предоставляет интерфейсы для взаимодействия с данными — для нас это обычно GCP Pub/Sub и/или BigQuery . Фактически это API для наших данных .

Опираясь на нашу инфраструктурную платформу
В GoCardless у нас есть отличная инфраструктурная платформа самообслуживания, которую мы называем Utopia. Это то, как мы управляем нашими ресурсами GCP и развертываем службы в нашем кластере Kubernetes, и направлено на продвижение автономии и права собственности. Любая конфигурация в Utopia должна быть самообслуживаемой, документированной и проверяемой.

Это идеально согласуется с нашими целями в отношении контрактов данных! Так что было несложно построить нашу реализацию поверх Utopia. Это также дало нам возможность развертывать и управлять любым служебным ресурсом, который нам нужен, чтобы помочь нашим пользователям управлять своими данными. Это заставило нас задуматься… Имея контракт данных, который достаточно документирует данные и их свойства, можем ли мы настроить и развернуть все, что нам нужно для управления этими данными, в соответствии с нашими требованиями к удобству использования, безопасности и конфиденциальности? После быстрого всплеска ответ был да .
Дополнительные сведения об Utopia см. в нашем учебном пособии «Начало работы» , исходный код которого мы открыли в прошлом году .
Определение контракта данных
Вот как выглядит контракт данных в 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(),
],
},
},
}
Развертывание контракта данных
После того как определение контракта данных будет объединено с репозиторием Git самими владельцами данных, мы создадим следующие ресурсы, службы и развертывания.

Все это делается от имени владельцев данных. Ресурсы GCP и сервисы Kubernetes предназначены для каждого контракта данных, поэтому то, что влияет на один конвейер, не повлияет на другой.
Ресурсы GCP находятся в рамках их собственных проектов GCP, что явно дает владельцам данных автономию управлять ими и ответственность за это. Оповещения от сервисов Kubernetes перенаправляются владельцам данных, поскольку обычно они лучше всего подходят для их обработки. Если нет, команда Data Infrastructure всегда готова оказать поддержку второй линии.
Наша реализация Data Contracts разработана с учетом гибкости . Нам все равно, как структурированы данные, если в них есть вся информация, необходимая для создания и развертывания сервисов и ресурсов, используемых для управления этими данными. Мы позволяем пользователям выбирать, какие службы им нужны, и мы обнаружили, что почти треть пользователей решили не развертывать Pub/Sub, и многие предпочитают не создавать таблицу BigQuery, что делает ее подходящей для взаимодействия между службами. коммуникативные варианты использования. Все это является частью того, как мы продвигаем автономию наших генераторов данных.
Мы также используем контракт и содержащиеся в нем метаданные для обновления централизованных сервисов, например, нашего каталога данных. Более того, поскольку мы используем такие инструменты, как BigQuery и Looker, хотя данные разделены , чтобы способствовать праву собственности и автономии, они не разрознены — вы можете запрашивать данные из разных проектов GCP без каких-либо затрат или ограничений, позволяя потребителям присоединяться. наборы данных и находить ценную информацию независимо от того, кто владеет базовыми данными и управляет ими.

Дело не только в реализации
Эта реализация, очевидно, очень специфична для нас. У нас есть отличная инфраструктурная платформа, на которой мы можем основываться, и она идеально подходит для того, чего мы хотим достичь с помощью контрактов данных. Это позволило нам создать то, что мы называем нашей инфраструктурой данных, управляемой контрактами, где на основе контракта данных мы можем развернуть все инструменты и службы, необходимые для создания, управления и использования этих данных.
Но реализация не самая важная часть. Как недавно написал Тристан Хэнди , важно «выявление проблемы и согласование типов гарантий, которые нам должны предоставить наши системы».
В конечном счете , мы рассматриваем Data Contracts как средство для улучшения качества данных в GoCardless. Мы меняем культуру данных в организации, поддерживаемую нашей лучшей в своем классе инфраструктурой данных и гарантированную контрактом данных.
Если вы чувствуете, что GoCardless вам нравится, и что вы хотели бы узнать больше о жизни в GoCardless, вы можете найти наши публикации в Twitter , Instagram иЛинкедИн .
Вы заинтересованы в присоединении к GoCardless? Смотрите нашу доску вакансий здесь .