مقیاس‌دادن یک پروژه‌ی جانبی تا ۱۰ هزار کاربر

چیزی که یک ایده‌ی آخر هفته بود، کم‌کم به محصولی تبدیل شد که هزاران نفر استفاده‌اش می‌کنند. این‌جا می‌گویم در این مسیر چه آموختم.

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

اما بعد در توییتر دیده شد. و ناگهان «پروژه‌ی آخر هفته‌ی» من کاربران واقعی با انتظارات واقعی پیدا کرد.

صد کاربر اول

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

در این مرحله یک تصمیم حیاتی گرفتم: بیشتر از آنکه بسازم، گوش دادم.

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

// My first "analytics" — just logging to console
window.addEventListener('error', (e) => {
  console.log('User hit an error:', e.message);
  // Later replaced with proper error tracking
});

مسئله‌ی هزار کاربر

حدود هزار کاربر، همه‌چیز شروع به شکستن کرد. رویکردِ فایل JSON دیگر جواب نمی‌داد. زمان پاسخ بالا رفت. سرویس رایگان به مرزهایش رسید.

مجبور شدم تصمیم‌های واقعیِ زیرساختی بگیرم:

  • پایگاه‌داده: از JSON به PostgreSQL کوچ کردم
  • میزبانی: به یک پلن پولی با مقیاس‌دهیِ خودکار ارتقا دادم
  • کش: برای داده‌های پرمراجعه Redis اضافه کردم
  • پایش: برای قطعی و کوئری‌های کند هشدار تنظیم کردم

سخت‌ترین بخش، خودِ کوچِ فنی نبود — این بود که بدون مختل‌کردن کاربران فعلی انجامش دهم. یاد گرفتم تغییرات را تدریجی مستقر کنم، همیشه با یک نقشه‌ی بازگشت.

چیزی که ۱۰ هزار کاربر به من آموخت

رسیدن به ۱۰ هزار کاربر کاملاً دیدگاهم را عوض کرد. در این مقیاس، دیگر به قابلیت‌ها فکر نمی‌کنی و شروع می‌کنی به فکرکردن به سیستم‌ها.

  • قابلیت‌اطمینان مهم‌تر از تازگی است. اگر اپ پایین باشد، کاربر به قابلیت جدیدت اهمیتی نمی‌دهد.
  • کارایی یک قابلیت است. هر ۱۰۰ میلی‌ثانیه تأخیر، بخشی از تعامل را از تو می‌گیرد.
  • مستندسازی وقت را نجات می‌دهد. وقتی دیگران به تیم می‌پیوندند، باید تصمیم‌هایت را بفهمند.
  • خودکارسازی ضروری است. استقرارِ دستی مقیاس نمی‌گیرد؛ خط لوله‌های CI/CD می‌گیرند.

چالش‌های غیرمنتظره

بعضی چیزها غافلگیرم کردند:

  • درخواست‌های پشتیبانی سریع چند برابر می‌شوند. حتی نرخ ۱٪ مشکل، در ۱۰ هزار کاربر یعنی ۱۰۰ تیکت.
  • حالت‌های مرزی به حالت‌های رایج تبدیل می‌شوند. آن باگی که نادیده گرفتی؟ هر روز کسی پیدایش می‌کند.
  • مردم محصولت را به شکل‌هایی استفاده می‌کنند که هرگز تصورش را نمی‌کردی. برای انعطاف‌پذیری بساز.

نگاهی به گذشته

مقیاس‌دادن از صفر تا ۱۰ هزار به زیرک‌بودن نبود — به مداوم‌بودن بود. هر روز حاضرشدن، رفع باگ، گوش‌دادن به بازخورد و بهبودهای تدریجی.

پروژه‌ی آخر هفته حالا یک محصول واقعی است. و بزرگ‌ترین درس؟ ساده شروع کن، اما بنیانی بساز که بتواند رشد کند.

اگر همین حالا روی چیز کوچکی کار می‌کنی، بیش‌ازحد مهندسی‌اش نکن — اما آینده را هم نادیده نگیر. بهترین زمان برای فکرکردن به مقیاس، پیش از آن است که به آن نیاز پیدا کنی.

مقالات مرتبط