8 पॉइंट द्वारा GN⁺ 2024-06-26 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Local-First सॉफ़्टवेयर: ऐसा सॉफ़्टवेयर जो डेटा को मुख्य रूप से लोकल में स्टोर करता है, और केवल ज़रूरत पड़ने पर इंटरनेट के ज़रिए sync या backup करता है
  • Local-First की समस्याएँ
    • यह अच्छा है कि उपयोगकर्ता डेटा का स्वामित्व और नियंत्रण रख सकते हैं
    • लेकिन कई डिवाइसों के बीच online sync के लिए अभी भी एक sync server की ज़रूरत होती है
    • अगर कंपनी बंद हो जाए तो sync server भी गायब हो जाता है, इसलिए sync असंभव हो जाता है
    • इसे कैसे हल किया जाए?

Dropbox का उपयोग करके समाधान

  • cloud sync: Dropbox, iCloud Drive, OneDrive, Google Drive आदि जैसे विभिन्न cloud-आधारित file sync solutions का उपयोग किया जा सकता है
  • फ़ायदे: बहुत से लोग इन्हें पहले से इस्तेमाल करते हैं, और कई implementations होने के कारण इन्हें बदला भी जा सकता है
  • नुकसान: file sync एक सरल protocol है, इसलिए इसमें sync events या conflict resolution की क्षमता कम होती है

Version 1: बहुत सरल तरीका

  • state को फ़ाइल में सेव करें और Dropbox से sync करें
  • अगर दो डिवाइसों पर state बदलती है, तो conflict files बन जाती हैं
  • CRDT(Conflict-free Replicated Data Types) का उपयोग करने पर conflicts को resolve किया जा सकता है
    • CRDT ऐसे data types का संग्रह है जिन्हें हमेशा merge किया जा सकता है
  • conflict files खोलकर state को merge करने और फिर दोबारा सेव करने के तरीके से समाधान किया जा सकता है

Version 2: client-विशिष्ट फ़ाइलें

  • conflicts से बचने के लिए हर client को एक unique फ़ाइल दी जाती है
  • जब दूसरे clients की फ़ाइलें बदलें, तो उसे detect करके merge किया जाता है
  • क्योंकि संशोधन केवल लोकल में होते हैं, Dropbox conflict report नहीं करता

Version 3: operation-based

  • अगर CRDT operation-based है, तो operations को अलग append-only फ़ाइलों में रिकॉर्ड किया जा सकता है
  • हर client अपने ही फ़ाइल में लिखता है, इसलिए conflicts से बचाव होता है
  • जब operation log लंबा हो जाए, तो sync efficiency बढ़ाने के लिए फ़ाइल को chunks में बाँटा जाता है

निष्कर्ष

  • उपयोगकर्ताओं को पूर्ण नियंत्रण और स्वामित्व देने वाले local-first applications बनाने के लिए data sync ज़रूरी है
  • Dropbox जैसी file sync services सरल लेकिन प्रभावी sync तरीका प्रदान करती हैं
  • यह custom solutions जितना real-time sync नहीं देतीं, लेकिन रोज़मर्रा के sync के लिए पर्याप्त हैं
  • उदाहरण के लिए, Apple Photos की तरह दिन के अंत में अपनी फ़ोटो कहीं से भी देख पाना काफ़ी है
  • उपयोगकर्ता अपने cloud का उपयोग करके मुफ़्त में स्थायी sync प्राप्त कर सकते हैं

GN⁺ की राय

  • Local-First सॉफ़्टवेयर का महत्व: उपयोगकर्ता डेटा का सीधा स्वामित्व और नियंत्रण रख सकते हैं, जिससे privacy और data security में फ़ायदा होता है।
  • sync services की सीमाएँ: Dropbox जैसी सेवाएँ बुनियादी sync तो दे सकती हैं, लेकिन जटिल sync scenarios में उनकी सीमाएँ हैं।
  • CRDT का उपयोग: CRDT का उपयोग conflict resolution को आसान बनाता है, जिससे sync की reliability बढ़ सकती है।
  • वैकल्पिक समाधान: Syncthing जैसे open source sync solutions पर भी विचार किया जा सकता है।
  • तकनीक अपनाते समय ध्यान देने योग्य बातें: Local-First सॉफ़्टवेयर अपनाते समय sync server की स्थिरता और data conflict समाधान की रणनीति को अच्छी तरह परखना चाहिए।

1 टिप्पणियां

 
GN⁺ 2024-06-26
Hacker News राय
  • लोकल-फर्स्ट एप्लिकेशन के backend sync server को लोकल में host किया जा सके, यह महत्वपूर्ण है: कुछ फीचर देने के लिए सिर्फ simple file sync पर्याप्त नहीं है। यूज़र कभी भी "workspace.zip" सेव कर सके और "server.exe/.bin" डाउनलोड करके backend को self-host कर सके।

  • लोकल-फर्स्ट एप्लिकेशन का monetization कठिन है: Obsidian मॉडल की तरह base app मुफ़्त देकर network features के लिए शुल्क लिया जा सकता है। Yjs का उपयोग करके local-first + collaboration app बनाना सुझाया गया है।

  • CRDTs हमेशा सबसे अच्छा विकल्प नहीं होते: file sync के लिए यह उपयुक्त हो सकता है, लेकिन central server द्वारा business logic validate करना और merge conflicts सुलझाना बेहतर हो सकता है। distributed state machine approach जटिल हो सकता है और उसका maintenance कठिन हो सकता है।

  • RemoteStorage protocol: सभी applications इसे implement कर सकती हैं और यूज़र अपना RemoteStorage URL दे सकते हैं। लेकिन अधिकांश implementations का maintenance नहीं हो रहा है।

  • cloud-आधारित file sync solutions की सीमाएँ: यह collaboration software या real-time software के लिए उपयुक्त नहीं हैं। vendor lock-in के बिना collaboration features देने वाला मॉडल चाहिए।

  • local-first software के फायदे: development आसान हो जाता है और user experience बेहतर होता है। उम्मीद है कि Nuxt या Next जैसी developer experience देने वाले local-first frameworks सामने आएँगे।

  • cloud storage के जोखिम: cloud provider डेटा delete कर सकता है या access block कर सकता है। local-first cloud storage इस्तेमाल करते समय सभी files डाउनलोड करने के लिए सेट करना चाहिए।

  • PWA का उपयोग करके sync experience: AWS और WebDAV का उपयोग करके sync करने वाला PWA बनाया गया था। sync time कम करने के लिए read और write time को न्यूनतम रखना महत्वपूर्ण है।

  • cloud-first विचार की सीमाएँ: अगर महाद्वीप-स्तर का network outage होता है, तो cloud-first विचार की समस्याएँ सामने आ जाएँगी।

  • mobile पर local-first sync की कठिनाइयाँ: iPhone पर Dropbox जैसे file sync को background में संभालना कठिन है।