इंजीनियरिंग
बड़े पैमाने पर लाइव स्कोरिंग: अंपायर के टैप से फ़ैन की स्क्रीन तक के बीच क्या होता है
बिना सिग्नल वाले स्कूल जिम में कोर्ट आठ पर एक पॉइंट बनता है। दो सेकंड बाद वह दूसरे देश में एक फ़ोन पर होता है। यह है उसका रास्ता।
कोर्ट आठ पर एक रैली खत्म होती है। अंपायर एक बार टैप करता है। एक से तीन सेकंड के बीच कहीं वह पॉइंट किसी दूसरे देश से देख रहे दादा-दादी के फ़ोन पर, टूर्नामेंट के सार्वजनिक स्कोरबोर्ड पर, उस ब्रैकेट पर जो मैच खत्म होने पर आगे बढ़ेगा, और उस डेटासेट में दिखता है जिसे एनालिटिक्स इंजन पढ़ता है।
इस तरह बयान करने पर यह आसान लगता है। यह आसान इसलिए नहीं है कि कोर्ट आठ एक स्कूल जिम में है जहाँ सिग्नल की दो ही लकीरें हैं, अंपायर एक वॉलंटियर है जिसने ऐप सिर्फ़ दो बार इस्तेमाल किया है, और तेईस दूसरे कोर्ट उसी वक़्त यही काम कर रहे हैं।
नियम एक: टैबलेट को नेटवर्क की ज़रूरत नहीं होनी चाहिए
लाइव स्कोरिंग का सबसे निर्णायक आर्किटेक्चर फ़ैसला यह है कि कनेक्टिविटी फ़ेल होने पर क्या होता है, क्योंकि भारतीय टूर्नामेंट वेन्यू पर कनेक्टिविटी लगातार फ़ेल होती है। जिम स्टील के ढाँचे वाले डिब्बे हैं। हॉल में कई सौ लोग एक ही सेल पर भर जाते हैं। शुक्रवार को सेटअप के समय चला Wi-Fi शनिवार सुबह दस बजे तक बेकार हो जाता है।
इसलिए स्कोरिंग ऐप स्थानीय रूप से प्रामाणिक है। एक टैप पॉइंट दर्ज करता है, स्क्रीन की स्थिति अपडेट करता है, खेल के नियम लागू करता है, जैसे क्या यह गेम पॉइंट है, क्या सर्विस बदलती है, क्या सेट खत्म हुआ, और उसे लोकल कतार में लिख देता है। यह सब नेटवर्क हो या न हो, कुछ मिलीसेकंड में हो जाता है, क्योंकि यह तार के पार किसी से कुछ पूछता ही नहीं।
फिर कतार मौका मिलते ही सर्वर पर खाली होती है, सख़्त क्रम में, हर इवेंट अपना क्रम संख्या और टाइमस्टैम्प लिए। पाँच मिनट का कनेक्टिविटी ब्लैकआउट दर्शकों के लिए पाँच मिनट की देरी बनता है और मैच पर ठीक शून्य असर। अंपायर को कभी स्पिनर नहीं दिखता, और स्कोर कभी गलत नहीं होता।
नियम दो: क्लाइंट के गणित पर कभी भरोसा न करें
टैबलेट स्कोर निकालता है ताकि अंपायर को तुरंत जवाब मिले। सर्वर उसे कच्ची इवेंट स्ट्रीम से उसी रूल इंजन के साथ दोबारा निकालता है। अगर दोनों में असहमति हो, तो सर्वर जीतता है और टैबलेट सुधार लिया जाता है।
यह इसलिए मायने रखता है क्योंकि क्लाइंट भटक जाते हैं। जो ऐप छह घंटे से खुला है, दो बार बैकग्राउंड में गया है और जिसका एक इवेंट क्रम से बाहर पहुँचा है, वह ऐसी स्थिति में पहुँच सकता है जो विश्वसनीय दिखती है पर गलत है। इवेंट को सर्वर साइड पर दोबारा चलाने का मतलब है कि प्रामाणिक स्कोर हमेशा उसका शुद्ध फ़ंक्शन होता है जो असल में हुआ, और यही रीप्ले अंपायर को तीन रैली पहले का पॉइंट सुधारने देता है और आगे की किसी चीज़ में उलझन नहीं होती। सुधार बस एक और इवेंट है, और उसके बाद का सब कुछ दोबारा निकाला जाता है।
एक इवेंट स्ट्रीम, कई पाठक
दर्शक, ब्रैकेट, ब्रॉडकास्ट ओवरले या एनालिटिक्स मॉडल जो कुछ भी देखता है, वह सब उसी क्रमबद्ध इवेंट स्ट्रीम से निकलता है। इसीलिए ड्रॉ पेज का ब्रैकेट और लाइव पेज का स्कोर कभी एक-दूसरे का खंडन नहीं कर सकते। वे दो सिस्टम नहीं हैं जिन्हें सिंक किया जा रहा हो, वे एक ही लॉग के दो रूप हैं।
नियम तीन: ट्रैफ़िक रीड पाथ पर होता है
चौबीस कोर्ट हर तीस सेकंड में एक इवेंट बनाएँ तो यह मामूली राइट लोड है, पूरे टूर्नामेंट में लगभग हर सेकंड एक राइट। रीड का पक्ष बिल्कुल अलग समस्या है। एक लोकप्रिय फ़ाइनल में हज़ारों लोग एक ही मैच को एक साथ रिफ़्रेश कर सकते हैं, और हर एक उम्मीद करता है कि संख्या ताज़ा हो।
रीड एक कैश से परोसे जाते हैं जिसे इवेंट स्ट्रीम हर लिखे जाने पर अमान्य कर देती है, इसलिए दर्शक का अनुरोध लगभग कभी डेटाबेस तक नहीं पहुँचता। इसी वजह से टूर्नामेंट का ट्रैफ़िक इतना एकतरफ़ा और इतना संभालने योग्य है: महँगी चीज़ खेल नहीं, दर्शक हैं, और सभी दर्शक ठीक वही कुछ संख्याएँ माँग रहे होते हैं।
नियम चार: अंपायर का इंटरफ़ेस ही पूरा प्रोडक्ट है
अगर कोर्ट के किनारे बैठा वॉलंटियर दबाव में ऐप इस्तेमाल न कर पाए, तो ऊपर की कोई बात मायने नहीं रखती।
हर खेल की स्कोरिंग स्क्रीन उस खेल के लिए ज़रूरी नियंत्रणों का सबसे छोटा सेट दिखाती है और कुछ नहीं। बैडमिंटन में दो बड़े स्कोर बटन और एक सर्विस संकेतक हैं। कुश्ती में पॉइंट के मान, चेतावनी और चित चाहिए। बास्केटबॉल को घड़ी चाहिए। एक कॉन्फ़िगर होने वाली स्क्रीन की जगह खेल-विशेष इंटरफ़ेस बनाना ज़्यादा काम है और इस पर कोई समझौता संभव नहीं, क्योंकि सामान्य इंटरफ़ेस का मतलब है मैच इंतज़ार करता रहे और वॉलंटियर सही नियंत्रण ढूँढता रहे।
- ऐसे टच टारगेट जो तिरछे पकड़े टैबलेट पर, खराब रोशनी वाले हॉल में, अंगूठे के हिसाब से बने हैं।
- अनडू जो एक टैप का हो और हमेशा उपलब्ध रहे, क्योंकि गलत टैप का इलाज गलत टैप से तेज़ होना चाहिए।
- ऐसी स्थिति जो ऐप के बंद हो जाने, टैबलेट के बुझ जाने या मैच के बीच अंपायर बदल जाने पर भी बनी रहे।
- रैली के दौरान कोई मोडल डायलॉग नहीं। कभी नहीं।
इन सबका नतीजा क्या निकलता है
अब तक लगभग 1,50,000 मैच इस पाइपलाइन से गुज़र चुके हैं। जिस पैमाने की हमें परवाह है वह थ्रूपुट या लेटेंसी नहीं है, वे दोनों आरामदेह हैं। परवाह इसकी है कि इस दौरान जितने मैचों में सिस्टम के किसी स्कोर को खोने या बिगाड़ने की वजह से प्रकाशित नतीजा सुधारना पड़ा, वह संख्या वही है जो किसी आधिकारिक रिकॉर्ड को दावा करने लायक होनी चाहिए: शून्य।