• सर्वर deployment और process isolation की समस्याओं के इतिहास को ट्रैक करते हुए, यह लेख दिखाता है कि FreeBSD jails ने आधुनिक container की अवधारणा को उद्योग से 10 साल पहले लागू कर दिया था
  • 2000 में FreeBSD 4.0 में पेश किए गए jails ने chroot का विस्तार करते हुए filesystem, network और process की पूर्ण isolation को kernel-native फीचर के रूप में उपलब्ध कराया
  • Linux ने 2008 में LXC और 2013 में Docker के जरिए containers तक पहुंच बनाई, लेकिन इस प्रक्रिया में namespace, cgroups, OCI जैसी जटिल abstraction layers जमा होती गईं
  • Docker ने application packaging और deployment यानी shipping की समस्या को बहुत अच्छी तरह हल किया, जबकि jails isolation में मजबूत होने के बावजूद native deployment standard की कमी से कमजोर पड़ते हैं
  • अगले भाग में jails-आधारित infrastructure निर्माण, ZFS snapshots, Ansible provisioning जैसी वास्तविक संचालन विधियों पर चर्चा की जाएगी

शुरुआती सर्वर deployment की समस्या

  • कई दशक पहले सर्वर पर कुछ deploy करने का मानक तरीका Total Commander, FileZilla, FAR Manager आदि से FTP के जरिए हाथ से फाइलें कॉपी करना था; उन्नत उपयोगकर्ता scp या rsync का उपयोग करते थे, लेकिन मूल बात वही थी
  • अकेले काम किए जाने वाले प्रोजेक्ट्स में गलतियां बहुत बड़ी समस्या नहीं थीं, लेकिन दर्जनों client projects संभालते समय यह घातक साबित होती थीं
  • सामान्य backend setup में कई websites एक ही Apache web server instance साझा करती थीं और उनका lifecycle भी एक ही होता था; Apache डाउन हुआ तो सब डाउन
  • ट्रैफिक अचानक बढ़ने पर अगर एक site सारे resources खा जाए, तो उसी server की दूसरी sites चुपचाप घुटने लगती थीं
  • system administrators ने shell scripts से automation की कोशिश की, लेकिन version control या rollback के लिए कोई मानक तरीका मौजूद नहीं था, इसलिए project folders के नाम में incrementing numbers या timestamps जोड़ने की परंपरा चलती थी

हल करने योग्य दो मुख्य समस्याएं

  • Deployment: विश्वसनीय delivery, human error की रोकथाम, versioning और rollback का कार्यान्वयन, और सभी business cases को कवर करने वाला एक सामान्य समाधान आवश्यक था
  • Process Isolation: app और system के बीच पारस्परिक सुरक्षा, एक app की जरूरतों के कारण दूसरी app का चुपचाप टूट जाना रोकना, और dependency conflicts को हल करना जरूरी था
  • deployment समस्या को हल करने के प्रयास आगे चलकर आधुनिक CI/CD pipelines, packaging standards और version control systems में विकसित हुए, लेकिन isolation समस्या का इतिहास अपेक्षाकृत कम जाना जाता है

chroot से virtual machine तक

  • 1979 में Bell UNIX द्वारा पेश किया गया chroot processes को filesystem का isolated view देता था, ताकि वे किसी subtree के बाहर पहुंच न सकें; यह एक आदिम लेकिन उपयोगी विचार था
    • सीमा: यह केवल filesystem को isolate करता था; network, दूसरे processes और system resources में अब भी दखल संभव था, और इससे बाहर निकलना भी संभव था
  • पहला गंभीर enterprise समाधान virtual machine (VM) था, जिसे VMware ने 1990 के दशक के अंत में मुख्यधारा में पहुंचाया
    • इसने हर application को पूरी तरह isolated OS environment दिया, लेकिन हर VM में पूरा OS शामिल होने से काफी overhead आता था और startup time मिनटों में मापा जाता था

