การใช้สัญญาข้อมูลที่ 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 หรือไม่? ดูบอร์ดงานของเราที่นี่