Spotify با چه زبان های برنامه نویسی و تکنولوژی ساخته شده است؟

اگه اهل موسیقی باشی، احتمالا برات پیش اومده یه روز که حسابی خستهای، هندزفری رو میذاری تو گوشت، اسپاتیفای رو باز میکنی و همون آهنگی که دقیقا بهحال و هوات میخوره پخش میشه. نه تاخیری، نه گیر کردنی. همهچی دقیق همونطوری کار میکنه که باید.
ولی واقعا تا حالا فکر کردی پشت این تجربه بیدردسر چی میگذره؟ چطوری یه اپلیکیشن ساده مثل اسپاتیفای میتونه اینقدر دقیق بفهمه چی دوست داری، آهنگهات بدون لگ پخش بشن و همهچی همیشه آماده باشه؟
سرویس استریم موسیقی اسپاتیفای در سه ماهه پایانی سال ۲۰۲۴ رکوردی تاریخی ثبت کرد و تعداد کاربران فعال آن به ۶۷۵ میلیون نفر در سراسر جهان رسید. این یعنی فقط در عرض یک سال، حدود ۱۲ درصد رشد داشته ونشونهای روشن از اینکه محبوبیت اسپاتیفای هنوز هم با قدرت داره ادامه پیدا میکنه.
در این مقاله از مجله سبزلرن قراره خیلی ساده و خودمونی، یه نگاه بندازیم به پشت صحنهی اسپاتیفای؛ اینکه با چه زبانهایی نوشته شده، چه ابزارهایی داره و چطوری همه اینا با هم هماهنگ میشن تا تو فقط یه دکمه بزنی و موسیقی شروع شه. اگه آمادهای، بزن بریم!
اسپاتیفای چطوری ساخته شده؟
اسپاتیفای یک برنامهی بزرگ هست که از بخشهای مستقل و کوچکی به نام مایکروسرویس تشکیل شده؛ هر بخش وظیفهای خاص دارد، مثل پخش موسیقی یا ساخت پلیلیست. این ساختار باعث میشود در صورت بروز مشکل یا نیاز به بهروزرسانی، فقط همان بخش تغییر کند، بدون تاثیر بر کل سیستم. با افزایش کاربران، اسپاتیفای این بخشها را به “Google Cloud” منتقل کرد تا بدون نیاز به سختافزار جدید، خدمات سریعتر و پایدارتری ارائه دهد.
اسپاتیفای با چه زبانهایی نوشته شده و چرا؟
اسپاتیفای فقط با یه زبان برنامه نویسی ساخته نشده. در واقع پشت این اپلیکیشن پر از زبانهای مختلفه که هر کدوم برای یه بخش از سیستم انتخاب شدن. درست مثل اینکه بخوای یه خونه بسازی و برای هر قسمت، ابزار مناسبش رو استفاده کنی. بیاید با هم چندتا از مهمترین زبانهایی که توی اسپاتیفای استفاده میشن رو بررسی کنیم:
Java، ستون فقرات سرویسهای اصلی
جاوا یکی از زبانهای اصلی در راهاندازی اسپاتیفای محسوب میشود، این زبان سالهاست در پروژههای بزرگ و حساس بهدلیل پایداری مطلوب و حجم بالای ترافیک خوب کاربردی هست. سرویسهایی مانند لاگین، جستوجوی آهنگها یا مدیریت حساب کاربری، همه با جاوا ساخته شدن. وقتی میلیونها نفر همزمان دارن از یه اپ استفاده میکنن، باید خیالت راحت باشه که سیستم نمیریزه، در این شرایط جاوا دقیقا همون نقش رو بازی میکنه.
Python، مغز پشت پیشنهادهای هوشمند
پایتون زبانی با قابلیتهای پیشرفته و یادگیری آسان است. در طراحی و راهاندازی اسپاتیفای نیز بیشتر از پایتون برای بخشهایی استفاده میشه که مربوط به هوش مصنوعی و یادگیری ماشین هستن. بهطور مثال همون بخشی که برات آهنگهای جدید پیشنهاد میده یا پلیلیستهایی مثل “Discover Weekly” رو میسازه. پایتون برای کار با دادهها و ساخت مدلهای پیشبینی بسیار محبوبه و اسپاتیفای هم حسابی ازش بهره برده.
++C، موتور پخش سریع و سبک
پخش صدا باید دقیق، سریع و بدون تاخیر باشه. برای همین اسپاتیفای قلب سیستم پخش خودش رو با ++C نوشته؛ زبانی که خیلی به سختافزار نزدیکه و میتونه با کمترین مصرف منابع، بهترین عملکرد رو بده. نکته جالب اینجاست که همین موتور پخش با کمی تغییر، روی نسخههای اندروید، iOS، دسکتاپ و حتی وب هم کار میکنه. یعنی یک کد واحد، ولی همهجا قابل استفاده است!
Scala، برای پردازش دادههای عظیم
اسپاتیفای هر روز میلیاردها کلیک، لایک، اسکیپ و پلی رو ثبت میکنه. این حجم از داده باید جایی تحلیل بشه تا بفهمن کاربرا چی دوست دارن و چی نه! برای این کار از زبان “Scala” استفاده میکنن که بهخاطر توانایی بالاش در کار با دادههای بزرگ، یکی از گزینههای محبوب توی این حوزهست. اسپاتیفای با استفاده از ابزار “Scio” (یه لایهای از اسکالا) این دادهها رو پردازش میکنه.
JavaScript / TypeScript / Node.js
رابط کاربری اسپاتیفای، بهخصوص توی نسخه وب و دسکتاپ، با “JavaScript” و”TypeScript” ساخته شده. از React برای ساختن بخشهای مختلف صفحه استفاده میکنن تا همهچی سریع و تعاملی باشه. توی بعضی سرویسهای سبکتر و سریعتر هم از Node.js کمک گرفتن تا بدون پیچیدگی زیاد، یه سری کارهای خاص انجام بشه.
نکته مهم:
اسپاتیفای دنبال یه زبان کامل و همهفنحریف نبوده. اونا باهوش بودن و برای هر بخش از سیستم، دقیقاً همون زبانی رو انتخاب کردن که بهترین عملکرد رو براش داشته. ترکیب درست ابزارها، رازِ موفقیت یه سیستم بزرگ مثل اسپاتیفای هست.
زیرساخت اسپاتیفای چطور کار میکنه؟
حالا که فهمیدیم اسپاتیفای از کلی سرویس کوچیک تشکیل شده، یه سوال مهم پیش میاد که این همه تیکهی برنامه، کجا اجرا میشن؟ چه جوری همهشون با هم هماهنگ میشن که ما هیچوقت حس نکنیم چیزی کند یا خراب شده؟ اینجا پای زیرساخت ابری و ابزارهای مخصوص به میون میاد.
اول از همه: سرویسهای کوچیکی که مثل لگو کنار هم چیده شدن
همونطور که گفتیم، اسپاتیفای به جای یه سیستم یکتکه، از صدها سرویس کوچیک تشکیل شده. مثلاً یه سرویس فقط مخصوص لاگین کاربره، یه سرویس دیگه فقط پلیلیستها رو مدیریت میکنه. این ساختار بهشون کمک میکنه راحتتر آپدیت کنن یا خطاها رو بدون تأثیر روی بقیهی سیستم برطرف کنن.
رفتن به Google Cloud، یعنی فرار از دردسرهای سرور فیزیکی!
قبلا اسپاتیفای خودش سرور داشت. اما وقتی تعداد کاربران زیاد شد، نگهداری این سرورها هم سخت و گرون شد. برای همین تصمیم گرفتن همهچیز رو ببرن به “Google Cloud” یعنی همون فضای ابری گوگل. اینجوری هر وقت به سرور بیشتر نیاز داشتن، فقط چند کلیک کافی بود تا قدرت و فضای بیشتری بگیرن، بدون اینکه بخوان سختافزار بخرن.
مدیریت این سرویسها با ابزارهایی مثل Kubernetes
وقتی این همه سرویس جدا از هم داشته باشی، باید یه جورایی اونها رو با هم هماهنگ کنی! اسپاتیفای برای این کار از “Kubernetes” استفاده میکنه. یه ابزار متنباز که کمک میکنه سرویسها بهموقع بالا بیان، اگه یکی خراب شد دوباره خودش روشن بشه و همه چیز منظم کار کنه. قبل از اون هم از ابزار مخصوص خودشون به اسم “Helios” استفاده میکردن، ولی 《کوبرنتیس》 انقدر خوب بود که تصمیم گرفتن بهش کوچ کنن.
Kafka و Pub/Sub، خط راهآهنی برای جابهجایی دادهها
وقتی میلیونها کاربر دارن همزمان آهنگ پلی میکنن، رد میکنن، لایک میکنن یا موارد دیگه، همهی این اتفاقات باید جایی ثبت بشه. اسپاتیفای از ابزارهایی مانند “Kafka” و “Pub/Sub” (سرویس گوگل) استفاده میکنه تا این دادهها رو بهصورت بلادرنگ (یعنی همون لحظه) جمعآوری و منتقل کنه. این اطلاعات بعدا برای پیشنهاد آهنگ، آمارگیری و حتی ساخت پلیلیستها استفاده میشن.
اسپاتیفای از کجا میفهمه چی دوست داری گوش بدی؟
یکی از دلایلی که باعث شده اسپاتیفای اینقدر محبوب بشه، این هست که خیلی خوب سلیقهات رو میفهمه. تا چند روز باهاش کار کنی، خودش کمکم میفهمه چه سبکهایی رو بیشتر دوست داری، کی چه جور آهنگی پخش میکنی و حتی چه حال و هوایی داری! ولی خب پشت این 《جادو》، کلی کد و داده و مدل هوش مصنوعی خوابیده.
📌 هر کاری که میکنی، واقعاً ثبت میشه!
هر بار که یه آهنگ پلی میشه، رد میکنی، لایک میزنی یا یه پلیلیست رو باز میکنی، اون اتفاق بهعنوان یک «رویداد» ثبت میشه. اسپاتیفای این کار رو با سیستمهای مخصوصی مانند “Kafka” یا “Google Pub/Sub” انجام میده که همون لحظه (بهصورت بلادرنگ) اطلاعات رو میگیرن و میفرستن برای پردازش.
🧠 دادهها میرن توی کارخونهی یادگیری ماشین!
بعد از اینکه این اطلاعات جمع شدن، وارد سیستمهایی میشن که با زبان پایتون و ابزارهای یادگیری ماشین ساخته شدن. این سیستمها دادهها رو بررسی میکنن، الگوها رو تشخیص میدن و سعی میکنن بفهمن تو احتمالاً آهنگ بعدیات رو از چه سبکی دوست داری.
📊 مثلا اگه چند روز بیشتر آهنگهای آرام شبانه گوش دادی، پلیلیست شبونهات احتمالا پر از پیانو و گیتار آروم میشه. یا اگه جدیدا به یه خوانندهی خاص علاقه نشون دادی، آهنگهای مشابهش کمکم وارد پیشنهادها میشن.
🔄 این چرخه مدام در حال بهروزرسانیه
جالب اینجاست که این کار یهبار انجام نمیشه؛ سیستم بهصورت پیوسته در حال یاد گرفتنه. یعنی اگه امروز سبک مورد علاقهت تغییر کنه، اسپاتیفای سعی میکنه خودش رو باهات هماهنگ کنه. واسه همینه که پلیلیستهایی مانند “Discover Weekly” یا “Release Radar” اینقدر دقیق و شخصی به نظر میان.
اطلاعات کاربران کجا ذخیره میشن؟
اسپاتیفای هر روز با حجم عظیمی از دادهها سر و کار داره. از آهنگهایی که گوش میدی گرفته تا پلیلیستهات، تنظیمات حساب و حتی آخرین ولومی که صدا رو تنظیم کردی! برای اینکه این اطلاعات با نظم و سرعت بالا ذخیره و بازیابی بشن، از چند نوع پایگاهداده استفاده میکنه. مثلاً برای ذخیرهسازی دادههای بزرگ و گسترده مثل پلیلیستها یا تاریخچه پخش، از دیتابیسهای توزیعشده مثل “Cassandra” استفاده میکنه که میتونه اطلاعات رو روی چند سرور پخش کنه.
برای دادههایی که مرتب و ساختارمند هستن، مثل تنظیمات یا اطلاعات حساب کاربری، از “PostgreSQL” کمک میگیره. بعضی دادهها هم که باید خیلی سریع خوانده و بهروزرسانی بشن، میرن توی “Google Bigtable”. خلاصه اینکه اسپاتیفای مثل یه انباردار حرفهای، هر چیزی رو دقیقا همونجایی میذاره که دسترسی بهش سریع و بیدردسر باشه. به همین خاطره که وقتی اسپاتیفای رو باز میکنی، همهچی درست سر جاشه انگار از قبل منتظرت بوده!
اسپاتیفای روی موبایل، کامپیوتر و وب چه شکلی کار میکنه؟
اسپاتیفای فقط یه اپ نیست. یه تجربهی یکدسته که فرقی نمیکنه از کجا استفادهاش کنی—گوشی، لپتاپ یا مرورگر. اما پشت این هماهنگی، کلی فکر و تکنولوژی هست.
📱 نسخه موبایل (Android و iOS):
توی گوشیهای اندرویدی، اسپاتیفای با زبان “Kotlin” نوشته شده و در آیفون با “Swift”. اما نکتهی مهم اینه که بخش پخش صدا، همون هستهی اصلی، با زبان ++C ساخته شده و در هر دو سیستم عامل بهصورت مشترک استفاده میشه. این کار باعث شده پخش آهنگ توی همهٔ دستگاهها سریع، دقیق و هماهنگ باشه.
💻 نسخه دسکتاپ (ویندوز و مک):
برنامهٔ کامپیوتر اسپاتیفای از یه تکنولوژی به اسم “Chromium “Embedded Framework استفاده میکنه. این یعنی چیزی شبیه مرورگر گوگل کروم، ولی فقط برای اجرای خودِ اپ. رابط کاربری هم با “React” ساخته شده، که هم مدرن و هم سریع و واکنشگراست.
🌐 نسخه وب (Web Player):
اگه ترجیح میدی چیزی نصب نکنی، نسخه تحت وب اسپاتیفای همیشه در دسترس هست. این نسخه با “React” و “TypeScript” ساخته شده و برای ارتباط با سرور از “GraphQL” استفاده میکنه. این یعنی فقط همون اطلاعاتی که لازم داری از سرور گرفته میشه؛ نه بیشتر، نه کمتر. سبک، سریع و دقیق.
🎨 همهچی با هم هماهنگه!
طراحی دکمهها، رنگها، آیکونها، حتی انیمیشنهای کوچیک صدا و همهچی توی همهٔ نسخهها تقریباً یکشکله. دلیلش اینه که اسپاتیفای از یه سیستم طراحی داخلی استفاده میکنه تا همه تیمها طبق یه راهنما کار کنن. نتیجه؟ فرقی نمیکنه از کدوم نسخه استفاده میکنی، حس کار کردن با «یه اسپاتیفای» رو داری.
ابزارهایی که اسپاتیفای ساخت و به دنیا هدیه داد!
اسپاتیفای فقط یه مصرفکنندهی تکنولوژی نیست، خودش هم کلی ابزار کاربردی ساخته اونم نه فقط برای خودش، بلکه برای بقیهٔ دنیا. یکی از معروفترین اونها “Backstage” هست؛ یه داشبورد کامل برای مدیریت سرویسها، مستندات، دیپلویها و کلی چیز دیگه.
این ابزار اول برای استفادهی داخلی ساخته شد ولی بعداً متنباز شد و حالا شرکتهایی مثل ناسا و نتفلیکس هم ازش استفاده میکنن. یا مثلا “Scio”، یه ابزار برای پردازش سریع دادههای خیلی بزرگ که با اسکالا ساخته شده و کار تحلیل دادهها رو راحتتر میکنه. حتی ابزاری مثل “Luigi” که کمک میکنه کارهای پشتصحنه به ترتیب و با کنترل کامل اجرا بشن، سالهاست داره توسط شرکتهای مختلفی استفاده میشه.
اسپاتیفای با این کارها نشون داده که فرهنگ «ساختن و به اشتراک گذاشتن» چقدر براش مهمه و این نهتنها به جامعه برنامهنویسها کمک کرده، بلکه باعث شده خودش هم با کمک بازخورد بقیه، ابزارهای بهتری بسازه.
اسپاتیفای فقط یه اپ نیست، یه کلاس درس زنده است!
پشت صحنهی اسپاتیفای نشان میدهد که ساخت یک سرویس جهانی نتیجهی انتخابهای دقیق، توجه به جزئیات، و اشتراکگذاری دانش است؛ نه صرفاً استفاده از تکنولوژی خاص. موفقیت آن حاصل ترکیب تفکر، انعطافپذیری و تمرکز بر نیازهای کاربر است. اسپاتیفای با انتخاب ابزار مناسب در زمان مناسب و بخشیدن دستاوردهایش به جامعه، الگویی برای ساخت محصولاتی ماندگار ارائه میدهد—جایی که چند خط کد بهموقع میتواند تجربهای فراموشنشدنی خلق کند.
نظری برای این مقاله ثبت نشده است