دیپلوی
نسخهای که روی سایت است باید همان چیزی باشد که در ریپو است، و بالا آوردنش نباید به حافظهٔ یک نفر وابسته باشد. اگر استقرار دستی و ترسناک است، ماههای اول صرف این میشود که مسیر انتشار روشن شود.
پشتیبانی برای من نجات نیمهشب یک پروژهای نیست که سالها کسی به آن دست نزده. پیشگیری است: دیپلوی سالم، وابستگیای که رها نشده، بکاپ که یک بار واقعاً برگردانده شده، و تغییر کوچک که تبدیل به پروژهٔ تازه نمیشود.
این چکلیست برای استکی است که خودم میسازم و میتوانم تنها نگه دارم: React، Next.js و Node.js. وردپرس قفلشده با افزونه، یا اپ نیتیوی که سورسش دست من نیست، پشتیبانی من نیست.
مهدی رضاییام. فولاستک، دوازده سال، در ایروان. شیفت چرخشی و میز کمک ندارم. اگر سایت پایین باشد همان را اولویت میدهم، ولی عدد «سی دقیقه» را جایی امضا نکردهام و اینجا هم نمینویسم.
این صفحه برای کسی است که سایتش بالا است، سورس را دارد، و میخواهد یک نفر که کد را میفهمد حواسش باشد. اگر دنبال تیمی هستی که محتوایت را هم بنویسد و همزمان محصول جدید بسازد، این قرارداد آن کار را پوشش نمیدهد.
محدوده را کتبی مینویسیم، بعد عدد.
هر ماه اینها را نگاه میکنم. اگر چیزی در سایت تو معنی ندارد، از فهرست خط میخورد و بهجایش کار الکی گزارش نمیسازم.
نسخهای که روی سایت است باید همان چیزی باشد که در ریپو است، و بالا آوردنش نباید به حافظهٔ یک نفر وابسته باشد. اگر استقرار دستی و ترسناک است، ماههای اول صرف این میشود که مسیر انتشار روشن شود.
بهروزرسانی کتابخانهها را بیهوا و یکجا انجام نمیدهم. آنهایی که سوراخ امنیتی یا شکست قریبالوقوع دارند اولویت دارند. آپدیت بهخاطر آپدیت، ریسک بیهوده است.
بررسی میکنم صفحهٔ اصلی، مسیر مهم و سرویس پشتی واقعاً جواب بدهند. ابزار مانیتورینگ اگر باشد مال اکانت تو است. من داشبورد اجارهای به اسم خودم نمیفروشم.
فایل بکاپ که کسی برنگردانده باشد، خیال است. در ماه اول یک بار برگرداندن را امتحان میکنم، روی محیطی که به سایت زنده آسیب نزند. بعد از آن، ریتم آزمون را در یادداشت ماه مینویسم.
اگر فرم تماس یا پرداخت در محدودهٔ سایت باشد، مسیرشان را دورهای از بیرون چک میکنم. پرداخت جدید، درگاه تازه، یا قانون مالیاتی تازه، قابلیت جدید است و داخل این چکلیست فرض نمیشود.
اگر سرعت قابل لمس خراب شود، نگاه میکنم کدام تغییر اخیر باعثش شده. تغییر کوچک یعنی اصلاح یک اشکال یا یک بخش موجود. صفحهٔ تازه، محصول تازه و کمپین، پشتیبانی نیست.
ماه اول شلوغتر از ماههای بعد است، چون هنوز نمیدانم سایت شبها چطور میخوابد. بعدش کار باید کسلکننده و منظم شود. اگر هر ماه بحران تازه داری، یا سایت مسئلهٔ دیگری دارد یا این قرارداد پوشش اشتباهی است.
چند روز
ریپو، محل استقرار، دامنه، فرم و اینکه آخرین نفر کی دست زده. اگر کد را نتوانم بخوانم، همان اول میگویم و قرارداد را باز نمیکنم.
هفتهٔ اول
هاست، دامنه، ریپو، ایمیل فرم و هر اکانت پرداخت باید مال تو باشد و من همکار باشم. دسترسی شخصی که با بستن همکاری گم شود را قبول نمیکنم.
هفتهٔ اول یا دوم
بکاپ را درمیآورم و یک بار برمیگردانم. اگر برنگشت، اولویت همان است، نه تغییر رنگ دکمه. تا این مرحله روشن نشود، دربارهٔ «آرامش» حرف نمیزنم.
تا پایان ماه اول
چیزهایی که اگر بمانند دردسر میشوند: دیپلوی شکننده، وابستگی رهاشده، فرم بیصاحب، نبود نسخهٔ برگشت. این فهرست کوتاه است و با هم تصمیم میگیریم کدام را در نگهداری حل کنیم و کدام پروژهٔ جداست.
هر ماه، بعد از ماه اول
دیپلوی، وابستگی، بالا بودن، فرم یا پرداخت، و یک نگاه به Core Web Vitals. یادداشت کوتاه مینویسم: چه شد و چه را عمداً انجام ندادم. تغییر کوچک در همین ریتم جا میشود تا وقتی کوچک بماند.
هر وقت درخواست از چکلیست بزرگتر شد
اگر کاری که میخواهی صفحه یا مسیر جدید است، همانجا متوقف میشوم و محدودهٔ جدا مینویسم. پشتیبانی جای قایم کردن پروژهٔ دوم با اسم «یک تغییر کوچک» نیست.
از ایروان یک نفرم. این اولویت میگوید چه چیزی کار همان روز را کنار میزند و چه چیزی در نوبت ماه میماند. ساعت پاسخ نیست.
این را جلوتر از کار دیگر همان روز میگذارم و از ایروان نگاه میکنم. اگر مشکل از سرویسدهنده، دامنه یا درگاهی باشد که دست من نیست، همان را میگویم بهجای اینکه وانمود کنم همهچیز را از اینجا کنترل میکنم. قول سی دقیقه یا هر SLA دیگری نمیدهم.
در نوبت همان هفته است. مثلاً یک مسیر میشکند یا یک فرم خاص خطا میدهد. اگر وسط یک انتشار باشد، انتشار را عقب میکشم تا این خطا بماند روی سایت زنده.
در ریتم ماهانه انجام میشود. این اورژانس نیست و نیمهشب برایش بیدار نمیمانم. اگر هر هفته از این جنس درخواست داری، باید ببینیم حجمش هنوز «کوچک» هست یا دارد به قرارداد دیگری تبدیل میشود.
قرارداد پشتیبانی مشتری را بهعنوان نمونه جعل نمیکنم. mehd.ir، FreezeRadar و npMax را خودم ساختهام و خودم از ایروان بالا نگه میدارم: انتشار، وابستگی و سرپا بودن. نقش من نگهدار این محصولهاست، نه یک میز کمک با چند اپراتور.
ماه اول صرف دسترسی، بکاپ، یک بازیابی آزمایشی و فهرست ریسک میشود. ریتم آرام از ماه دوم است. اگر سایت همین حالا پایین است، اول همان حادثه را جدا نگاه میکنم.
مال تو. دامنه، هاست، ریپو، درگاه و ابزار آمار باید به نام خودت بماند. من دسترسی همکار دارم. روزی که همکاری قطع شود، دسترسیام را حذف میکنی و سایت گروگان نمیماند.
یعنی خودم کد را میبینم و خودم جواب میدهم، فارسی، بدون دفتر تهران. حادثه را از راه دور جلو میبرم. اگر چیزی فقط با نشستن پای سرور تو حل شود و دسترسی ریموت نباشد، همان را میگویم. حضور فیزیکی بخشی از این کار نیست.
کد، بکاپ و اکانتها پیش تو میماند. یادداشتهایی که نوشتهام مال تو است. وظیفهٔ بیدار ماندن من تمام میشود. اگر ماه بعد مشکلی بیاید، آن یک کار تازه است نه ادامهٔ نامرئی قرارداد قبلی.
نه. پشتیبانی رتبهٔ گوگل نمیخرد و تأیید کافهبازار، مایکت، گوگلپلی یا اپاستور را تضمین نمیکند. اگر سایت کند شده باشد به Core Web Vitals نگاه میکنم، ولی جایگاه جستجو مال این قرارداد نیست.
چون سایت مرتب با سایتی که ماه اول باید از زیر آوار دربیاید یکی نیست. محدوده را کتبی مینویسیم، بعد عدد. ساعت پاسخ ساختگی کنارش نمیگذارم.
در فرم صفحهٔ اصلی بنویس سایت چیست، استکش Next.js است یا نه، و الان یک نفر حواسش به انتشار هست یا نه. اگر از متن معلوم شود دنبال بازنویسی هستی، بهجای پشتیبانی همان را میگویم.
محدوده را کتبی مینویسیم، بعد عدد.
نوشتن وضعیت سایتطراحی دوباره، ساخت محصول و سئو را اینجا انجام نمیدهم. اگر درخواستت یکی از اینهاست، همان صفحه محدودهٔ درست را میگوید.