Menerapkan Kontrak Data di GoCardless

Nov 28 2022
Di GoCardless, kami menggunakan Kontrak Data untuk meningkatkan kualitas dan keandalan data. Kami telah melakukan perjalanan ini selama hampir satu tahun sekarang, dan sementara kami memiliki beberapa pembelajaran, kami membuat kemajuan besar.

Di GoCardless, kami menggunakan Kontrak Data untuk meningkatkan kualitas dan keandalan data . Kami telah melakukan perjalanan ini selama hampir satu tahun sekarang, dan sementara kami memiliki beberapa pembelajaran, kami membuat kemajuan besar.

Hari ini, saya ingin berbagi sedikit tentang bagaimana kami menerapkan Kontrak Data di GoCardless.

Pengantar singkat tentang Kontrak Data

Jika Anda tidak terbiasa dengan Kontrak Data, saya sarankan untuk terlebih dahulu membaca postingan saya dari Desember tahun lalu di mana saya memperkenalkan konsep tersebut dan apa yang ingin kami capai dengannya di GoCardless, tetapi untuk meringkas secara singkat itulah cara kami menghasilkan, menggunakan, dan mengelola data kami. Kami beralih ke model di mana kami lebih berhati-hati tentang data yang kami hasilkan untuk konsumsi — kami ingin kualitasnya bagus, dengan skema, pembuatan versi, dan dokumentasi.

Kontrak Data menentukan struktur data, propertinya, dan menyediakan antarmuka untuk berinteraksi dengan data — yang bagi kami biasanya GCP Pub/Sub dan/atau BigQuery . Ini adalah API yang efektif untuk data kami .

Membangun di atas platform infrastruktur kami

Di GoCardless kami memiliki platform infrastruktur swalayan luar biasa yang kami sebut Utopia. Begitulah cara kami mengelola sumber daya GCP dan menerapkan layanan ke kluster Kubernetes kami, dan bertujuan untuk mempromosikan otonomi dan kepemilikan. Konfigurasi apa pun di Utopia harus dapat dilayani sendiri, didokumentasikan, dan dapat diverifikasi.

Ini selaras dengan tujuan kami untuk Kontrak Data! Jadi sangat mudah untuk membangun implementasi kami di atas Utopia. Itu juga memberi kami kemampuan untuk menyebarkan dan mengelola sumber daya layanan apa pun yang kami butuhkan untuk membantu pengguna kami mengelola data mereka. Sehingga membuat kami berpikir… Dengan Kontrak Data yang cukup mendokumentasikan data dan propertinya, dapatkah kami menyiapkan dan menerapkan semua yang kami perlukan untuk mengelola data tersebut sesuai dengan persyaratan kegunaan, keamanan, dan privasi kami? Setelah lonjakan cepat, jawabannya adalah ya .

Untuk detail lebih lanjut tentang Utopia, lihat tutorial "Memulai" kami yang kami buka tahun lalu .

Mendefinisikan Kontrak Data

Seperti inilah Kontrak Data di 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(),
      ],
    },
  },
}

Menyebarkan Kontrak Data

Setelah definisi Kontrak Data digabungkan ke repositori Git oleh pemilik data itu sendiri, kami membuat sumber daya, layanan, dan penerapan berikut.

Semua ini dilakukan atas nama pemilik data. Resource GCP dan layanan Kubernetes adalah per-Data Contract, sehingga sesuatu yang memengaruhi satu pipeline tidak akan memengaruhi pipeline lainnya.

Resource GCP berada dalam project GCP layanan mereka sendiri, yang secara eksplisit memberikan otonomi kepada pemilik data untuk mengelolanya dan tanggung jawab untuk melakukannya. Peringatan dari layanan Kubernetes dialihkan ke pemilik data, karena biasanya mereka akan ditempatkan paling baik untuk menanganinya. Jika tidak, tim Infrastruktur Data selalu ada untuk dukungan lini kedua.

Penerapan Kontrak Data kami dirancang agar fleksibel . Kami tidak peduli bagaimana struktur datanya, asalkan memiliki semua informasi yang kami perlukan untuk membangun dan menerapkan layanan dan sumber daya yang digunakan untuk mengelola data tersebut. Kami mengizinkan pengguna untuk memilih layanan apa yang mereka butuhkan, dan kami menemukan bahwa hampir sepertiga pengguna telah memilih untuk tidak menerapkan Pub/Sub, dan banyak yang memilih untuk tidak membuat tabel BigQuery, yang membuatnya cocok untuk antar-layanan kasus penggunaan komunikasi. Ini semua adalah bagian dari cara kami mempromosikan otonomi generator data kami.

Kami juga menggunakan kontrak dan metadata di dalamnya untuk memperbarui layanan terpusat, misalnya katalog data kami. Selain itu, karena kami menggunakan alat seperti BigQuery dan Looker, meskipun data dipisahkan untuk mempromosikan kepemilikan dan otonomi, data tidak terpisah — Anda dapat membuat kueri data dari proyek GCP yang berbeda tanpa biaya atau batasan apa pun, memungkinkan konsumen untuk bergabung kumpulan data dan temukan wawasan tidak peduli siapa yang memiliki dan mengelola data yang mendasarinya.

Ini tidak semua tentang implementasi

Implementasi ini jelas sangat spesifik bagi kami. Kami kebetulan memiliki platform infrastruktur luar biasa yang dapat kami bangun yang sangat cocok untuk apa yang ingin kami capai dengan Kontrak Data. Ini telah memungkinkan kami untuk membangun apa yang kami sebut sebagai infrastruktur data berbasis kontrak kami , di mana dari Kontrak Data kami dapat menerapkan semua alat dan layanan yang diperlukan untuk menghasilkan, mengelola, dan menggunakan data tersebut.

Tetapi implementasinya bukanlah bagian terpenting. Seperti yang ditulis Tristan Handy baru-baru ini , yang penting adalah "identifikasi masalah dan keselarasan pada jenis jaminan yang kami butuhkan untuk disediakan oleh sistem kami".

Pada akhirnya kami melihat Kontrak Data sebagai wadah kami untuk meningkatkan kualitas data di GoCardless. Kami sedang mengubah budaya data di organisasi, didukung oleh infrastruktur data kami yang terbaik di kelasnya, dan dijamin oleh Kontrak Data.

Jika Anda merasa bahwa GoCardless menarik bagi Anda dan ingin mengetahui lebih lanjut tentang Kehidupan di GoCardless, Anda dapat menemukan postingan kami di Twitter , Instagram , danLinkedIn .

Apakah Anda tertarik untuk bergabung dengan GoCardless? Lihat papan pekerjaan kami di sini .