درس ۱۷ از ۱۸

سناریو: نرم‌افزار به Database وصل نمی‌شود

در این بخش می‌خواهیم سناریو: نرم‌افزار به Database وصل نمی‌شود را به زبان ساده یاد بگیریم؛ به‌جای حفظ کردن چند اصطلاح، می‌بینیم هر بخش چه اثری در سناریوی واقعی شرکت دارد، از کجا قابل مشاهده است و وقتی نتیجه غیرعادی بود چه چیزی را باید بررسی کرد در این درس تمرکز روی روش فکر کردن در رخداد واقعی است؛ به جای آزمون‌های تصادفی باید Scope، Timeline، Recent Change و Evidence را مشخص کنی و هر تست را برای تأیید یا رد یک فرضیه انجام بدهی؛ هدف فقط رسیدن به Fix نیست، بلکه باید بتوانی علت، نتیجه تست‌ها، Validation و اقدام پیشگیرانه را توضیح و مستند کنی

این درس برای مطالعه کامل نوشته شده است

با حوصله بخوان، مثال‌ها را تحلیل کن و تمرین‌ها را انجام بده؛ هدف حفظ کردن تعریف‌ها نیست

Error و Server مقصد را پیدا کن

در خطای اتصال Database نام یا نشانی سرور، Port، پیام Error و اینکه مشکل برای همه است یا یک Client را مشخص کن؛ Reinstall نرم‌افزار قبل از این بررسی‌ها منطقی نیست برای عیب‌یابی درست، این بخش را فقط به‌عنوان یک اصطلاح حفظ نکن و توجه داشته باش که در سناریوهای چندلایه، ترتیب آزمون اهمیت دارد؛ ابتدا تستی را انتخاب کن که با کمترین ریسک بیشترین اطلاعات را بدهد و اگر فرضیه رد شد مسیر بعدی را انتخاب کن؛ ارتباط با کاربران و ثبت Timeline هم بخشی از مدیریت رخداد است چون بعداً برای تحلیل علت، گزارش مدیریتی و جلوگیری از تکرار استفاده می‌شود برای اینکه این مفهوم در محیط واقعی قابل استفاده شود، سناریوی واقعی را مثل یک رخداد زنده مدیریت کن: ابتدا دامنه اثر و سرویس حیاتی را مشخص کن، سپس شواهد جمع کن و از تغییرهای پرخطر دوری کن؛ اگر چند نشانه هم‌زمان وجود دارند، ممکن است یک علت مشترک مانند DNS، Uplink، Storage یا Identity پشت آن‌ها باشد؛ وابستگی سرویس‌ها را روی کاغذ یا Diagram دنبال کن

DNS و Reachability را تست کن

DNS نام را به اطلاعاتی مانند IP تبدیل می‌کند تا کاربر مجبور نباشد نشانی عددی سرویس‌ها را حفظ کند؛ اگر IP مقصد کار می‌کند ولی نام نه، Query DNS را جداگانه آزمایش کن پاک کردن Cache ممکن است کمک کند اما جای بررسی Record، Resolver و مسیر DNS را نمی‌گیرد DNS سامانه نام‌گذاری توزیع‌شده‌ای است که نام را به داده‌هایی مانند IP مرتبط می‌کند و بسیاری از سرویس‌های سازمانی به Name Resolution درست وابسته‌اند؛ خطای DNS ممکن است در ظاهر شبیه قطعی شبکه یا خرابی برنامه دیده شود، بنابراین باید جداگانه بررسی شود که Client به DNS Server درست اشاره می‌کند، Query پاسخ می‌گیرد، Zone و Record مورد نیاز وجود دارند و زمان و دامنه جست‌وجو با طراحی شبکه سازگارند نکته‌ای که هنگام پشتیبانی نباید از آن عبور کنی این است که سناریوی واقعی را مثل یک رخداد زنده مدیریت کن: ابتدا دامنه اثر و سرویس حیاتی را مشخص کن، سپس شواهد جمع کن و از تغییرهای پرخطر دوری کن؛ اگر چند نشانه هم‌زمان وجود دارند، ممکن است یک علت مشترک مانند DNS، Uplink، Storage یا Identity پشت آن‌ها باشد؛ وابستگی سرویس‌ها را روی کاغذ یا Diagram دنبال کن

Port Database را بررسی کن

