خدمات

پشتیبانی سایت، قبل از این‌که خراب شود

پشتیبانی برای من نجات نیمه‌شب یک پروژه‌ای نیست که سال‌ها کسی به آن دست نزده. پیشگیری است: دیپلوی سالم، وابستگی‌ای که رها نشده، بکاپ که یک بار واقعاً برگردانده شده، و تغییر کوچک که تبدیل به پروژهٔ تازه نمی‌شود.

این چک‌لیست برای استکی است که خودم می‌سازم و می‌توانم تنها نگه دارم: React، Next.js و Node.js. وردپرس قفل‌شده با افزونه، یا اپ نیتیوی که سورسش دست من نیست، پشتیبانی من نیست.

مهدی رضایی‌ام. فول‌استک، دوازده سال، در ایروان. شیفت چرخشی و میز کمک ندارم. اگر سایت پایین باشد همان را اولویت می‌دهم، ولی عدد «سی دقیقه» را جایی امضا نکرده‌ام و این‌جا هم نمی‌نویسم.

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

محدوده را کتبی می‌نویسیم، بعد عدد.

نگهداری به درد کی می‌خورد

  • سایت یا وب‌اپی روی Next.js و Node که خودم ساخته‌ام، یا کدی که خواندنش برای یک نفر ممکن است و صاحبش دسترسی کامل می‌دهد.
  • کسی که می‌خواهد فرم، پرداخت و بالا بودن سایت را جدی بگیرد، نه فقط وقتی مشتری عصبانی زنگ زد.
  • تغییرهای کوچک: متن، یک بخش، یک اشکال مشخص. قابلیت تازه از اول جدا قیمت می‌شود.
  • کسی که ماه اول را برای دسترسی، بکاپ و دیدن ریسک قبول دارد، نه انتظار معجزه در هفتهٔ اول.

چه موقع این قرارداد را باز نمی‌کنم

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

چک‌لیست همین استک

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

دیپلوی

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

وابستگی‌ها

به‌روزرسانی کتابخانه‌ها را بی‌هوا و یکجا انجام نمی‌دهم. آن‌هایی که سوراخ امنیتی یا شکست قریب‌الوقوع دارند اولویت دارند. آپدیت به‌خاطر آپدیت، ریسک بیهوده است.

بالا بودن

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

بکاپ و یک بازیابی آزمایشی

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

فرم و پرداخت

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

Core Web Vitals و تغییر کوچک

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

بیرون از پشتیبانی

ماه اول، بعد ریتم

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

  1. ۱

    دیدن وضعیت واقعی

    چند روز

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

  2. ۲

    دسترسی‌ها به نام تو

    هفتهٔ اول

    هاست، دامنه، ریپو، ایمیل فرم و هر اکانت پرداخت باید مال تو باشد و من همکار باشم. دسترسی شخصی که با بستن همکاری گم شود را قبول نمی‌کنم.

  3. ۳

    بکاپ و یک restore آزمایشی

    هفتهٔ اول یا دوم

    بکاپ را درمی‌آورم و یک بار برمی‌گردانم. اگر برنگشت، اولویت همان است، نه تغییر رنگ دکمه. تا این مرحله روشن نشود، دربارهٔ «آرامش» حرف نمی‌زنم.

  4. ۴

    فهرست ریسک

    تا پایان ماه اول

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

  5. ۵

    ریتم ثابت

    هر ماه، بعد از ماه اول

    دیپلوی، وابستگی، بالا بودن، فرم یا پرداخت، و یک نگاه به Core Web Vitals. یادداشت کوتاه می‌نویسم: چه شد و چه را عمداً انجام ندادم. تغییر کوچک در همین ریتم جا می‌شود تا وقتی کوچک بماند.

  6. ۶

    مرز قابلیت تازه

    هر وقت درخواست از چک‌لیست بزرگ‌تر شد

    اگر کاری که می‌خواهی صفحه یا مسیر جدید است، همان‌جا متوقف می‌شوم و محدودهٔ جدا می‌نویسم. پشتیبانی جای قایم کردن پروژهٔ دوم با اسم «یک تغییر کوچک» نیست.

شدت خرابی، بدون ساعت ساختگی

از ایروان یک نفرم. این اولویت می‌گوید چه چیزی کار همان روز را کنار می‌زند و چه چیزی در نوبت ماه می‌ماند. ساعت پاسخ نیست.

سایت بالا نمی‌آید، یا فرم و پرداخت قطع است

این را جلوتر از کار دیگر همان روز می‌گذارم و از ایروان نگاه می‌کنم. اگر مشکل از سرویس‌دهنده، دامنه یا درگاهی باشد که دست من نیست، همان را می‌گویم به‌جای این‌که وانمود کنم همه‌چیز را از این‌جا کنترل می‌کنم. قول سی دقیقه یا هر SLA دیگری نمی‌دهم.

خطای قابل دیدن برای کاربر، ولی سایت هنوز باز است

در نوبت همان هفته است. مثلاً یک مسیر می‌شکند یا یک فرم خاص خطا می‌دهد. اگر وسط یک انتشار باشد، انتشار را عقب می‌کشم تا این خطا بماند روی سایت زنده.

تغییر متن، عکس، یا اصلاحی که عجلهٔ کسب‌وکار ندارد

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

سایت‌هایی که خودم بالا نگه می‌دارم

قرارداد پشتیبانی مشتری را به‌عنوان نمونه جعل نمی‌کنم. mehd.ir، FreezeRadar و npMax را خودم ساخته‌ام و خودم از ایروان بالا نگه می‌دارم: انتشار، وابستگی و سرپا بودن. نقش من نگهدار این محصول‌هاست، نه یک میز کمک با چند اپراتور.

سؤال‌هایی که قرارداد را خراب می‌کنند اگر نگوییم

شروع پشتیبانی چقدر طول می‌کشد؟

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

ریپو و اکانت‌ها مال کیست؟

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

دورکاری از ایروان یعنی چه؟

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

بعد از قطع همکاری چه می‌ماند؟

کد، بکاپ و اکانت‌ها پیش تو می‌ماند. یادداشت‌هایی که نوشته‌ام مال تو است. وظیفهٔ بیدار ماندن من تمام می‌شود. اگر ماه بعد مشکلی بیاید، آن یک کار تازه است نه ادامهٔ نامرئی قرارداد قبلی.

گوگل یا فروشگاه را هم تضمین می‌کنی؟

نه. پشتیبانی رتبهٔ گوگل نمی‌خرد و تأیید کافه‌بازار، مایکت، گوگل‌پلی یا اپ‌استور را تضمین نمی‌کند. اگر سایت کند شده باشد به Core Web Vitals نگاه می‌کنم، ولی جایگاه جستجو مال این قرارداد نیست.

چرا هزینهٔ ماهانه این‌جا نیست؟

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

اگر سایت را داری و می‌خواهی بماند

در فرم صفحهٔ اصلی بنویس سایت چیست، استکش Next.js است یا نه، و الان یک نفر حواسش به انتشار هست یا نه. اگر از متن معلوم شود دنبال بازنویسی هستی، به‌جای پشتیبانی همان را می‌گویم.

محدوده را کتبی می‌نویسیم، بعد عدد.

نوشتن وضعیت سایت

کارهایی که پشتیبانی نیستند

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