بازار، کارخانهها، صنعت و هر بخشی به بالاترین سیستمهای پردازشی نیاز دارند و تشنه سیستمهای با قدرت پردازشی بیشتر نسبت به گذشته هستند. به یاد بیاورید که در گذشته بسیاری از برنامههای کاربردی سازمانها، پایگاه دادهها، برنامههای ERP و CAT روی سرورهایی با یک پردازنده اجرا و متمرکز شده بودند، اما امروزه استفاده از سروری با یک پردازنده شبیه شوخی است. سرورهای کنونی از چند پردازنده میزبانی میکنند که هریک از این پردازندهها نیز چندین هسته پردازشی دارند. برخی از سرورهای امروزی بازار، چند پردازنده دارند که هریک از 10 تا 18 هسته پردازشی سود میبرند. حرکت از سیستمهای تکپردازنده بهسوی سیستمهای چندپردازنده فقط در بخش سختافزار و فیزیکی سرورها رخ نداده است، بلکه در برنامههای کاربردی و برنامهنویسی این نرمافزارها نیز شاهد استفاده از تکنیکها و الگوریتمهایی هستیم که امکان استفاده موازی از پردازندههای چندهستهای و نخهای پردازشی را برای سرعت بخشیدن به محاسبات و بارکاری فراهم میکنند. صنعت نیاز به سرعت و محاسبات بیشتر دارد، شرکتهای بزرگ بهدنبال سرورهایی با پشتیبانی از چندین پردازنده و البته پردازندههای قویتر هستند و بازار ناگزیر است به این نیازها پاسخ بدهد. بنابراین، دور از انتظار نیست تا 5 سال دیگر سرورهایی روانه بازار شود که از چندین پردازنده پشتیبانی کنند.
امروز کجا هستیم؟ بسیاری از شرکتهای بزرگ و سازمانهای گسترده از بزرگ داده و مدلهای محاسباتی اصطلاحاً Scale-Out استفاده میکنند. در این مدلهای محاسباتی امکان اضافه و حذف نودها بهصورت طولی وجود دارد و شرکتها برحسب نیاز خود سعی میکنند سیستم محاسباتی خود را مرتب با افزایش نودهای جدید سریعتر و قویتر کنند. در اینجا، صحبت از آرایهای از سرورها است. برنامههای کاربردی اقتصادی جدید مبتنی بر وب مانند پایگاه دادههای NoSQL که در بسیاری اوقات بهنام برنامههای کاربردی بزرگ داده شناخته میشوند، قابلیتها و ویژگیهایی مشابه قدرتمندترین سرورهای چندپردازندهای امروزی دارند که میتوانیم بسازیم. بزرگ داده باعث توسعه مدلهای برنامهنویسی شده است تا برنامههای کاربردی گسترده بتوانند از صدها یا هزاران سرور بهصورت خوشهای (کلاستر) بهعنوان یک سکوی محاسباتی یکپارچه استفاده کنند. این همان چیزی است که شرکت گوگل بهعنوان Warehouse Scale Computer از آن یاد میکند. مدلهای محاسباتی Scale-Out نیاز به سرورهایی چندپردازندهای و پرقدرت دارند و این سرورها هر چقدر سریعتر و قویتر باشند بهتر است. در اینجا صحبت از یک سرور یا دو سرور نیست، بلکه به کلاستری از دهها یا صدها سرور لینک شده به هم اشاره میکنیم. یک سرور فیزیکی در این مدل، یک نود یا جزئی کوچک از یک شبکه کلاستری سرور محسوب میشود.
در سالهای اخیر شاهد ورود مفاهیم جدیدی به صنعت سرورها بهخصوص در بخش نرمافزارهای کلاستر سروری هستیم. شاید مفاهیمی مانند مقیاسپذیری، انعطافپذیری شکست، تعمیر خطای آنلاین و بهروزرسانی در گذشته فقط برای سختافزار یک سرور مطرح میشدند، اما امروزه برای نرمافزارهای کاربردی اجرا شده روی سرورها و برنامههای کاربردی که بهصورت کلاستر اجرا شدند نیز به کار گرفته میشوند. در واقع، شاهد پیشرفت شبکههای با توان خروجی بالا هستیم. معماری فیزیکی یک سرور بهطرز وحشتناکی ساده شده است. قبلاً برای راهاندازی یک سرور باید یکسری کارهای پیشپیکربندی انجام میشد، اما اکنون سرور بهسادگی در شبکه قرار میگیرد و بعد ورودی/ خروجی دستگاهها و پیکربندی درگاهها انجام میشوند. در سطح سختافزار، سکوهای کامپیوتری مقرون به صرفهای با یک یا دو پردازنده، ظرفیت قابل توجهی حافظه رم و کارتهای شبکه 10 گیگابیتی یافت میشوند. در سطح نرمافزار، شاهد پیشرفت سکوهای سروری توزیعهای لینوکس هستیم که بهسادگی در دسترس هستند و نصب و راهاندازی میشوند. نسخه سرور اوبونتو بهراحتی روی کامپیوترهای سروری نصب میشود و یک سرور با سرویسدهندههای مورد نیاز میسازد. طراحی سرورها در سالهای اخیر شامل یک سرور فیزیکی و یکسری دستگاههای ورودی/ خروجی در نرمافزارها میشود. شرکتهای بزرگ میتوانند برحسب نیاز خود یک سرور را از نظر سختافزاری و نرمافزاری توسعه بدهند و برنامههای کاربردی مورد نیاز را روی سرور اجرا کنند. این شرکتها در صورت نیاز میتوانند یک سرور فیزیکی دوم به شبکه اضافه کنند و پس از آن برنامه کاربردی با بارکاری بسیار بالای را روی هر دو سرور و بهصورت یکپارچه اجرا کنند. ضعف این مدل تا همین سالهای اخیر سازگاریها و هماهنگیهای مورد نیاز سختافزاری و نرمافزاری بود. اما امروزه شاهدیم که سختافزارها و نرمافزارهای سروری فارغ از سکو و برند میتوانند با یکدیگر هماهنگ شوند.
یکی دیگر از فناوریها و مفاهیم جدید دنیای سرورها، ماشینهای مجازی و کانتینرها هستند که باعث شدند سرورها بهعنوان یک مفهوم و مدل انتزاعی بهصورت نرمافزار در یک سکو و برنامههای کاربردی اجرا و استفاده شوند. هر دو این فناوریها توسط ارائهدهندگان عمومی خدمات ابری مورد استفاده قرار میگیرند. روی یک سرور فیزیکی میتوان چندین ماشین مجازی یا کانتینر تعریف کرد. استقرار ماشینهای مجازی و کانتینرها روی یک سرور فیزیکی باعث میشود چند سرور منطقی و نرمافزاری جدید در دسترس باشد بدون اینکه نیاز به توسعه سختافزار سرور باشد. با این مفاهیم میتوان انواع سرورهای کوچک و بزرگ با مشخصات و پردازنده، حافظه و ظرفیت ذخیرهسازی مختلف را برای یک سیستم تعریف کرد. بنابراین، هزینهها کاهش پیدا میکند و دیگر نیازی به مراکز داده و استقرار تجهیزات شبکه اضافی برای دسترسی به چند سرور کوچک نیست. سازمانها میتوانند با تعریف ماشینهای مجازی برنامههای کاربردی و خدمات آنلاین جدیدی را روی شبکه اجرا کنند و هزینههای عملیاتی و سربار خود را کاهش دهند. در این فضا، یک سرور شامل یک ماشین مجازی یا یک کانتینر میشود و لزوماً یک سختافزار نیست. چنین سروری بهراحتی میتواند ساخته، ذخیره و تعلیق شود یا به سرور سختافزاری دیگری منتقل شود. این مفاهیم به طور کلی تصورات از سرورها را تغییر دادهاند، اما زمینه توسعه و استقرار سرورهایی با ظرفیتهای غیرممکن توسط سختافزارهای فیزیکی را ایجاد کردند. یک ماشین مجازی یا کانتینر به طور کامل میتواند پیکربندی شود و پشتهای از نرمافزارها روی آن نصب و اجرا شوند. این نرمافزارها میتوانند به طور توزیعی روی چند سرور منطقی اجرا شوند یا اطلاعاتی را روی سرورها ذخیره کنند. با کمک الگوریتمهای هوش مصنوعی و یادگیری ماشینی میتوان این سرورهای منطقی را آموزش داد و برای مصارف خاص برنامهریزی کرد. تمام این ویژگیها باعث میشوند برنامههای کاربردی بهسرعت توسعه پیدا کنند، اما هزینهها روندی کاهشی داشته باشند. همین طور نیروی انسانی کمتری استخدام و درگیر نگهداری سیستمها میشود و زمان استقرار برنامههای کاربردی نیز کاهش پیدا میکند. پروژهها سریعتر انجام میشوند و مرحله طراحی تا استقرار یک سرویس روی شبکه بسیار کمتر از گذشته میشود. ماشینهای مجازی و کانتینرها همانند یک سرور فیزیکی میتوانند پشتهای از نرمافزار را ذخیره و آزمایش کنند، برای کاربردهای خاص پیکربندی و اجرا کنند و زمینه استقرار دوباره یا توسعه آنها را فراهم سازند. ماشینهای مجازی و کانتینرها برای محیطهای Scale-Out بسیار مناسب هستند، زیرا در حالی که زیر بارکاری شبکه هستند امکان پیکربندی مجدد، استقرار مجدد یا ذخیرهسازی وجود دارد. برنامههای بزرگداده بهمیزان وسیعی از این فناوریها استفاده میکنند و سازمانهای بسیار بزرگ با این ترفند میتوانند پیچیدگیهای سیستم را کاهش و خدمات جدیدی به تعداد بیشتری از مشتریان دهند. مزیت ویژه این سیستم اینجا است که میتوان یک شبکه در حال کار و زیر بار ترافیکی شدید را که براساس نیازهای جدید به وجود آمده است، توسعه داد یا اصلاح کرد.
پیشرفت فناوریهای سرور فقط در حوزه نرمافزار نیست و شاهدیم که در بخش سختافزار نیز فناوریهای جدید سعی کردند راه نفوذ خود را پیدا کنند. به عنوان مثال، در بخش حافظه فناوریهای جدید تغییرات اساسی در سرورها بهوجود آوردهاند. تغییر فاز حافظهها و ReRAM کلاس جدیدی از حافظهها با دسترسیهای نزدیک به DRAM به وجود آورده است. در عین حال، ظرفیت حافظههای رم نسبت به 10 سال گذشته بسیار افزایش یافته و شاید دو تا ده برابر شده است. این افزایش ظرفیت، مزیتهای زیادی برای سرورها مانند کاهش هزینهها و افزایش پایداری را به همراه دارد. نسل جدید از حافظههای رم در حال ورود به سرورها هستند که با نام حافظههای Persistent یا Storage Class شناخته میشوند. این حافظهها از نظر کلاس سرعتی بین DRAM و تجهیزات ذخیرهسازی هستند. این حافظهها ظرفیتهای بسیار بالایی دارند، ولی تأخیر بسیار کمی را به سیستم تحمیل میکنند و کارایی آنها بهمراتب بالاتر از سرورهای امروزی است. اینتل فناوری بهنام 3D XPoint را برای حافظههای رم توسعه میدهد که بهنوعی همان حافظههای Persistent محسوب میشود. اینتل میگوید با این فناوری میتوان ماژولهایی 64 گیگابایتی برای سرورها ساخت که هزار برابر سریعتر و ده برابر حساستر از حافظههای DRAM معمولی هستند. اینتل درصدد است که ماژولهای 128 و 256 گیگابایتی حافظه 3D XPoint را هم بسازد. البته استفاده از این حافظهها، چالشهایی را هم به سرورها تحمیل میکند که باید برای حل آنها و رسیدن به بالاترین کارایی راهکارهایی اندیشیده شود. از سوی دیگر، شاهد استفاده از حافظههای فلش NAND و حافظههای NVMe روی سرورها هستیم. در این حافظهها ظرفیتهای بیشتر در یک فضای فیزیکی کمتری به دست میدهند و مهمتر اینکه سرعت دسترسی به اطلاعات افزایش یافته است. این حافظهها باعث شدهاند که برای هر سرور بتوان حافظه رم بیشتری استفاده کرد و در نتیجه سرعت و قدرت پردازنده و درنهایت سرور را افزایش داد.
بهکارگیری حافظههای SSD روی سرورها باعث افزایش دو برابری کارایی Microsoft SQL Server 2012 میشود و تا 63 درصد کارایی لاگگیری سیستم روی Microsoft Exchange افزایش پیدا میکند. همچنین، این حافظهها میتوانند کارایی Microsoft SQL Server 2016 را سه برابر کنند. اینها دستاوردهایی است که صنعت شبکه سالها در آرزوی تحققشان بوده است و اکنون چیپستهای حافظه برآوردهشان کردند.
تاکنون معماری پردازندههای x86 معماری غالب سرورها است و پردازندههای عمومی و کلی برای هر برنامه کاربردی برنامهریزی و استفاده میشدند، اما در سالهای اخیر شاهد برنامههای کاربردی هوشمندتر و قویتری بر مبنای یادگیری ماشینی، توابع امنیتی و فشردهسازی با پهنای باند بالا هستیم که روی پردازندههای عمومی سفارشیسازی شده و بسیار کارآمد اجرا میشوند. در نتیجه، سرورهای جدید براساس ترکیبی از پردازندههای عمومی، پردازندههای گرافیکی، پردازندههای یادگیری ماشینی و پردازندههای رمزنگاری استقرار پیدا میکنند. این سرورها به طور قابل توجهی کارایی را نسبت به پردازندههای عمومی معمولی بهبود و سطح عملکرد کلی سیستم را افزایش میدهند. بهتبع این تغییرات شاهد مراکز دادهای ناهمگون متشکل از انواع سرورها با پردازندههای گوناگون هستیم و دیگر یک معماری خاص و یکسان در سراسر آنها حکمفرمایی نمیکند. این سرورها برای اجرای برنامههای کاربردی یا بارکاری خاصی بهینهسازی شدهاند و میتوانند بهترین کارایی را روی این استفادههای خاصمنظور ارائه دهند. بهعلاوه، برنامههای کاربردی موبایل نیز به پایگاه دادههای سازمانی متصل شدند و باید بهصورت بیدرنگ با کمترین تأخیر اجرا شوند. این نیاز بازار هم باعث شکلگیری نسل جدیدی از سرورها شده است. در حالی که برنامههای کاربری سنتی به تعدادی مشخص از کارکنان، مشتریان یا همکاران محدود میشوند، برنامههای کاربردی موبایل میلیونها مشتری آنلاین دارند. همه مردم میتوانند آنلاین به برنامههای کاربردی شهری، مسافرتی، خدمات بهداشتی، مالی و رسانههای اجتماعی دسترسی داشته باشند. برای مدیریت ترافیک این نرمافزارها به سرورهایی با مشخصات سختافزاری و نرمافزاری خاص نیاز است. به عنوان مثال، برای برنامههای کاربردی موبایل از پایگاه داده NOSQL و حافظههای رم پرسرعت و تجهیزات ذخیرهسازی مبتنی بر حافظههای فلش استفاده میشود.
همان طور که گفتیم، سرورها فقط در حوزههای نرمافزاری دستخوش تغییر نشدند و در بخش سختافزار اندازه، حجم، طراحی و قیافه نیز تفاوتهای بسیار زیادی با گذشته کردند. یکی از رویکردهای مهم چند سال اخیر صنعت شبکه، ورود میکروسرورها و میکرومراکز داده بوده است. سرورهای غولپیکر و ترسناک گذشته به دستگاههایی به اندازه نصف یک کیس کامپیوتر رومیزی و به اندازه یک دستگاه NAS رومیزی درآمده و بهراحتی جابهجا و در شبکه نصب و استفاده میشوند. بسیاری از شرکتها نیاز به پردازش و ذخیرهسازی اطلاعات در لبه شبکه دارند یا برای یک بار کاری خاص در شبکه نیاز به سرور دارند، اما این سرور نباید سختافزارهای بسیار گرانقیمت یا سنگین پردازشی داشته باشد. اینجا است که طیف وسیعی از میکروسرورها با مشخصات سختافزاری متنوع روانه بازار شدند تا برای کاربردهای خاص استفاده شوند. این میکروسرورها در چند ثانیه پس از روشن شدن در شبکه قرار گرفتند و نیازی به پیکربندی یا استقرار برنامههای کاربردی خاصی ندارند. میکروسرورها هزینه کمتر و کارآمدی بیشتری برای کسب و کارها بهخصوص کسب و کارهای کوچک و متوسط دارند، برق کمتری مصرف میکنند و نیاز به فضای بزرگی برای استقرار در شبکه ندارند. در سالهای اخیر ساختار میکروسرورها نیز تغییراتی یافته است و شاهد استفاده از پردازندههای سفارشی شده برای کارهای خاص بهجای پردازندههای عمومی هستیم. شرکتها میتوانند میکروسرورهایی با پیکربندی متناسب نیاز خود انتخاب کنند و سرویسهای محلی فارغ از سیستم مرکزی شبکه خود به مشتریان ارائه بدهند.
تغییر و تحولات حوزه سرورها نسبت به یک دهه قبل تنها محدود به 7 مورد بالا نمیشود و دهها تغییر و نوآوری کوچک و بزرگ دیگر را شاهد هستیم. در مطلب بالا سعی کردیم 7 رویکرد کلی عوض شده در سرورها را بررسی کنیم. مباحثی مانند بزرگ دادهها، سیستمهای محاسباتی فرامقیاس و نیازهای شدید به افزایش سرعت و کارایی در کنار نیاز به اجرای برنامههای کاربردی خاص مانند یادگیری ماشینی باعث شدند که سرورها دائم در حال تغییر و پوستاندازی باشند و پیشبینی میشود که این روند حداقل تا چند سال آینده ادامه داشته باشد. سرورها دیگر تعریف سنتی خود را از دست دادهاند و بهصورت مفاهیم انتزاعی و مستقل در سیستمها استفاده میشوند. کسی میداند این تجهیزات در 10 سال بعد چه شکلی خواهند بود؟