बैकएंड वातावरण का मूल उद्देश्य उपयोगकर्ता तक डेटा को स्थिर और विश्वसनीय तरीके से पहुँचाना है। इसके लिए web server, WAS, और database ये 3 मुख्य तत्व अनिवार्य हैं। ये तीनों web के विकास की प्रक्रिया में सामने आई समस्याओं को हल करने के लिए लगातार विकसित हुए हैं। monitoring, load balancing, caching, CI/CD pipeline, Kubernetes जैसी उन्नत तकनीकें भी इन 3 तत्वों की समझ के बिना ऐसी ही हैं जैसे किसी ऐसे घर का निर्माण करना जो कभी भी ढह सकता है.
पहला, web server की भूमिका
web server की मुख्य भूमिका फ़ाइलें पहुँचाने वाले file server की थी, और प्रमुख web server में Nginx, Apache, IIS, Caddy आदि शामिल हैं। ये web server static files प्रदान करने के अपने मूल कार्य पर केंद्रित होते हैं और अत्यधिक optimized होते हैं।
दूसरा, WAS (Web Application Server) का आगमन और भूमिका
WAS किसी विशेष request को प्राप्त करने पर पहले से तय किए गए program को चलाता है, और उस program द्वारा तैयार किए गए परिणाम को उपयोगकर्ता के सामने प्रस्तुत करता है। इस तरीके को वास्तविक बैकएंड की शुरुआत कहा जा सकता है; यही वह क्षण था जब server ने केवल फ़ाइलें दिखाने से आगे बढ़कर सोचना, computation करना, और logic process करना शुरू किया। web server हमेशा एक जैसी static page लौटाता है, जबकि WAS dynamic page लौटाता है।
तीसरा, database की आवश्यकता और भूमिका
database डेटा को स्थायी रूप से संग्रहीत करने, उसे सुरक्षित रूप से प्रबंधित करने, और एक साथ होने वाली access को नियंत्रित करने का काम करता है।
इसके अलावा, बैकएंड प्लानिंग के लिए जानना बहुत उपयोगी है: RESTful API design (resource-केंद्रित URL design, HTTP(GET, POST, PUT, DELETE आदि) का अर्थ, status code के उपयोग सहित REST architectural style पर आधारित API design principles), authentication (session-based authentication सहित user authentication और authorization के तरीकों की बुनियादी समझ तथा user management policy बनाना), और error handling (system stability सुनिश्चित करने के लिए आवश्यक exception cases को संभालने की अवधारणा) जैसी बातों की समझ भी महत्वपूर्ण है।
8 टिप्पणियां
दुनिया में कुछ लोग मानते हैं कि backend सिर्फ़ web protocol ही इस्तेमाल करता है
backend के 3 मुख्य तत्व कहकर web server को सामने लाना सच में भ्रमित करता है
ALB या CDN जैसी चीज़ें पहले से ही वे सभी काम कर रही हैं, जो हम वेब सर्वर से करवाना चाहते हैं, तो फिर ख़ास तौर पर उसी पर ज़ोर देने की वजह मुझे समझ नहीं आती। क्या आप लोगों के पास ऐसा कोई वास्तविक उदाहरण है, जहाँ वेब सर्वर होने की वजह से आप किसी सुरक्षा समस्या को रोक पाए हों?
अगर ALB फ़ंक्शन के हिसाब से web server को replace कर देता है और यूज़र सीधे WAS जैसे backend तक access नहीं कर सकते, तो इसे मौजूदा security environment configuration की आवश्यकताओं को पूरा करने वाला माना जा सकता है। और बहुत-सी services अभी भी on-premise environment में चल रही हैं।
सुरक्षा के पहलू को ध्यान में रखते हुए, मुझे अब भी लगता है कि Web Server / WAS server को अलग रखना ज़रूरी है। Cloud-native environment होने से इसमें कोई फर्क नहीं पड़ता। WAS जैसे Backend को उस layer में नहीं होना चाहिए जहाँ users सीधे connect कर सकें।
क्या web server / WAS की अवधारणा को समझना आज भी सार्थक है?
Java EE, php, CGI के प्रचलन वाले दौर में यह एक उपयुक्त विभाजन था, लेकिन आजकल ज़्यादातर भाषाएँ अपना खुद का http server built-in देती हैं, और ALB, API Gateway, CDN, Object Storage जैसी अवधारणाएँ सामने आकर आम हो चुकी हैं, इसलिए समय बदल गया है.
बल्कि मुझे लगता है कि ऐतिहासिक संदर्भ के बिना, आज से काफ़ी अलग रहे Web Server और WAS की अवधारणा अब न तो ज़्यादा उपयुक्त रह गई है, और नये सीखने वालों के लिए यह सिर्फ़ और अधिक भ्रम पैदा कर सकती है.
फिनटेक की तरफ़ अभी भी security requirements की वजह से कई environments में Web-WAS अलग-अलग रखे जाते हैं। पता नहीं आपको किस environment में काम करना पड़े, इसलिए मेरा मानना है कि हर चीज़ के लिए तैयार रहना सही है haha
आज के cloud environment में भी बड़े पैमाने की processing के लिए
एक ही instance के भीतर कई WAS को efficiently balance करने के लिए इसका उपयोग किया जाता है
अगर network requests कम हों, तो इसकी ज़रूरत नहीं हो सकती
सहमत हूँ। मुझे लगता है कि 12-factor app सिद्धांतों और cloud-native patterns को सिखाना ज़्यादा व्यावहारिक होगा। यह कॉन्सेप्ट खुद ही बहुत पुराना है।