Automerge 3.0 ลดการใช้หน่วยความจำลง 10 เท่า จุดประกายการถิ่มถ้วยของนักพัฒนาเกี่ยวกับโซลูชัน Local-First

ทีมชุมชน BigGo
Automerge 3.0 ลดการใช้หน่วยความจำลง 10 เท่า จุดประกายการถิ่มถ้วยของนักพัฒนาเกี่ยวกับโซลูชัน Local-First

Automerge 3.0 ได้เปิดตัวพร้อมกับการปรับปรุงประสิทธิภาพอย่างมากที่กำลังเปลี่ยนแปลงวิธีคิดของนักพัฒนาเกี่ยวกับแอปพลิเคชัน local-first เครื่องมือซิงค์ข้อมูลแบบร่วมมือนี้ใช้หน่วยความจำน้อยกว่าเวอร์ชันก่อนหน้ามากกว่า 10 เท่า โดยเปลี่ยนเอกสารที่เคยใช้หน่วยความจำหลายร้อยเมกะไบต์ให้กลายเป็นไฟล์ที่จัดการได้เพียงไม่กี่เมกะไบต์

การเปิดตัวครั้งนี้ได้จุดประกายการอฟ้าอย่างเข้มข้นในชุมชนนักพัฒนาเกี่ยวกับการเลือกโซลูชันซิงค์ที่เหมาะสม หลายคนกำลังชั่งน้ำหนักระหว่าง Automerge กับทางเลือกอื่นๆ เช่น Electric SQL และ YJS ซึ่งแต่ละตัวมีแนวทางที่แตกต่างกันสำหรับความท้าทายพื้นฐานเดียวกัน: การรักษาข้อมูลให้ซิงค์กันระหว่างอุปกรณ์โดยไม่ต้องพึ่งพาการเชื่อมต่ออินเทอร์เน็ตอย่างต่อเนื่อง

การเปรียบเทียบการใช้หน่วยความจำ:

  • Automerge 2.0: 700MB (เอกสาร Moby Dick )
  • Automerge 3.0: 1.3MB (เอกสารเดียวกัน)
  • การปรับปรุง: การลดลงของการใช้หน่วยความจำมากกว่า 10 เท่า

การปฏิวัติหน่วยความจำเปลี่ยนเกม

การปรับปรุงที่โดดเด่นที่สุดมาจากการแสดงผลรันไทม์แบบบีบอัดใหม่ของ Automerge ในขณะที่เวอร์ชัน 2.0 ต้องการหน่วยความจำ 700MB เพื่อจัดการเอกสารขนาดเท่ากับ Moby Dick เวอร์ชัน 3.0 สามารถทำงานเดียวกันได้ด้วยเพียง 1.3MB นี่ไม่ใช่แค่เรื่องของตัวเลข แต่เป็นการเปลี่ยนแปลงพื้นฐานในสิ่งที่เป็นไปได้กับแอปพลิเคชันแบบร่วมมือ

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

CRDT ย่อมาจาก Conflict-free Replicated Data Type ซึ่งเป็นโครงสร้างข้อมูลที่สามารถอัปเดตแยกกันบนอุปกรณ์ต่างๆ และรวมกันโดยอัตโนมัติโดยไม่มีความขัดแย้ง

การปรับปรุงประสิทธิภาพ:

  • ตัวอย่างเวลาในการโหลด: 17 ชั่วโมง → 9 วินาที
  • การแสดงผลในรันไทม์: ขณะนี้ใช้รูปแบบที่บีบอัดแล้ว
  • รูปแบบไฟล์: เหมือนกับ Automerge 2.0 (รองรับการใช้งานย้อนหลัง)
  • ความเข้ากันได้ของ API: เข้ากันได้แบบย้อนหลังเกือบทั้งหมด

นักพัฒนาชั่งน้ำหนักข้อดีข้อเสียระหว่างโซลูชัน

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

หากคุณต้องการให้ผู้คนร่วมมือกันในเอกสารข้อความที่หลากหลาย Automerge หรือ yjs อาจจะดี หากคุณต้องการมีข้อมูลแอปพลิเคชัน local first ที่เซิร์ฟเวอร์เป็นผู้มีอำนาจ ElectricSQL อาจจะให้บริการคุณได้ดีที่สุด

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

การทำให้ API ง่ายขึ้นแก้ไขจุดเจ็บปวดของนักพัฒนา

นอกเหนือจากประสิทธิภาพแล้ว Automerge 3.0 ยังปรับปรุงอินเทอร์เฟซการเขียนโปรแกรมโดยรวมวิธีการจัดการข้อความ ไลบรารีเคยต้องการให้นักพัฒนาจัดการคลาสต่างๆ สำหรับสตริงแบบร่วมมือและไม่ร่วมมือ ตอนนี้ใช้สตริง JavaScript ปกติสำหรับข้อความแบบร่วมมือโดยค่าเริ่มต้น โดยมีคลาสพิเศษเฉพาะสำหรับกรณีที่ไม่ร่วมมือซึ่งไม่ค่อยพบ

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

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

อ้างอิง: Automerge 3.0