FreeBSD Jails का जन्म

  • 2000 में, न Windows Server और न Linux, बल्कि FreeBSD में एक शांत क्रांति हुई
  • FreeBSD का तरीका Linux से बुनियादी रूप से अलग है: Linux सिर्फ kernel देता है और उसके साथ GNU userland, package ecosystem और distribution-विशिष्ट विकल्प जुड़ते हैं, जबकि FreeBSD kernel, userland, base tools और libraries को एक पूर्ण OS के रूप में साथ विकसित, version, और test करता है
  • इसी सुसंगत आधार पर बना समाधान था jails, जिसे Poul-Henning Kamp और Robert Watson ने प्रस्तुत किया और FreeBSD 4.0 (मार्च 2000) में native kernel feature के रूप में शामिल किया गया
  • हर jail का अपना filesystem view, network stack और process space होता है, और host system दिखाई नहीं देता
  • host kernel साझा करने की वजह से लगभग शून्य के करीब overhead और लगभग तुरंत startup time मिलता है
  • FreeBSD ने आज जिसे हम container कहते हैं, उसका व्यावहारिक implementation उद्योग से 10 साल पहले production में हासिल कर लिया था

isolation तकनीक की timeline

  • isolation समस्या का वास्तविक विकास-पथ था: isolation के बिना shared servers → भारी लेकिन isolated virtual machines → हल्के और isolated containers
  • FreeBSD 2000 में तीसरे चरण तक पहुंच गया था, Linux 2008 में LXC के साथ वहां पहुंचा, और Docker 2013 में आया
  • जब Docker को क्रांतिकारी कहकर सराहा जा रहा था, तब तक FreeBSD jails 13 साल से परिपक्व और battle-tested थे

Linux क्यों जीता

  • तकनीकी श्रेष्ठता हमेशा ecosystem की लड़ाई नहीं जीतती
  • Linux ने तेज निर्णय-क्षमता, GPL license के viral प्रभाव, और Red Hat व IBM के मजबूत enterprise support के दम पर जीत हासिल की
  • बाद में Google, Facebook और Amazon ने बड़े data centers के लिए tools बनाते हुए पूरे उद्योग की दिशा तय की
  • Linux एक समय "commercial license नहीं खरीद सकने वालों का free OS" था, और बाद में "servers के लिए एकमात्र विकल्प" बन गया

Linux container ecosystem की जटिलता

  • Linux engineers ने isolation और deployment समस्याओं को हल करने के लिए namespace, cgroups, seccomp जैसे kernel primitives बनाए, और फिर उनके ऊपर LXC (2008) → OCI/runc (2015) → Docker/Podman (2013/2018) → Docker Hub जैसी जटिल abstraction layers खड़ी कर दीं
  • नतीजतन cloud-आधारित, vendor-locked infrastructure के लिए over-engineered leaky abstractions का एक ढेर बन गया
  • आज बड़े systems पर applications चलाने के लिए Docker से containerize करना और Kubernetes से orchestrate करना implicit default बन चुका है; इसे कई विकल्पों में से एक नहीं, बल्कि स्वाभाविक चुनाव की तरह पेश किया जाता है

Docker का योगदान और Jails की कमजोरी

  • Docker ने सबसे अच्छी तरह shipping समस्या हल की: application को उसकी सभी dependencies के साथ package करना, registry के जरिए distribute करना, और किसी भी machine पर एक जैसा चलाने के लिए एक सामान्य standard देना
  • OCI image format व्यवहार में उद्योग का standard बन गया
  • Jails isolation की समस्या को शानदार ढंग से हल करते हैं, लेकिन shipping के लिए native solution मौजूद नहीं है, और यही बड़ा कारण है कि Docker ecosystem की तुलना में jails ecosystem कम परिपक्व लगता है
  • community भी इस अंतर को पहचानती है, और कुछ tools (cbsd, bastille, pot, appjail आदि) आधुनिक container ecosystem की नकल करने की कोशिश कर रहे हैं; साथ ही FreeBSD native primitives का उपयोग करने वाले दूसरे approaches भी मौजूद हैं

अगले भाग की झलक

  • अगले भाग में FreeBSD-आधारित infrastructure की सादगी और elegance, jails की बुनियाद और उनका काम करने का तरीका, jail managers के जरिए boilerplate कम करना, Ansible का उपयोग करके provisioning और deployment, ZFS snapshots की शक्ति, और इन सबको जोड़कर Hypha के लिए मजबूत और scalable infrastructure बनाने के तरीके पर चर्चा की जाएगी

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.