پنل مدیریت وب یک پنجره است، نه منبع دوم حقیقت

پنل مدیریت وب APX مرکز سیستم نیست.

طراحی سخت‌گیرانه است. دیمون مالک وضعیت (state) است. رابط کاربری وب (web UI) یک کلاینت محلی است. این تمایز اهمیت دارد؛ زیرا تعیین می‌کند حقیقت کجا قرار دارد و داده‌ها چقدر می‌توانند دچار انحراف (drift) شوند.

APC لایه کانتکست (context) قابل حمل را فراهم می‌کند. APX لایه زمان اجرا (runtime) و ابزارها را فراهم می‌کند. مدیریت وب متعلق به APX است. این پنل به شما اجازه می‌دهد زمان اجرا را در مرورگر بررسی کنید، اما کپی اختصاصی خود از حقیقت پروژه را نگه نمی‌دارد.

معماری به این صورت کار می‌کند:

  • دیمون یک سرور HTTP محلی را اجرا می‌کند.
  • هر سطح (surface) از طریق HTTP با دیمون صحبت می‌کند.
  • مدیریت وب توسط دیمون سرویس‌دهی می‌شود.
  • مرورگر یک توکن از دیمون دریافت می‌کند.

مرورگر یک پایگاه داده هم‌سطح (peer database) نیست؛ بلکه فقط یک سطح است. وقتی یک پنل وب به منبع دوم حقیقت تبدیل شود، شکست می‌خورد.

داشتن دو نسخه از وضعیت منجر به خطا می‌شود:

  • CLI چیز دیگری را می‌نویسد در حالی که UI چیز دیگری را نشان می‌دهد.
  • یک نشست (session) در مرورگر یک تنظیمات را ویرایش می‌کند، اما دیمون از داده‌های قدیمی استفاده می‌کند.
  • یک بارگذاری مجدد (reload) پروژه‌ای را نشان می‌دهد، در حالی که تب دیگر داده‌های قدیمی (stale) را نمایش می‌دهد.
  • اصلاحات در UI هرگز به زمان اجرای واقعی نمی‌رسد.

APX با سبک نگه داشتن (thin) مرورگر از این مشکل جلوگیری می‌کند. UI از دیمون سوال می‌پرسد. دیمون از هسته (core) سوال می‌پرسد. هسته، ذخیره‌ساز اصلی (backing store) را می‌خواند یا در آن می‌نویسد. این زنجیره ساده است. سادگی خوب است.

یک پنل محلی خوب سه کار انجام می‌دهد:

  • نمایش وضعیت زنده.
  • ارسال یک عملیات