การใช้สัญญาข้อมูลที่ GoCardless

Nov 28 2022
ที่ GoCardless เราใช้สัญญาข้อมูลเพื่อปรับปรุงคุณภาพและความน่าเชื่อถือของข้อมูล เราอยู่บนเส้นทางนี้มาเกือบปีแล้ว และในขณะที่เราได้เรียนรู้บางอย่าง เรากำลังก้าวหน้าไปมาก

ที่ GoCardless เราใช้สัญญาข้อมูลเพื่อ ปรับปรุง คุณภาพข้อมูลและความน่าเชื่อถือ เราอยู่บนเส้นทางนี้มาเกือบปีแล้ว และในขณะที่เราได้เรียนรู้บางอย่างเรากำลังก้าวหน้าไปมาก

วันนี้ ฉันต้องการแชร์เล็กน้อยเกี่ยวกับวิธีที่เราใช้สัญญาข้อมูลกับ 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 จะถูกส่งไปยังเจ้าของข้อมูล ซึ่งโดยปกติแล้วระบบจะจัดการการแจ้งเตือนเหล่านั้นได้ดีที่สุด หากไม่มี ทีมโครงสร้างพื้นฐานข้อมูลจะคอยให้การสนับสนุนในบรรทัดที่สองเสมอ

การดำเนิน การตามสัญญาข้อมูลของเราได้รับการออกแบบให้มีความยืดหยุ่น เราไม่สนใจว่าข้อมูลมีโครงสร้างอย่างไร ตราบใดที่มีข้อมูลทั้งหมดที่เราต้องการเพื่อสร้างและปรับใช้บริการและทรัพยากรที่ใช้ในการจัดการข้อมูลนั้น เราอนุญาตให้ผู้ใช้เลือกบริการที่ต้องการ และเราพบว่าผู้ใช้เกือบหนึ่งในสามเลือกที่จะไม่ใช้ Pub/Sub และหลายคนเลือกที่จะไม่สร้างตาราง BigQuery ซึ่งทำให้เหมาะสำหรับบริการระหว่างกัน กรณีการใช้งานด้านการสื่อสาร ทั้งหมดนี้เป็นส่วนหนึ่งของวิธีที่เราส่งเสริมความเป็นอิสระของตัวสร้างข้อมูลของเรา

นอกจากนี้ เรายังใช้สัญญาและข้อมูลเมตาภายในสัญญาเพื่ออัปเดตบริการส่วนกลาง เช่น แค็ตตาล็อกข้อมูลของเรา ยิ่งไปกว่านั้น เนื่องจากเราใช้เครื่องมือเช่น BigQuery และ Looker แม้ว่าข้อมูลจะถูกแยกออกจากกันเพื่อส่งเสริมความเป็นเจ้าของและอิสระแต่ก็ไม่ได้แยกจากกันคุณสามารถสืบค้นข้อมูลจากโครงการ GCP ต่างๆ ได้โดยไม่มีค่าใช้จ่ายหรือข้อจำกัดใดๆ ทำให้ผู้บริโภคสามารถเข้าร่วมได้ ชุดข้อมูลและค้นหาข้อมูลเชิงลึกไม่ว่าใครจะเป็นเจ้าของและจัดการข้อมูลพื้นฐานก็ตาม

ไม่ใช่ทั้งหมดเกี่ยวกับการนำไปใช้งาน

เห็นได้ชัดว่าการใช้งานนี้มีความเฉพาะเจาะจงสำหรับเรามาก เรามีแพลตฟอร์มโครงสร้างพื้นฐานที่ยอดเยี่ยมที่เราสามารถสร้างได้ซึ่งเหมาะสมอย่างยิ่งสำหรับสิ่งที่เราต้องการบรรลุด้วยสัญญาข้อมูล ช่วยให้เราสามารถสร้างสิ่งที่เราเรียกว่าโครงสร้างพื้นฐานข้อมูลที่ขับเคลื่อนด้วยสัญญาซึ่งจากสัญญาข้อมูล เราสามารถปรับใช้เครื่องมือและบริการทั้งหมดที่จำเป็นในการสร้าง จัดการ และใช้ข้อมูลนั้น

แต่การนำไปใช้ไม่ใช่ส่วนที่สำคัญที่สุด ตามที่Tristan Handy เขียนเมื่อเร็วๆ นี้สิ่งสำคัญคือ “การระบุปัญหาและการจัดแนวประเภทการรับประกันที่เราต้องการให้ระบบของเราจัดหาให้เรา”

ในที่สุดเราเห็นว่าสัญญาข้อมูลเป็นเรือ ของเรา ในการปรับปรุงคุณภาพข้อมูลที่ GoCardless เรากำลังเปลี่ยนแปลงวัฒนธรรมข้อมูลในองค์กร โดยได้รับการสนับสนุนโดยโครงสร้างพื้นฐานข้อมูลที่ดีที่สุดของเรา และรับประกันโดยสัญญาข้อมูล

หากคุณรู้สึกว่า GoCardless ดึงดูดใจคุณ และคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับ Life at GoCardless คุณสามารถค้นหาโพสต์ของเราได้ที่Twitter , Instagramและลิงค์อิน .

คุณสนใจเข้าร่วม GoCardless หรือไม่? ดูบอร์ดงานของเราที่นี่