Thực hiện hợp đồng dữ liệu tại GoCardless
Tại GoCardless, chúng tôi đang sử dụng Hợp đồng dữ liệu để cải thiện chất lượng và độ tin cậy của dữ liệu . Chúng tôi đã thực hiện cuộc hành trình này được gần một năm và trong khi chúng tôi có một số bài học, chúng tôi đang đạt được những tiến bộ lớn.
Hôm nay, tôi muốn chia sẻ một chút về cách chúng tôi triển khai Hợp đồng dữ liệu tại GoCardless.
Giới thiệu ngắn gọn về Hợp đồng dữ liệu
Nếu bạn không quen thuộc với Hợp đồng dữ liệu, trước tiên tôi khuyên bạn nên đọc bài đăng của mình từ tháng 12 năm ngoái , nơi tôi đã giới thiệu khái niệm này và những gì chúng tôi đang hướng tới để đạt được với nó tại GoCardless, nhưng để tóm tắt ngắn gọn, đó là cách chúng tôi tạo, sử dụng và quản lý Dữ liệu của chúng tôi. Chúng tôi đang chuyển sang một mô hình mà chúng tôi cân nhắc kỹ lưỡng hơn nhiều về dữ liệu chúng tôi tạo ra để tiêu thụ — chúng tôi muốn dữ liệu đó có chất lượng tốt, với các lược đồ, phiên bản và tài liệu.
Hợp đồng dữ liệu xác định cấu trúc của dữ liệu, các thuộc tính của dữ liệu và cung cấp các giao diện để tương tác với dữ liệu — đối với chúng tôi, giao diện này thường là GCP Pub/Sub và/hoặc BigQuery . Đó thực sự là một API cho dữ liệu của chúng tôi .

Xây dựng trên nền tảng cơ sở hạ tầng của chúng tôi
Tại GoCardless, chúng tôi có một nền tảng cơ sở hạ tầng tự phục vụ tuyệt vời mà chúng tôi gọi là Utopia. Đó là cách chúng tôi quản lý tài nguyên GCP và triển khai các dịch vụ cho cụm Kubernetes của chúng tôi, đồng thời nhằm mục đích thúc đẩy quyền tự chủ và quyền sở hữu. Mọi cấu hình trong Utopia phải tự phục vụ, được ghi lại và có thể kiểm chứng.

Điều này hoàn toàn phù hợp với mục tiêu của chúng tôi đối với Hợp đồng dữ liệu! Vì vậy, thật dễ dàng để xây dựng triển khai của chúng tôi trên Utopia. Nó cũng cho chúng tôi khả năng triển khai và quản lý bất kỳ tài nguyên dịch vụ nào mà chúng tôi cần để giúp người dùng quản lý dữ liệu của họ. Vì vậy, điều đó khiến chúng tôi phải suy nghĩ… Với một Hợp đồng dữ liệu có đủ tài liệu về dữ liệu và các thuộc tính của dữ liệu, chúng tôi có thể thiết lập và triển khai mọi thứ chúng tôi cần để quản lý dữ liệu đó theo các yêu cầu về khả năng sử dụng, bảo mật và quyền riêng tư của chúng tôi không? Sau một thời gian tăng đột biến, câu trả lời là có .
Để biết thêm chi tiết về Utopia, hãy xem hướng dẫn "Bắt đầu" mà chúng tôi đã mở nguồn vào năm ngoái .
Xác định hợp đồng dữ liệu
Đây là giao diện của Hợp đồng dữ liệu tại 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(),
],
},
},
}
Triển khai hợp đồng dữ liệu
Sau khi định nghĩa Hợp đồng dữ liệu được chính chủ sở hữu dữ liệu hợp nhất vào kho lưu trữ Git, chúng tôi tạo các tài nguyên, dịch vụ và triển khai sau.

