- serverless का वास्तव में मतलब यह नहीं है कि सर्वर नहीं हैं, बल्कि इसका मतलब सिर्फ यह है कि आप किसी और के सर्वर का उपयोग कर रहे हैं
- ServerFree आर्किटेक्चर एक ऐसा कॉन्सेप्ट प्रस्तावित करता है जिसमें backend server, container, या virtual machine के बिना भी कोड चलाया जा सकता है
- इस आर्किटेक्चर में कोड browser के भीतर चलता है, और केवल static files देने वाला सर्वर चाहिए
- यह दिखाया गया है कि web application को browser में चलाने योग्य बनाने के लिए कैसे package किया जा सकता है
- frontend code हमेशा की तरह build होता है, backend को package करके web worker में चलाया जाता है, और database के लिए WebAssembly में compile किया गया SQLite इस्तेमाल होता है
आइडिया
- content marketing के जरिए एक demo project बनाने का फैसला किया गया, और Hacker News से प्रेरित होकर privacy के लिहाज़ से ध्यान खींचने वाला एक job application tracker बनाने का निश्चय किया गया
- यह प्रोजेक्ट web worker, document mismatch, missing documents जैसी समस्याओं को हल करते हुए एक नए आर्किटेक्चर के विकास की प्रक्रिया में बदल गया
क्लासिक आर्किटेक्चर के साथ पहला प्रयास (आसान हिस्सा)
- SubZero CLI का उपयोग करके database schema बदला गया और permissions सेट करके app बनाया गया
- CRUD और filtering फीचर दिए गए, लेकिन demo से ज़्यादा product-जैसी UI customization की गई
- बाईं ओर की बेकार जगह कम करने के लिए sidebar को ऊपर ले जाया गया
- "Opportunities" पेज में Show, Create, Edit, List components जोड़े गए
- backend code को छुए बिना complex filtering flow लागू किया गया
- dashboard को बेहतर बनाकर "खुले अवसर", "औसत प्रगति / आवेदन", "आवेदन के बाद औसत दिन" जैसे प्रासंगिक डेटा दिखाए गए
- production deployment के लिए Docker image build की गई, database seed किया गया, और container चलाया गया
- डेटा को लगातार सुरक्षित रखने के लिए SQLite database file को container के बाहर रखा गया
- Turso DB का उपयोग करके SQLite database की persistence और backup समस्याओं को हल किया गया
ServerFree आर्किटेक्चर में बदलाव (मज़ेदार हिस्सा)
- SQLite को WebAssembly में compile करके database के रूप में इस्तेमाल किया गया
- डेटा स्टोर करने के लिए OPFS(Origin-Private FileSystem) का उपयोग किया गया
- UI thread को block होने से बचाने के लिए backend code को web worker में चलाया गया
- browser compatibility के लिए Express की जगह itty-router इस्तेमाल किया गया
- UI और backend के बीच requests को intercept और handle करने के लिए service worker का उपयोग किया गया
- main thread के जरिए service worker और web worker के बीच भरोसेमंद communication लागू किया गया
- main thread(UI) से authentication से जुड़ा कोड हटा दिया गया
- डेटा उपयोगकर्ता के कंप्यूटर पर स्टोर होता है और सर्वर पर भेजा नहीं जाता
निष्कर्ष
- यह आर्किटेक्चर खासकर उन मामलों में उपयोगी है जहाँ customer data स्वतंत्र हो और उसे users के बीच साझा करने की ज़रूरत न हो
- backend server न होने से hosting cost कम होती है, data privacy मजबूत होती है, और security बेहतर होती है
- Electric जैसे tools का उपयोग करके database के कुछ हिस्से client के साथ sync किए जा सकते हैं और कुछ requests/queries browser में ही संभाली जा सकती हैं
1 टिप्पणियां