گزاره‌های فنی در استارتاپ - بخش هفتم - مشخصات سرور

سرور

چه سروری و با چه مشخصاتی لازم است؟

بدیهی است که هر چه سروری از نظر سخت‌افزاری امکانات بیشتر و قوی‌تری داشته باشد هزینه‌های ثابت اولیه جهت خرید، همچنین هزینه‌های نگهداری ماهانه بیشتری دارد. بنابراین بهتر است در شروع کار که هنوز محصول در سطح وسیعی درحال استفاده نیست و تعداد زیادی کاربر ندارد، یک سرور مجازی ارزان قیمت به صورت ماهانه اجاره شود. و به مرور که کاربران افزایش پیدا کردند، نسبت به افزایش منابع سخت افزاری و یا تعداد سرورهای مجازی به میزان نیاز اقدام گردد. شاید روزی استارتاپ به نقطه ای برسد که صرفه اقتصادی ایجاب کند سروری اختصاصی خریداری نماید. اما نباید تا آن زمان با خرید یا اجاره یک سرور اختصاصی قوی هزینه غیرضروری به استارتاپ تحمیل و سرمایه اولیه اندک اما با ارزش آن را  تلف کرد.

یکی از مهمترین و گرانقیمت ترین منابع سخت افزاری سرور CPU می باشد. پرسشی که مطرح می شود این است که چه میزان از این منبع لازم است؟ بستگی دارد استارتاپ مورد نظر چند کاربر داشته باشد. به بیان دقیق‌تر، حداکثر تعداد کاربرانی که همزمان به سرور متصل هستند اهمیت دارد. همچنین فاصله زمانی بین دو درخواست متوالی هر کاربر و اینکه پاسخ به هر درخواست کاربر بطور متوسط در چه زمانی قابل محاسبه و ارائه توسط سرور است. مشخص است که دادن پاسخ کاملا دقیق کار ساده ای نیست.

رفتار کاربران هنگام کار با اپلیکیشن و وب سایت‌های مختلف یکسان نیست. برخی اپلیکیشن ها به طور نسبی پر مصرف هستند یعنی معمولا کاربر در طول شبانه‌روز بارها و بارها به آن مراجعه می‌کند مانند پیام‌رسان‌ها و بازی‌ها، اما برخی دیگر کم‌مصرف هستند مانند اپلیکیشن‌های بانکی، با این که مهم و مفید هستند اما کاربر در زمان یکی دو دقیقه و با انجام چند درخواست ساده کارش با آن تمام می شود و از آن خارج می شود. بنابراین ممکن است یک سرور مشخص برای یک اپلیکیشن کم‌مصرف با ۲۰.۰۰۰ نصب فعال مناسب باشد در حالی‌که همان سرور برای یک اپلیکیشن پرمصرف با ۵.۰۰۰ نصب فعال با کمبود منابع مواجه شود.

موضوع بعدی به دانش، تجربه، مهارت و خلاقیت تیم در طراحی معماری، الگوریتم‌ها و حتی کدنویسی سامانه مربوط می‌شود. مثلا اگر سامانه به نحوی طراحی شود تا بدون آن که کاربر آگاه شود یا اثر منفی بر تجربه کاربری بگذارد یا اختلالی در عملکرد ایجاد شود، تعداد درخواست‌های اپلیکیشن به سرور یا زمان محاسبه پاسخ‌ها کاهش پیدا کند، مسلما منابع سرور کمتری مصرف می شود. بنابراین با همان سرور به تعداد کاربر بیشتری می‌توان به صورت همزمان پاسخ داد. لذا یکی از مواردی که پیش از پروموشن و در زمان رشد کاربر همواره در اولویت کار تیم فنی قراردارد بهینه‌سازی معماری، الگوریتم‌ها و قطعات کدهای نوشته شده است.

ابزارهای آنلاین و نرم افزارهای متنوعی با عنوان کلی Stress test  یا Load test  برای شبیه‌سازی رفتار تعداد زیادی کاربر هم‌زمان وجود دارد که تیم فنی می‌تواند با کمک آن‌ها تا حدودی ظرفیت پاسخگویی سرور را اندازه بگیرد یا به شناسایی قطعه کدهای نیازمند به بهبود بپردازد.