Tất cả điều này được thực hiện thay mặt cho chủ sở hữu dữ liệu. Tài nguyên GCP và dịch vụ Kubernetes là theo Hợp đồng dữ liệu, do đó, thứ gì đó ảnh hưởng đến một quy trình sẽ không ảnh hưởng đến quy trình khác.
Các tài nguyên GCP nằm trong các dự án GCP dịch vụ của riêng họ, trao cho chủ sở hữu dữ liệu quyền tự chủ để quản lý chúng một cách rõ ràng và chịu trách nhiệm thực hiện điều đó. Cảnh báo từ các dịch vụ Kubernetes được chuyển đến chủ sở hữu dữ liệu, vì thông thường, họ sẽ được đặt ở vị trí tốt nhất để xử lý chúng. Nếu không, nhóm Cơ sở hạ tầng dữ liệu luôn sẵn sàng hỗ trợ tuyến hai.
Việc triển khai Hợp đồng dữ liệu của chúng tôi được thiết kế linh hoạt . Chúng tôi không quan tâm dữ liệu được cấu trúc như thế nào, miễn là dữ liệu đó có tất cả thông tin chúng tôi cần để xây dựng và triển khai các dịch vụ cũng như tài nguyên được sử dụng để quản lý dữ liệu đó. Chúng tôi cho phép người dùng chọn những dịch vụ họ cần và chúng tôi nhận thấy rằng gần một phần ba người dùng đã chọn không triển khai Pub/Sub và nhiều người chọn không tạo bảng BigQuery, điều này làm cho nó phù hợp với các dịch vụ liên kết các trường hợp sử dụng giao tiếp. Tất cả điều này là một phần trong cách chúng tôi thúc đẩy quyền tự chủ của các trình tạo dữ liệu của mình.
Chúng tôi cũng sử dụng hợp đồng và siêu dữ liệu trong đó để cập nhật các dịch vụ tập trung, chẳng hạn như danh mục dữ liệu của chúng tôi. Hơn nữa, vì chúng tôi đang sử dụng các công cụ như BigQuery và Looker, mặc dù dữ liệu được tách biệt để thúc đẩy quyền sở hữu và quyền tự chủ, nhưng điều đó không phải là riêng biệt — bạn có thể truy vấn dữ liệu từ các dự án GCP khác nhau mà không phải trả bất kỳ chi phí hoặc giới hạn nào, cho phép người tiêu dùng tham gia bộ dữ liệu và tìm thông tin chi tiết bất kể ai sở hữu và quản lý dữ liệu cơ bản.

Đó không phải là tất cả về việc thực hiện
Việc thực hiện này rõ ràng là rất cụ thể đối với chúng tôi. Chúng tôi tình cờ có một nền tảng cơ sở hạ tầng tuyệt vời mà chúng tôi có thể xây dựng trên nền tảng phù hợp hoàn hảo cho những gì chúng tôi muốn đạt được với Hợp đồng dữ liệu. Nó đã cho phép chúng tôi xây dựng cái mà chúng tôi gọi là cơ sở hạ tầng dữ liệu theo hợp đồng của mình , trong đó từ Hợp đồng dữ liệu, chúng tôi có thể triển khai tất cả các công cụ và dịch vụ cần thiết để tạo, quản lý và sử dụng dữ liệu đó.
Nhưng việc thực hiện không phải là phần quan trọng nhất. Như Tristan Handy đã viết gần đây , điều quan trọng là “xác định vấn đề và sự liên kết về các loại đảm bảo mà chúng tôi cần hệ thống của mình cung cấp cho chúng tôi”.
Cuối cùng, chúng tôi coi Hợp đồng dữ liệu là phương tiện để cải thiện chất lượng dữ liệu tại GoCardless. Chúng tôi đang thay đổi văn hóa dữ liệu tại tổ chức, được hỗ trợ bởi cơ sở hạ tầng dữ liệu tốt nhất trong lớp của chúng tôi và được đảm bảo bởi Hợp đồng dữ liệu.
Nếu bạn cảm thấy GoCardless hấp dẫn bạn và bạn muốn tìm hiểu thêm về Cuộc sống tại GoCardless, bạn có thể tìm thấy các bài đăng của chúng tôi trên Twitter , Instagram vàLinkedIn .
Bạn có muốn tham gia GoCardless không? Xem bảng công việc của chúng tôi ở đây .