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