Spotify एक म्यूज़िक स्ट्रीमिंग सिस्टम है। यह लोगों को गानों और पॉडकास्ट की लिस्ट देखने और फिर अपने डिवाइस पर ऑडियो सुनने के लिए ‘प्ले’ बटन दबाने की सुविधा देता है।
इसका मुख्य वादा आसान है। जब कोई सुनने वाला ‘प्ले’ बटन दबाता है, तो ऐप को तुरंत आवाज़ शुरू करनी चाहिए और उसे बजाते रहना चाहिए, भले ही फ़ोन मज़बूत और कमज़ोर मोबाइल नेटवर्क के बीच स्विच करे।
स्केल करने से पहले, सबसे आसान वर्शन एक क्लाइंट ऐप का एक बैकएंड से जुड़ना है। बैकएंड आर्टिस्ट, एल्बम और ट्रैक की लंबाई जैसे कैटलॉग से जुड़े सवालों के जवाब देता है, और प्लेबैक के लिए ऑडियो बाइट्स भी देता है।
उस बेसलाइन में मेटाडेटा के लिए एक डेटाबेस और ऑडियो फ़ाइलों के लिए एक ऑब्जेक्ट स्टोर होता है। इसमें कोई CDN, कोई रेप्लिका और कोई क्यू (queue) नहीं होता, इसलिए हर ‘प्ले’ रिक्वेस्ट उस अकेले बैकएंड के सही और तेज़ काम करने पर निर्भर करती है। यहाँ उस बेसलाइन की एक पूरी एंड-टू-एंड तस्वीर दी गई है:
डायग्राम में, मोबाइल क्लाइंट इंटरनेट के ज़रिए एक ऐप सर्वर को रिक्वेस्ट भेजता है। ऐप सर्वर मेटाडेटा डेटाबेस से ट्रैक मेटाडेटा पढ़ता है और ऑडियो ऑब्जेक्ट स्टोर से ऑडियो फ़ाइल पढ़ता है, फिर उसी कनेक्शन पर क्लाइंट को ऑडियो वापस स्ट्रीम करता है। बिना किसी अतिरिक्त लेयर के, ऐप सर्वर, डेटाबेस या ऑब्जेक्ट स्टोर में कोई भी सुस्ती सीधे तौर पर धीमी शुरुआत या प्लेबैक के दौरान रुक-रुक कर चलने (stutter) के रूप में दिखाई देती है।
इस कोर्स के लिए, फ़ंक्शनल दायरा सीमित रखा गया है। सुनने वाला ब्राउज़ कर सकता है, साधारण सर्च कर सकता है और ऑडियो चला सकता है, और सिस्टम को सही ट्रैक दिखाना चाहिए और फिर ऑडियो स्ट्रीम डिलीवर करनी चाहिए।
दो संकेत हमें बताते हैं कि सिंगल-सर्वर बेसलाइन कब काम करना बंद कर देती है। पहला है p95 स्टार्ट लेटेंसी, यानी 95% प्ले कोशिशें एक तय समय के भीतर शुरू होनी चाहिए, क्योंकि धीमी शुरुआत की लंबी सीरीज़ से ऐसा लगता है कि ऐप खराब हो गया है। दूसरा है एक साथ प्लेबैक (concurrent playback), यानी कई यूज़र एक ही समय में प्ले दबाते हैं, जिससे एक व्यस्त पल बैकएंड और स्टोरेज पर लगातार लोड में बदल जाता है।
जैसे ही हम बेसलाइन को स्केल करते हैं, वही ट्रेड-ऑफ़ शब्द बार-बार सामने आते हैं। वे डिज़ाइन की पसंद को Spotify में दिखने वाले नतीजे से जोड़ते हैं, जैसे तेज़ी से प्ले शुरू होना, ज़्यादा क्लाउड बिल, या ट्रैफ़िक बढ़ने के दौरान कम आउटेज।
यह टेबल प्ले फ़्लो और बैकग्राउंड के काम में इस्तेमाल होने वाली शब्दावली को स्पष्ट करती है: