Implementación de contratos de datos en GoCardless

Nov 28 2022
En GoCardless, utilizamos contratos de datos para mejorar la calidad y la confiabilidad de los datos. Hemos estado en este viaje durante casi un año y, aunque hemos aprendido algo, estamos haciendo un gran progreso.

En GoCardless, utilizamos contratos de datos para mejorar la calidad y la confiabilidad de los datos . Hemos estado en este viaje durante casi un año y, aunque hemos aprendido algo, estamos haciendo un gran progreso.

Hoy, quiero compartir un poco sobre cómo implementamos los contratos de datos en GoCardless.

Una breve introducción a los contratos de datos

Si no está familiarizado con los contratos de datos, le recomiendo leer primero mi publicación de diciembre del año pasado donde presenté el concepto y lo que pretendemos lograr con él en GoCardless, pero para resumir brevemente, es la forma en que generamos, consumimos y administramos. nuestros datos. Estamos pasando a un modelo en el que somos mucho más deliberados acerca de los datos que producimos para el consumo: queremos que sean de buena calidad, con esquemas, versiones y documentación.

El contrato de datos define la estructura de los datos, sus propiedades y proporciona las interfaces para interactuar con los datos, que para nosotros suele ser GCP Pub/Sub o BigQuery . Es efectivamente una API para nuestros datos .

Construyendo sobre nuestra plataforma de infraestructura

En GoCardless contamos con una excelente plataforma de infraestructura de autoservicio a la que llamamos Utopía. Es cómo administramos nuestros recursos de GCP e implementamos servicios en nuestro clúster de Kubernetes, y tiene como objetivo promover la autonomía y la propiedad. Cualquier configuración en Utopía debe ser de autoservicio, documentada y verificable.

¡Esto se alinea perfectamente con nuestros objetivos para los contratos de datos! Así que fue una obviedad construir nuestra implementación sobre Utopía. También nos dio la capacidad de implementar y administrar cualquier recurso de servicio que necesitáramos para ayudar a nuestros usuarios a administrar sus datos. Eso nos hizo pensar... Dado un contrato de datos que documenta suficientemente los datos y sus propiedades, ¿podemos configurar e implementar todo lo que necesitamos para administrar esos datos de acuerdo con nuestros requisitos de usabilidad, seguridad y privacidad? Después de un pico rápido, la respuesta fue sí .

Para obtener más detalles sobre Utopía, consulte nuestro tutorial "Primeros pasos" que abrimos el año pasado .

Definición de un contrato de datos

Así es como se ve un contrato de datos en 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(),
      ],
    },
  },
}

Implementación del contrato de datos

Una vez que los propios propietarios de los datos fusionan la definición del contrato de datos en un repositorio de Git, creamos los siguientes recursos, servicios e implementaciones.

Todo esto se hace en nombre de los propietarios de los datos. Los recursos de GCP y los servicios de Kubernetes son por contrato de datos, por lo que algo que afecta a una canalización no afectará a otra.

Los recursos de GCP están dentro de sus propios proyectos de GCP de servicios, lo que otorga explícitamente a los propietarios de los datos la autonomía para administrarlos y la responsabilidad de hacerlo. Las alertas de los servicios de Kubernetes se enrutan a los propietarios de los datos, ya que, por lo general, estarán mejor ubicados para manejarlas. De lo contrario, el equipo de Infraestructura de datos siempre está ahí para brindar soporte de segunda línea.

Nuestra implementación de contratos de datos está diseñada para ser flexible . No nos importa cómo se estructuran los datos, siempre que tengan toda la información que necesitamos para construir e implementar los servicios y recursos utilizados para administrar esos datos. Permitimos que los usuarios elijan los servicios que necesitan, y descubrimos que casi un tercio de los usuarios han optado por no implementar Pub/Sub, y muchos optan por no crear una tabla de BigQuery, lo que lo convierte en una buena opción para servicios entre servicios. casos de uso de la comunicación. Todo esto es parte de cómo promovemos la autonomía de nuestros generadores de datos.

También usamos el contrato y los metadatos que contiene para actualizar los servicios centralizados, por ejemplo, nuestro catálogo de datos. Además, debido a que usamos herramientas como BigQuery y Looker, aunque los datos están segregados para promover la propiedad y la autonomía, no están aislados : puede consultar datos de diferentes proyectos de GCP sin costo ni limitaciones, lo que permite que los consumidores se unan. conjuntos de datos y encuentre información sin importar quién posee y administra los datos subyacentes.

No se trata solo de la implementación.

Esta implementación es obviamente muy específica para nosotros. Tenemos una excelente plataforma de infraestructura en la que podemos construir que encajaba perfectamente con lo que queremos lograr con los contratos de datos. Nos ha permitido construir lo que llamamos nuestra infraestructura de datos impulsada por contrato , donde desde un contrato de datos podemos implementar todas las herramientas y servicios necesarios para generar, administrar y consumir esos datos.

Pero la implementación no es la parte más importante. Como escribió recientemente Tristan Handy , lo que importa es la “identificación del problema y la alineación con los tipos de garantías que necesitamos que nos proporcionen nuestros sistemas”.

En última instancia, vemos los contratos de datos como nuestro vehículo para mejorar la calidad de los datos en GoCardless. Estamos cambiando la cultura de datos en la organización, con el respaldo de nuestra infraestructura de datos, la mejor de su clase, y garantizado por un contrato de datos.

Si cree que GoCardless le atrae y le gustaría obtener más información sobre Life at GoCardless, puede encontrar nuestras publicaciones en Twitter , Instagram yLinkedIn _

¿Está interesado en unirse a GoCardless? Vea nuestra bolsa de trabajo aquí .