Port عدد منطقی داخل TCP یا UDP است که سرویس مقصد را مشخص می‌کند؛ برای تست سرویس باید IP مقصد، پروتکل و Port را با هم بدانیم Port فیزیکی Switch با Port نرم‌افزاری TCP/UDP یکی نیست برای اینکه این مفهوم در محیط واقعی قابل استفاده شود، سناریوی واقعی را مثل یک رخداد زنده مدیریت کن: ابتدا دامنه اثر و سرویس حیاتی را مشخص کن، سپس شواهد جمع کن و از تغییرهای پرخطر دوری کن؛ اگر چند نشانه هم‌زمان وجود دارند، ممکن است یک علت مشترک مانند DNS، Uplink، Storage یا Identity پشت آن‌ها باشد؛ وابستگی سرویس‌ها را روی کاغذ یا Diagram دنبال کن در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: در سناریوهای چندلایه، ترتیب آزمون اهمیت دارد؛ ابتدا تستی را انتخاب کن که با کمترین ریسک بیشترین اطلاعات را بدهد و اگر فرضیه رد شد مسیر بعدی را انتخاب کن؛ ارتباط با کاربران و ثبت Timeline هم بخشی از مدیریت رخداد است چون بعداً برای تحلیل علت، گزارش مدیریتی و جلوگیری از تکرار استفاده می‌شود برای کامل شدن تصویر این موضوع، در این درس تمرکز روی روش فکر کردن در رخداد واقعی است؛ به جای آزمون‌های تصادفی باید Scope، Timeline، Recent Change و Evidence را مشخص کنی و هر تست را برای تأیید یا رد یک فرضیه انجام بدهی؛ هدف فقط رسیدن به Fix نیست، بلکه باید بتوانی علت، نتیجه تست‌ها، Validation و اقدام پیشگیرانه را توضیح و مستند کنی

سرویس و Login Database را کنترل کن

در خطای Database بررسی کن سرویس پایگاه داده در حال اجراست و Login مورد استفاده مجاز و منقضی‌نشده است؛ پیام Authentication با Timeout شبکه، مسیر عیب‌یابی متفاوتی دارد پایش مؤثر فقط جمع کردن عدد و Log نیست؛ باید وضعیت عادی سرویس شناخته شود، Metricهای معنادار انتخاب شوند و Alert زمانی ایجاد شود که نیاز به اقدام دارد؛ Syslog چارچوبی برای انتقال پیام‌های رویداد ارائه می‌دهد و SNMP برای مشاهده و مدیریت بسیاری از تجهیزات شبکه استفاده می‌شود؛ همگام بودن زمان سیستم‌ها برای ارتباط دادن رویدادهای چند دستگاه ضروری است و Log باید در کنار وضعیت سرویس و تغییرات همان بازه تحلیل شود در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: سناریوی واقعی را مثل یک رخداد زنده مدیریت کن: ابتدا دامنه اثر و سرویس حیاتی را مشخص کن، سپس شواهد جمع کن و از تغییرهای پرخطر دوری کن؛ اگر چند نشانه هم‌زمان وجود دارند، ممکن است یک علت مشترک مانند DNS، Uplink، Storage یا Identity پشت آن‌ها باشد؛ وابستگی سرویس‌ها را روی کاغذ یا Diagram دنبال کن

شبکه را از Credential جدا کن

اول Reachability و Port پایگاه داده را جدا از Username/Password آزمایش کن؛ اگر TCP Connection برقرار نمی‌شود، تغییر Credential معمولاً اولین اقدام درستی نیست برای اینکه این مفهوم در محیط واقعی قابل استفاده شود، سناریوی واقعی را مثل یک رخداد زنده مدیریت کن: ابتدا دامنه اثر و سرویس حیاتی را مشخص کن، سپس شواهد جمع کن و از تغییرهای پرخطر دوری کن؛ اگر چند نشانه هم‌زمان وجود دارند، ممکن است یک علت مشترک مانند DNS، Uplink، Storage یا Identity پشت آن‌ها باشد؛ وابستگی سرویس‌ها را روی کاغذ یا Diagram دنبال کن در کار روزمره بهتر است این موضوع را این‌طور بررسی کنی: در سناریوهای چندلایه، ترتیب آزمون اهمیت دارد؛ ابتدا تستی را انتخاب کن که با کمترین ریسک بیشترین اطلاعات را بدهد و اگر فرضیه رد شد مسیر بعدی را انتخاب کن؛ ارتباط با کاربران و ثبت Timeline هم بخشی از مدیریت رخداد است چون بعداً برای تحلیل علت، گزارش مدیریتی و جلوگیری از تکرار استفاده می‌شود برای کامل شدن تصویر این موضوع، در این درس تمرکز روی روش فکر کردن در رخداد واقعی است؛ به جای آزمون‌های تصادفی باید Scope، Timeline، Recent Change و Evidence را مشخص کنی و هر تست را برای تأیید یا رد یک فرضیه انجام بدهی؛ هدف فقط رسیدن به Fix نیست، بلکه باید بتوانی علت، نتیجه تست‌ها، Validation و اقدام پیشگیرانه را توضیح و مستند کنی

