GoCardless에서 데이터 계약 구현

Nov 28 2022
GoCardless에서는 데이터 계약을 사용하여 데이터 품질과 안정성을 개선하고 있습니다. 우리는 거의 1년 동안 이 여정을 진행해 왔으며 몇 가지 배움이 있는 동안 큰 진전을 이루고 있습니다.

GoCardless에서는 데이터 계약을 사용하여 데이터 품질과 안정성을 개선하고 있습니다 . 우리는 거의 1년 동안 이 여정을 진행해 왔으며 몇 가지 배움이 있는 동안 큰 진전을 이루고 있습니다.

오늘 저는 GoCardless에서 데이터 계약을 구현한 방법에 대해 조금 공유하고 싶습니다.

데이터 계약에 대한 간략한 소개

데이터 계약에 익숙하지 않은 경우 GoCardless에서 개념과 우리가 이를 통해 달성하고자 하는 목표를 소개한 작년 12월의 게시물을 먼저 읽는 것이 좋습니다. 간단히 요약하면 우리가 생성, 소비 및 관리하는 방식입니다. 우리의 데이터. 우리는 소비를 위해 생산하는 데이터에 대해 훨씬 더 신중한 모델로 이동하고 있습니다 . 우리는 스키마, 버전 관리 및 문서와 함께 양질의 데이터를 원합니다.

데이터 계약은 데이터의 구조와 속성을 정의하고 데이터와 상호작용하기 위한 인터페이스를 제공합니다. 일반적으로 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 서비스의 경고는 데이터 소유자에게 라우팅됩니다. 일반적으로 경고를 처리하는 데 가장 적합한 위치에 있기 때문입니다. 그렇지 않은 경우 데이터 인프라 팀이 항상 2차 지원을 위해 대기하고 있습니다.

당사의 데이터 계약 구현은 유연 하게 설계되었습니다 . 해당 데이터를 관리하는 데 사용되는 서비스와 리소스를 구축하고 배포하는 데 필요한 모든 정보가 데이터에 있는 한 데이터가 어떻게 구조화되어 있는지는 중요하지 않습니다. 우리는 사용자가 필요한 서비스를 선택할 수 있도록 하고 있으며 거의 ​​3분의 1의 사용자가 Pub/Sub를 배포하지 않기로 선택했으며 많은 사용자가 BigQuery 테이블을 만들지 않기로 선택하여 서비스 간 사용에 적합함을 확인했습니다. 통신 사용 사례. 이 모든 것은 데이터 생성기의 자율성을 촉진하는 방법의 일부입니다.

또한 데이터 카탈로그와 같은 중앙 집중식 서비스를 업데이트하기 위해 계약과 계약 내의 메타데이터를 사용합니다. 또한 BigQuery 및 Looker와 같은 도구를 사용하고 있기 때문에 소유권과 자율성을 증진하기 위해 데이터가 분리되지만 사일로화되지 않습니다 . 비용이나 제한 없이 다른 GCP 프로젝트의 데이터를 쿼리할 수 있으므로 소비자가 참여할 수 있습니다. 기본 데이터를 소유하고 관리하는 사람에 관계없이 데이터 세트를 만들고 통찰력을 찾으십시오.

구현이 전부가 아니다.

이 구현은 분명히 우리에게 매우 구체적입니다. 우리는 Data Contracts로 달성하고자 하는 목표에 완벽하게 부합하는 우수한 인프라 플랫폼을 구축할 수 있었습니다. 이를 통해 우리는 계약 기반 데이터 인프라 라고 하는 것을 구축할 수 있었으며 데이터 계약에서 해당 데이터를 생성, 관리 및 소비하는 데 필요한 모든 도구와 서비스를 배포할 수 있습니다.

그러나 구현이 가장 중요한 부분은 아닙니다. Tristan Handy가 최근에 쓴 것처럼 중요한 것은 "문제를 식별하고 시스템이 제공해야 하는 보장 유형에 대한 정렬"입니다.

궁극적으로 우리는 데이터 계약을 GoCardless에서 데이터 품질을 개선하기 위한 그릇 으로 봅니다 . 우리는 동급 최고의 데이터 인프라로 지원되고 데이터 계약으로 보장되는 조직의 데이터 문화를 변화시키고 있습니다.

GoCardless에 매력을 느끼고 GoCardless에서의 생활에 대해 자세히 알아보려면 Twitter , Instagram 및링크드인 .

GoCardless 가입에 관심이 있으십니까? 여기 에서 채용 정보 게시판 을 참조 하십시오 .