"SKYLOGIQ" The moon can't shine on its own.
फ़्लैगशिप प्रैक्टिस

Rust माइग्रेशन

वे सिस्टम जिन्हें आप अब उनकी मूल भाषा के भरोसे नहीं छोड़ सकते, चलते-चलते Rust पर ले जाए जाते हैं।

अनिवार्यता

अनिवार्यता

फ़रवरी 2024 में व्हाइट हाउस के Office of the National Cyber Director ने CISA, NSA और सहयोगी एजेंसियों के मार्गदर्शन के बाद टेक्नोलॉजी उद्योग से मेमोरी-सेफ़ भाषाएँ अपनाने का आह्वान किया। सरकार और महत्वपूर्ण इन्फ्रास्ट्रक्चर में ख़रीद के ढाँचे मेमोरी-सेफ़्टी रोडमैप की माँग करने लगे हैं। दिशा तय हो चुकी है। बड़े PHP, C++, Java, Node या Python सिस्टम चलाने वाले हर संगठन के सामने सवाल यह है कि माइग्रेशन उसकी अपनी समय-सीमा पर योजनाबद्ध होगा, या किसी और की समय-सीमा पर उस पर थोपा जाएगा।

शून्य डाउनटाइम

हम बिना डाउनटाइम के कैसे माइग्रेट करते हैं

gatewayएक स्विच, सेकंडों में पलटने योग्य
legacy::servicePHP · Node · Java · C++ · Python
rust::serviceमिरर किया गया ट्रैफ़िक
parity::verifyप्रोडक्शन ट्रैफ़िक पर old == new
cut_over()फिर डीकमीशन
  1. सिस्टम मैपिंग।

    हर सेवा, निर्भरता, डेटा प्रवाह और उपभोक्ता का दस्तावेज़ीकरण। ज़्यादातर संगठनों को ऐसे सिस्टम मिलते हैं जिन्हें वे भूल चुके थे।

  2. क्रम निर्धारण।

    सेवाओं को जोखिम, मूल्य और कपलिंग के आधार पर क्रम दिया जाता है। पहला माइग्रेशन तरीक़े को साबित करने के लिए चुना जाता है, बहादुरी दिखाने के लिए नहीं।

  3. स्ट्रैंगलर पैटर्न।

    नई Rust सेवाएँ पुरानी सेवाओं के बगल में रखी जाती हैं, मिरर किया गया ट्रैफ़िक प्राप्त करती हैं, और ऐसे परिणाम देती हैं जिनकी तुलना अपने-आप होती है।

  4. पैरिटी सत्यापन।

    माइग्रेशन तभी आगे बढ़ता है जब पुराना और नया असली प्रोडक्शन ट्रैफ़िक पर एक जैसे परिणाम दें, चाहे इसमें जितना भी समय लगे।

  5. कट-ओवर, एक बार में एक सेवा।

    ट्रैफ़िक एक ऐसे स्विच के पीछे Rust पर जाता है जिसे सेकंडों में पलटा जा सकता है।

  6. डीकमीशन और हैंडओवर।

    पुरानी सेवा बंद कर दी जाती है, दस्तावेज़ीकरण पूरा होता है, और आपकी टीम नई सेवा पर प्रशिक्षित हो चुकी होती है।

स्रोत → लक्ष्य

क्या अच्छी तरह माइग्रेट होता है

  • PHP मोनोलिथ (Laravel, Symfony, लेगेसी), API गेटवे के पीछे Rust सेवाओं में
  • थ्रूपुट या मेमोरी की समस्याओं वाली Node.js सेवाएँ
  • Java और C# सेवाएँ, जहाँ लाइसेंसिंग, मेमोरी या लेटेंसी की लागत संरचनात्मक बन चुकी है
  • C और C++ कंपोनेंट, जिनका मेमोरी-सेफ़्टी घटनाओं का इतिहास रहा है
  • Python डेटा और इन्फ़रेंस पाइपलाइन, जहाँ ख़ुद Python ही बाधा है
ईमानदारी

हम क्लाइंट को ईमानदारी से क्या बताते हैं

हर चीज़ को माइग्रेट नहीं होना चाहिए।

वित्त विभाग में चार लोगों द्वारा इस्तेमाल होने वाला रिपोर्टिंग टूल PHP में ही रहता है। आपका राजस्व संभालने वाला पेमेंट पाथ नहीं। दूसरे सप्ताह में हम जो सिस्टम मैप बनाते हैं, वहीं यह बातचीत होती है, और वह इस काम का सबसे मूल्यवान दस्तावेज़ होता है।

आपका व्यवसाय चलाने वाले सिस्टम उन्हीं लोगों को बनाने चाहिए जिन्होंने ऐसे सिस्टम ख़ुद चलाए हैं।

The moon can't shine on its own.