مثال محیط واقعی

فرض کن در سناریوی واقعی شرکت مشکلی گزارش شده و احتمال می‌دهی به سناریو: نرم‌افزار به Database وصل نمی‌شود مربوط باشد. قبل از تغییر، وضعیت فعلی را با ابزارهای مرتبط با همان سناریو و مستندات شرکت بررسی می‌کنی و نتیجه را با یک حالت سالم یا مستند معتبر مقایسه می‌کنی. اگر شواهد فرضیه را تأیید کردند، فقط همان بخش مرتبط را تغییر می‌دهی و بعد همان تست را دوباره اجرا می‌کنی تا مطمئن شوی مشکل واقعاً برطرف شده است

اشتباهات رایج

این اشتباه‌ها را تکرار نکن

  • پاک کردن Cache ممکن است کمک کند اما جای بررسی Record، Resolver و مسیر DNS را نمی‌گیرد
  • تغییر دادن تنظیمات مرتبط با سناریو: نرم‌افزار به Database وصل نمی‌شود قبل از اینکه مطمئن شوی مشکل واقعاً به همین بخش مربوط است
  • نتیجه‌گیری درباره سناریو: نرم‌افزار به Database وصل نمی‌شود فقط از روی یک نشانه و بدون انجام تست نهایی
تمرین عملی

حالا خودت انجام بده

  1. در یک نمونه آزمایشی مرتبط با سناریو: نرم‌افزار به Database وصل نمی‌شود، فقط وضعیت فعلی را مشاهده کن و سه نکته‌ای را که برای تشخیص حالت سالم مهم‌اند یادداشت کن
  2. با ابزارهای مرتبط با همان سناریو و مستندات شرکت وضعیت مرتبط با سناریو: نرم‌افزار به Database وصل نمی‌شود را بدون تغییر بررسی کن، سه داده واقعی جمع کن و توضیح بده هرکدام چه چیزی به تو می‌گویند
  3. یک خطای فرضی مرتبط با سناریو: نرم‌افزار به Database وصل نمی‌شود بنویس و مشخص کن اولین تست کم‌خطر تو چیست و چه نتیجه‌ای فرضیه‌ات را رد می‌کند

نکته‌هایی که باید با خودت ببری

  • Error و Server مقصد را پیدا کن
  • DNS و Reachability را تست کن
  • Port Database را بررسی کن
  • سرویس و Login Database را کنترل کن
  • شبکه را از Credential جدا کن
  • در هر مرحله فقط یک تغییر کنترل‌شده انجام بده تا اثر آن قابل تشخیص باشد
خودسنجی

قبل از رفتن به درس بعد، جواب را برای خودت توضیح بده

چرا باید Error و Server مقصد را پیدا کنی و از کجا می‌فهمی نتیجه درست است؟

در خطای اتصال Database نام یا نشانی سرور، Port، پیام Error و اینکه مشکل برای همه است یا یک Client را مشخص کن؛ Reinstall نرم‌افزار قبل از این بررسی‌ها منطقی نیست

چرا باید DNS و Reachability را تست کنی و از کجا می‌فهمی نتیجه درست است؟

DNS نام را به اطلاعاتی مانند IP تبدیل می‌کند تا کاربر مجبور نباشد نشانی عددی سرویس‌ها را حفظ کند؛ اگر IP مقصد کار می‌کند ولی نام نه، Query DNS را جداگانه آزمایش کن

چرا باید Port Database را بررسی کنی و از کجا می‌فهمی نتیجه درست است؟

Port عدد منطقی داخل TCP یا UDP است که سرویس مقصد را مشخص می‌کند؛ برای تست سرویس باید IP مقصد، پروتکل و Port را با هم بدانیم

مطالعه درس همیشه عمومی است

برای ذخیره پیشرفت، دوره را رسمی شروع کن

با ثبت‌نام، تکمیل درس‌ها و نمره آزمون روی حساب ذخیره می‌شود

ثبت‌نام و شروع رسمی