گزارش توسعه: صداقت سیستم
سیستمهایی بسازید که حقیقت را میگویند.
یک سیستم تنها به اندازه سیگنالهایش خوب است. اگر کوئریهای شما اتلاف منابع را پنهان میکنند، بررسیهای سلامت (health checks) شما دروغ میگویند، یا ابزارهای شما کارها را تکرار میکنند، سیستم شما صادق نیست.
امروز را صرف کار روی چهار موضوع فنی مختلف کردم. هر کدام از آنها یک درونمایه واحد دارند: صادق کردن سیستم.
۱. عملکرد پایگاه داده
از واکشی دادههایی که استفاده نمیکنید، دست بردارید.
- در محیط توسعه خود از یک N+1 detector استفاده کنید. این کار
lazy-loadهای پنهان را به یک لیست وظایف شفاف تبدیل میکند. eager loadهای بلااستفاده را حذف کنید. اگر ویوی شما از یک ستون استفاده نمیکند، آن را واکشی نکنید.- ثابتها را برای هر درخواست
memoizeکنید. یک مقدار یکسان را چندین بار در یک چرخه دوباره محاسبه نکنید. - کوئریهای داشبورد را گروهبندی کنید. بیست فراخوانی کوچک
countرا با یک کوئری گروهبندیشده جایگزین کنید.
۲. بررسیهای سلامت واقعی
بررسیای که فقط وجود یک پیکربندی را تأیید میکند، بررسی سلامت نیست؛ بلکه بررسی پیکربندی است.
- یک بررسی سلامت واقعی باید قابلیت دسترسی (reachability) را اثبات کند.
- یک سوکت به میزبان (host) و پورت هدف باز کنید.
- از یک قرارداد (contract) یا رابط (interface) برای جابهجایی بین پروبهای TCP، HTTP یا TLS استفاده کنید.
- هر پروب را روی اتصال مجزای خود اجرا کنید. یک سرویس کند نباید کل ابزار مانیتورینگ شما را متوقف کند.
۳. ابزارهای هوش مصنوعی ایمنتر (MCP)
وقتی به یک عامل هوش مصنوعی (AI agent) دسترسی به سیستم خود میدهید، باید فرض کنید که مرتکب اشتباه خواهد شد.
- از کلیدهای یکسانساز (idempotency keys) استفاده کنید. اگر یک عامل درخواستی را دوباره تلاش کرد، سرور باید به جای ایجاد یک مورد تکراری، همان نتیجه قبلی را برگرداند.
- دادههای شخصی را در مسیر خروجی پاکسازی (scrub) کنید. مسیر پاسخ را به عنوان یک مرز عمومی در نظر بگیرید.
- از کدهای خطای تایپشده استفاده کنید. رشتههای خام (raw strings) ارسال نکنید. یک عامل برای عمل کردن صحیح به کدهای ساختاریافتهای مانند
"not_found"نیاز دارد.
۴. هویت و بازنشانی رمز عبور
وقتی چندین سیستم را تغییر میدهید، ترتیب اهمیت دارد.
- اگر بازنشانی رمز عبور چندین دایرکتوری را تحت تأثیر قرار میدهد، یک منبع حقیقت (source of truth) را انتخاب کنید.
- ابتدا در دایرکتوری مرجع (authoritative directory) بنویسید.
- توالی عملیات را مستند کنید. عبارت «وقتی امتحان کردم کار کرد» تضمینی برای موفقیت در زمان بروز خطا نیست.
هدف ساخت ویژگیهای پرزرقوبرق نیست. هدف ساخت سیستمی است که وقتی به آن نگاه نمیکنید، قابل اعتماد باقی بماند.
