1 คะแนน โดย GN⁺ 2024-11-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ไม่พลาดเมื่อสร้างระบบบัญชีสำหรับสตาร์ทอัป

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

ความสำคัญของระบบบัญชี

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

โมเดลข้อมูลของระบบบัญชีแบบบันทึกสองด้าน

  • ระบบบัญชีแบบบันทึกสองด้านประกอบด้วย 3 เอนทิตี ได้แก่ account, entry และ transaction
  • account แสดงการเปลี่ยนแปลงของมูลค่า ส่วน entry แสดงการไหลของเงินระหว่าง account
  • transaction ช่วยรับประกันว่า entry จะถูกจับคู่กันอย่างถูกต้อง

ระบบบัญชีสองแบบ

  • ระบบบัญชีคืออินเทอร์เฟซของสมุดบัญชีที่มองจากภายนอก ส่วนระบบวิศวกรรมคือการทำให้สมุดบัญชีนั้นทำงานจริง
  • ระบบบัญชีต้องการความพร้อมใช้งานสูงและเวลาแฝงต่ำ ขณะที่ระบบวิศวกรรมต้องการความสอดคล้องที่เข้มงวดและความถูกต้องของข้อมูล

วิธีการทำงานของ entry

  • entry สามารถอยู่ได้ใน 3 สถานะ ได้แก่ pending, discarded และ posted
  • entry จะถูกสร้างในสถานะ pending เสมอ และ entry ที่ถูก discarded สามารถถูกแทนที่ด้วย entry ที่ posted ได้

วิธีการทำงานของ transaction

  • transaction จะถูกโพสต์ก็ต่อเมื่อ entry ถูก posted หรือ discarded เท่านั้น
  • หาก transaction ล้มเหลวบางส่วน ก็สามารถยกเลิกในเชิงความหมายได้ด้วย compensating entry

วิธีการทำงานของ account

  • account เชื่อมโยงกับ entry ได้หลายรายการ และยอดคงเหลือรวมต้องตรงกับผลรวมของยอดคงเหลือรายรายการของ entry ทั้งหมด
  • วิธีคำนวณยอดคงเหลือรวมจะแตกต่างกันไปตามยอดคงเหลือปกติของ account

บทสรุป

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

1 ความคิดเห็น

 
GN⁺ 2024-11-30
ความเห็นจาก Hacker News
  • ในกรณีของลูกค้า Synapse มีเงินจำนวนมากหายไป ธนาคารต้องควบคุมการไหลของเงินอย่างเข้มงวด แต่ฟินเทคกลับรวบรวมเงินทั้งหมดไว้ในบัญชี FBO และสร้างบัญชีแยกประเภทเพื่อติดตามมัน ในกรณีของ Synapse ยอดคงเหลือลูกค้าที่บันทึกไว้ในบัญชีแยกประเภทมากกว่าเงินที่มีอยู่จริงในบัญชี FBO มีแนวโน้มว่านี่เป็นผลจากบัญชีแยกประเภทที่บกพร่องมากกว่าการฉ้อโกง ขอแนะนำว่าอย่านำเงินไปฝากในบัญชีเงินฝากของฟินเทค และให้ใช้ธนาคารจริงแทน ฟินเทคมักอ้างว่าเงินฝากได้รับความคุ้มครองจากประกัน FDIC แต่สิ่งนี้คุ้มครองเฉพาะกรณีที่ธนาคารต้นทางล้มละลายเท่านั้น

  • จากการทำงานที่ Google ได้เรียนรู้เรื่องการยอมแลกความน่าเชื่อถือหรือความถูกต้องบางส่วนเพื่อให้ได้ความสามารถในการขยายระบบ เมื่อรองรับคำขอหลายล้านครั้ง บางส่วนอาจล้มเหลวได้ และนี่สะท้อนถึงความต่างของแนวคิดทางวิศวกรรม เวลาที่เปิด Gmail ก็มักเกิดข้อผิดพลาดได้ แต่ผู้ใช้แก้ได้ด้วยการรีเฟรช หากความทนทานของระบบจัดเก็บข้อมูลอยู่ที่ 99.99999% ในลูกค้า 2 พันล้านคน ก็อาจมี 200 คนที่ต้องเจอความไม่สะดวก

  • เน้นย้ำความสำคัญของความรู้เฉพาะโดเมนในภาวะผู้นำด้านวิศวกรรม หากทำงานในบริษัทการเงิน ก็จำเป็นต้องเข้าใจเรื่องการเงิน และสิ่งนี้ก็เป็นจริงเช่นกันในงานสื่อสารมวลชนหรือพาณิชย์ องค์กรที่ประสบความสำเร็จจะใส่คำถามที่ไม่ใช่ด้านเทคนิคแต่เกี่ยวข้องกับโดเมนเข้าไปในการสัมภาษณ์ทีมเทคนิค

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

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

  • มีหลายความเห็นที่สนับสนุนระบบบัญชีแบบบันทึกรายการทางเดียว แม้ว่าระบบแบบนี้อาจง่ายกว่า แต่การใช้ระบบบัญชีคู่จะดีกว่า กำลังมองหาแหล่งข้อมูลด้านบัญชีสำหรับโปรแกรมเมอร์

  • มีความเข้าใจผิดเกี่ยวกับหลักการ "make it work, make it right, make it fast" โดย "make it right" คือขั้นตอนที่สอง และงานจะหยุดอยู่ตรงนั้นจนกว่าระบบจะทำงานได้อย่างถูกต้อง การปรับให้เหมาะที่สุดจะเริ่มหลังจากแก้ทุกปัญหาแล้วเท่านั้น

  • หากไม่มีการทดสอบ ก็อาจเกิดปัญหาเงินหายไปจากธุรกรรมได้ การมองว่าเรื่องแบบนี้เป็นเรื่องปกติเมื่อสร้างระบบการเงินเป็นสิ่งที่ผิด

  • หากพยายามสร้างบางส่วนของธนาคารขึ้นมาใหม่ ก็ควรอ้างอิงระบบที่ผ่านการพิสูจน์แล้ว ตัวอย่างเช่น สามารถดูสคีมาธุรกรรมเงินฝากของระบบ core banking ที่ใช้ในสถาบันการเงินขนาดเล็กและขนาดกลางในสหรัฐฯ ได้

  • ซอฟต์แวร์ที่เกี่ยวข้องกับเงินต้องได้รับการดูแลอย่างระมัดระวังอย่างยิ่ง และต้องตระหนักถึงความผิดพลาดในอดีต เรื่องอื้อฉาวของไปรษณีย์อังกฤษแสดงให้เห็นผลลัพธ์จริงของปัญหาเหล่านี้