เส้นทางอันไม่เหมือนใครของสตาร์ทอัพในมุมมองของ CEO
- การที่สตาร์ทอัพดำเนินงานแบบเงียบ ๆ นาน 5 ปีถือเป็นเรื่องไม่ปกติ
- เราต้องการสร้างผลิตภัณฑ์ที่น่าทึ่งก่อนเปิดตัวสู่สาธารณะ และระหว่างทางก็ได้จ้างบุคลากรชั้นเยี่ยม หา early customer และทำงานร่วมกับนักลงทุน
- แม้ว่านี่จะไม่ใช่วิธีที่เป็นธรรมชาติสำหรับสตาร์ทอัพ แต่ก็ทำให้เราสร้างสิ่งต่าง ๆ ได้มากมาย
เหตุผลที่เราสร้างสิ่งนี้
- Antithesis เป็นส่วนต่อเนื่องของเรื่องราวที่เริ่มต้นจากบริษัทก่อนหน้าชื่อ FoundationDB
- เราต้องการสร้างฐานข้อมูลแบบกระจายที่ขยายระบบได้และทนทานต่อความขัดข้อง แต่ปัญหาที่ยากที่สุดคือการทดสอบมันและมั่นใจในความถูกต้อง
- ปัญหาพื้นฐานของการพัฒนาซอฟต์แวร์คือ นักพัฒนาต้องรับมือกับสถานการณ์ที่คาดไม่ถึง
สิ่งที่เราสร้าง
- ก่อนจะเขียนฐานข้อมูล เราได้เขียนระบบจำลองเครือข่ายแบบ event-driven ที่เป็น deterministic อย่างสมบูรณ์ขึ้นมาก่อน
- เมื่อพบบั๊กผ่านระบบนี้ เราสามารถรันซ้ำด้วย random seed เดิมเพื่อไล่ตามบั๊กได้
- FoundationDB เป็นฐานข้อมูลที่แทบไม่มีบั๊ก และแทบไม่มีบั๊กที่ลูกค้ารายงานเข้ามาเลย
สิ่งที่เราสร้าง
- เราได้เขียน hypervisor เพื่อทำให้ซอฟต์แวร์ใด ๆ ก็ตามกลายเป็น deterministic ได้
- แพลตฟอร์มนี้สามารถค้นหาบั๊กในซอฟต์แวร์และทำให้เกิดซ้ำได้อย่างสมบูรณ์แบบ
- ปัจจุบันเรามุ่งเน้นที่การทดสอบ reliability และ fault tolerance ของ distributed systems
ติดต่อ?
- เราอยากพูดคุยกับองค์กรที่ให้ความสำคัญกับ reliability ของ distributed systems และ productivity ด้านวิศวกรรม
- หากมีคำถามหรือความคิดเห็น สามารถติดต่อได้ทาง TwitterX หรือ contact@antithesis.com
ความเห็นของ GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือ แนวทางการทดสอบแบบ deterministic ทำให้สามารถสร้างซอฟต์แวร์ที่เกือบสมบูรณ์แบบได้ ซึ่งช่วยเพิ่ม productivity ของทีมวิศวกรรมได้อย่างมากและลดเวลาที่ใช้ในการพบบั๊ก
- แพลตฟอร์มที่ Antithesis นำเสนอมีศักยภาพในการเปลี่ยนกระบวนทัศน์ของการพัฒนาซอฟต์แวร์ และอาจส่งผลกระทบอย่างมากต่อชุมชนวิศวกรรม
- บทความนี้นำเสนอแนวทางเชิงนวัตกรรมเพื่อก้าวข้ามข้อจำกัดของการทดสอบซอฟต์แวร์ ซึ่งเป็นข้อมูลที่น่าสนใจและมีประโยชน์อย่างยิ่งสำหรับผู้ที่ทำงานในแวดวงเทคโนโลยี
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
sledmadsimเพื่อเขียนบริการสไตล์ async/await และในการทดสอบก็แทนที่องค์ประกอบที่ไม่เป็นเชิงกำหนดทั้งหมดด้วย executor แบบกำหนดได้