Spotify موسیقی کی اسٹریمنگ کا ایک نظام ہے۔ یہ صارفین کو گانوں اور پوڈکاسٹس کی فہرست (کیٹلاگ) دیکھنے اور پھر ‘پلے’ (play) کا بٹن دبا کر اپنے آلے پر آڈیو سننے کی سہولت دیتا ہے۔
اس کا بنیادی وعدہ سادہ ہے۔ جب کوئی سننے والا ‘پلے’ بٹن دباتا ہے، تو ایپ کو فوراً آواز چلانا شروع کر دینی چاہیے اور اسے جاری رکھنا چاہیے، چاہے فون مضبوط اور کمزور موبائل نیٹ ورکس کے درمیان منتقل ہی کیوں نہ ہو رہا ہو۔
بڑے پیمانے پر توسیع (اسکیلنگ) سے پہلے، اس کا سادہ ترین ورژن ایک کلائنٹ ایپ اور ایک بیک اینڈ (backend) کے درمیان رابطے پر مشتمل ہوتا ہے۔ بیک اینڈ کیٹلاگ سے متعلق معلومات (جیسے آرٹسٹ، البم، اور ٹریک کا دورانیہ) فراہم کرتا ہے اور پلے بیک کے لیے آڈیو ڈیٹا (بائٹس) بھی مہیا کرتا ہے۔
اس بنیادی ڈھانچے میں میٹا ڈیٹا کے لیے ایک ڈیٹا بیس اور آڈیو فائلوں کے لیے ایک ‘آبجیکٹ اسٹور’ شامل ہوتا ہے۔ اس میں نہ تو CDN ہوتا ہے، نہ ہی ریپلیکاز (نقلیں) اور نہ ہی کوئی قطار (queue)؛ لہٰذا ‘پلے’ کی ہر درخواست کا انحصار اسی ایک بیک اینڈ کے درست اور تیز رفتار کام کرنے پر ہوتا ہے۔ یہاں اس بنیادی ڈھانچے کی ایک مکمل (end-to-end) تصویر پیش کی گئی ہے:
ڈایاگرام میں، موبائل کلائنٹ انٹرنیٹ کے ذریعے ایک ایپ سرور کو درخواستیں بھیجتا ہے۔ ایپ سرور میٹا ڈیٹا ڈیٹا بیس سے ٹریک کا میٹا ڈیٹا اور آڈیو آبجیکٹ اسٹور سے آڈیو فائل پڑھتا ہے، اور پھر اسی کنکشن کے ذریعے آڈیو کو واپس کلائنٹ تک اسٹریم کرتا ہے۔ چونکہ اس میں کوئی اضافی تہیں (layers) نہیں ہوتیں، اس لیے ایپ سرور، ڈیٹا بیس، یا آبجیکٹ اسٹور میں آنے والی کسی بھی سستی (slowdown) کا اثر براہِ راست پلے بیک کے سست آغاز یا رک رک کر چلنے (stutter) کی صورت میں ظاہر ہوتا ہے۔
اس کورس کے لیے، فنکشنل دائرہ کار (functional scope) کو محدود رکھا گیا ہے۔ سننے والا براؤز کر سکتا ہے، سادہ تلاش (simple search) کر سکتا ہے، اور آڈیو چلا سکتا ہے؛ اور سسٹم کو درست ٹریک تلاش کر کے آڈیو اسٹریم فراہم کرنی چاہیے۔
دو اشارے ہمیں بتاتے ہیں کہ سنگل سرور بیس لائن کب کام کرنا چھوڑ دیتی ہے۔ پہلا اشارہ ‘p95 اسٹارٹ لیٹنسی’ (p95 start latency) ہے، یعنی پلے (چلانے) کی 95 فیصد کوششیں ایک مقررہ وقت کے اندر شروع ہونی چاہئیں، کیونکہ سست آغاز کا ایک طویل سلسلہ (long tail) ایسا تاثر دیتا ہے جیسے ایپ خراب ہو گئی ہو۔ دوسرا اشارہ ‘ہم وقتی پلے بیک’ (concurrent playback) ہے، یعنی جب بہت سے صارفین ایک ہی وقت میں ‘پلے’ کا بٹن دباتے ہیں، تو یہ ایک مصروف لمحہ بیک اینڈ اور اسٹوریج پر مسلسل بوجھ میں تبدیل ہو جاتا ہے۔
جیسے ہی ہم بیس لائن کو وسعت (scale) دیتے ہیں، وہی سمجھوتوں سے متعلق اصطلاحات بار بار سامنے آتی ہیں۔ یہ اصطلاحات ڈیزائن کے کسی انتخاب کو Spotify میں نظر آنے والے نتیجے سے جوڑتی ہیں، جیسے کہ پلے کا تیز آغاز، کلاؤڈ کا زیادہ بل، یا ٹریفک میں اچانک اضافے (spikes) کے دوران سروس کی بندش میں کمی۔
یہ جدول ‘پلے فلو’ (play flow) اور پس منظر کے کاموں (background work) میں استعمال ہونے والی اصطلاحات کی وضاحت کرتا ہے: