Wasm नई CGI है
- Wasm की भूमिका: Wasm (WebAssembly) वेब एप्लिकेशन मॉडल में एक नया बदलाव लाने के लिए तैयार है। इसका फोकस उच्च-प्रदर्शन वाले एप्लिकेशन को आसानी से बनाना और बनाए रखना है.
- पुराना वेब एप्लिकेशन मॉडल: CGI ने वेब को एक document archive से application network में बदल दिया। FastCGI को performance समस्याओं को हल करने के लिए विकसित किया गया, और बाद में यह serverless computing तक विकसित हुआ.
- Serverless computing: Amazon Lambda जैसी serverless computing, server management की जगह "functions" को manage करने देती है। इसका फायदा यह है कि यह request volume के अनुसार तेज़ी से scale कर सकती है.
सर्वर पर Wasm
- Wasm की विस्तार क्षमता: Wasm सिर्फ browser में ही नहीं बल्कि server पर भी चल सकता है, और यह server-side applications के लिए एक हल्का isolation model प्रदान करता है.
- Wasm execution environment: Wasm modules virtual machine में चलते हैं, और इन्हें कई अलग-अलग languages से compile किया जा सकता है। यह serverless environment में performance बेहतर करने में मदद कर सकता है.
Wasm के trade-offs
- Threads और JIT compilation: Wasm मूल रूप से threads को support नहीं करता और JIT compilation भी संभव नहीं है। इसका असर performance पर पड़ सकता है.
- Memory interface: Wasm modules और host के बीच data movement में copying की जरूरत पड़ सकती है, जो performance को प्रभावित कर सकती है.
भविष्य की दिशा
- Wasm का विकास: जैसे-जैसे Wasm execution environment और development tools आगे बढ़ेंगे, scripting languages अपने Wasm runtime के साथ आएँगी। इससे applications की execution speed में बड़ा सुधार हो सकता है.
- Edge computing: Wasm, edge computing के जरिए user के करीब computing संभव बनाता है, जिससे performance बेहतर होती है.
# GN⁺ की संक्षिप्त टिप्पणी
- Wasm वेब एप्लिकेशन मॉडल में नया बदलाव ला रहा है, जिससे उच्च-प्रदर्शन वाले एप्लिकेशन को आसानी से बनाना और maintain करना संभव होता है.
- Serverless computing और Wasm का मेल server management की जटिलता को कम करता है और request volume के अनुसार तेज़ी से scale करने का लाभ देता है.
- Wasm सिर्फ browser ही नहीं बल्कि server पर भी चल सकता है, और यह server-side applications के लिए हल्का isolation model प्रदान करता है.
- Wasm के विकास से scripting languages को Wasm runtime मिल सकता है, जिससे applications की execution speed में बड़ा सुधार संभव है.
- Edge computing के जरिए user के पास computing चलाना संभव होता है, जिससे performance बेहतर होती है.
1 टिप्पणियां
Hacker News राय
Amazon ने Lambda के साथ serverless computing के युग की शुरुआत की। Google App Engine, Lambda से 6 साल पहले जारी हुआ था.
WASM और Java Applets, ActiveX, Silverlight, Macromedia Flash जैसी पिछली तकनीकों के बीच का अंतर समझना मुश्किल है। ऐसा लगा था कि वेब ब्राउज़र में अविश्वसनीय third-party compiled code चलाने के बारे में सबक सीख लिया गया है.
JIT compilation संभव नहीं है क्योंकि सुरक्षा कारणों से dynamic WASM code generation की अनुमति नहीं है। यह code hot reloading जैसे कामों को साफ-सुथरे तरीके से करने के लिए आवश्यक फीचर है.
सुरक्षा संबंधी दावे भरोसेमंद नहीं लगते। runtime में JS को hot reload किया जा सकता है या code generation किया जा सकता है, और memory को बनाए रखते हुए WASM runtime को dynamically reload किया जा सकता है, लेकिन user experience असुविधाजनक होगा.
तकनीकी रूप से यह असंभव क्यों है, इसका कारण नहीं मिला। अगर यह security measure है, तो इसे आसानी से bypass किया जा सकेगा.
WASM bytecode, .NET IL, Java bytecode आदि की तरह वैचारिक रूप से समान है, जिन्हें JIT compilation के लिए डिज़ाइन किया गया था.
लगता है WASM project में स्पष्ट दिशा और सफल होने की इच्छा की कमी है। बुनियादी फीचर अब भी कम हैं.
WASM किसी विशेष भाषा के VM को general-purpose VM से बदलता है। इसका मतलब है कि compiler या interpreter के ज़रिए लगभग कुछ भी चलाया जा सकता है.
WASM को JavaScript replacement, Docker replacement, Java replacement, CGI replacement वगैरह के रूप में पेश किया जाता है। यानी यह सब कुछ है.
लगता है WASM को PHP application की तरह आसानी से host और deploy किया जा सकना चाहिए। अभी तक शायद ऐसा नहीं है.
यह software के एक पुराने नियम की याद दिलाता है। कोई भी पर्याप्त बड़ा और पुराना application आखिरकार चल रहे पूरे software stack को फिर से implement करने लगता है.
server-side WASM का बड़ा वादा यह है कि यह ऐसा स्थायी platform देता है जिसे नियमित updates की ज़रूरत नहीं होती.
लगता है local-first ही भविष्य है। app मुख्य रूप से user's browser के भीतर चले और server की मदद लगभग न के बराबर चाहिए हो.
WASM user's browser में सफल हो सकता है। Microsoft इसे C#/Blazor के लिए इस्तेमाल कर रहा है.
ऐसा लगता है कि JVM और उसके ecosystem को फिर से invent किया जा रहा है.
लगता है WASM cloud में lambda function execution code को replace करने की दिशा में जाएगा.
परंपरागत रूप से WASM को host platform पर चलने वाली चीज़ माना जाता है, लेकिन ज़रूरी नहीं कि हमेशा ऐसा ही हो.
WASM की sandbox विशेषताओं की वजह से इसे operating system के बाहर या ring0 में भी चलाया जा सकता है.