<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد مهدی</title>
        <link>https://virgool.io/feed/@m_43844107</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-13 19:25:08</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/4866803/avatar/BXDYbK.jpg?height=120&amp;width=120</url>
            <title>محمد مهدی</title>
            <link>https://virgool.io/@m_43844107</link>
        </image>

                    <item>
                <title>چرا پیدا کردن علت اصلی کندی سیستم از خودِ مشکل سخت‌تر شده است؟</title>
                <link>https://virgool.io/@m_43844107/%DA%86%D8%B1%D8%A7-%D9%BE%DB%8C%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%D8%B9%D9%84%D8%AA-%D8%A7%D8%B5%D9%84%DB%8C-%DA%A9%D9%86%D8%AF%DB%8C-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%A7%D8%B2-%D8%AE%D9%88%D8%AF%D9%90-%D9%85%D8%B4%DA%A9%D9%84-%D8%B3%D8%AE%D8%AA-%D8%AA%D8%B1-%D8%B4%D8%AF%D9%87-%D8%A7%D8%B3%D8%AA-qtriwkssxymn</link>
                <description>وقتی یک سیستم کوچک است، پیدا کردن خطا معمولاً کار پیچیده‌ای نیست.یک درخواست به سرور ارسال می‌شود، چند کوئری به دیتابیس اجرا می‌شود و نتیجه به کاربر برمی‌گردد. اگر مشکلی وجود داشته باشد، معمولاً با چند لاگ یا بررسی ساده می‌توان دلیل آن را پیدا کرد.اما با بزرگ‌تر شدن سیستم‌ها، داستان کاملاً تغییر می‌کند.امروزه بسیاری از تیم‌ها از معماری Microservice استفاده می‌کنند. هر درخواست ممکن است از چندین سرویس مختلف عبور کند، به دیتابیس متصل شود، با سرویس‌های شخص ثالث ارتباط برقرار کند و در نهایت نتیجه را به کاربر برگرداند.در چنین شرایطی وقتی کاربر می‌گوید:«سایت کند شده»یا«پرداخت انجام نمی‌شود»یا«بعضی کاربران با خطا مواجه می‌شوند»پیدا کردن دلیل اصلی مشکل دیگر ساده نیست.مشکل از جایی شروع می‌شود که لاگ‌ها کافی نیستندبسیاری از تیم‌ها هنگام بروز مشکل سراغ لاگ‌ها می‌روند.لاگ‌ها اطلاعات ارزشمندی هستند، اما یک محدودیت مهم دارند:آن‌ها فقط اتفاقات را ثبت می‌کنند، نه ارتباط بین اتفاقات را.فرض کنید یک درخواست برای پرداخت وارد سیستم می‌شود.این درخواست:از API Gateway عبور می‌کندبه سرویس احراز هویت می‌رسدموجودی کاربر را بررسی می‌کندبا سرویس پرداخت ارتباط می‌گیردنتیجه را ذخیره می‌کندحالا اگر این فرآیند به جای ۵۰۰ میلی‌ثانیه، ۴ ثانیه طول بکشد، از روی لاگ‌ها همیشه مشخص نیست تأخیر دقیقاً در کدام مرحله ایجاد شده است.Metrics هم همیشه پاسخ را نمی‌دهندبسیاری از تیم‌ها از ابزارهای مانیتورینگ استفاده می‌کنند.آن‌ها می‌توانند نشان دهند:مصرف CPU افزایش پیدا کردهحافظه بیشتر استفاده شدهتعداد خطاها بالا رفتهاما معمولاً نمی‌توانند پاسخ دهند:«کدام درخواست؟»«کدام سرویس؟»«کدام تابع؟»«کدام کاربر؟»در واقع Metrics به شما می‌گوید مشکلی وجود دارد، اما لزوماً دلیل آن را مشخص نمی‌کند.جایی که Distributed Tracing اهمیت پیدا می‌کندDistributed Tracing برای حل همین مسئله به وجود آمده است.به جای اینکه فقط لاگ یا متریک جمع‌آوری شود، مسیر کامل یک درخواست در سیستم ثبت می‌شود.در نتیجه می‌توان مشاهده کرد:درخواست از کجا شروع شده استاز چه سرویس‌هایی عبور کرده استهر سرویس چه مدت زمان پردازش داشته استخطا دقیقاً در کدام بخش رخ داده استبه جای حدس زدن، تیم می‌تواند مسیر واقعی درخواست را مشاهده کند.یک مثال واقعیفرض کنید کاربران گزارش می‌دهند که فرآیند پرداخت بسیار کند شده است.هیچ خطایی ثبت نشده.CPU و RAM نیز وضعیت طبیعی دارند.در نگاه اول همه چیز سالم به نظر می‌رسد.اما با بررسی Trace مشخص می‌شود:سرویس پرداخت ۱۲۰ میلی‌ثانیه زمان مصرف کردهسرویس احراز هویت ۸۰ میلی‌ثانیه زمان مصرف کردهاما یک API خارجی بیش از ۳ ثانیه تأخیر داشته استدر این حالت تیم ظرف چند دقیقه علت اصلی مشکل را پیدا می‌کند؛ در حالی که بدون Trace ممکن بود ساعت‌ها زمان صرف بررسی لاگ‌ها شود.چرا این موضوع برای تیم‌های ایرانی مهم‌تر است؟بسیاری از ابزارهای Observability مطرح دنیا برای شرکت‌های ایرانی چالش‌هایی ایجاد می‌کنند:هزینه دلاریمحدودیت‌های دسترسیپیچیدگی در راه‌اندازینیاز به زیرساخت‌های جانبی متعدددر نتیجه بسیاری از تیم‌ها یا اصلاً از این ابزارها استفاده نمی‌کنند یا تنها بخش کوچکی از قابلیت‌های آن‌ها را به کار می‌گیرند.در حالی که با رشد سیستم‌ها، نیاز به مشاهده‌پذیری (Observability) دیگر یک قابلیت دور از دسترس نیست؛ بلکه بخشی ضروری از فرآیند توسعه و نگهداری نرم‌افزار محسوب می‌شود.جمع‌بندیهرچه سیستم‌ها بزرگ‌تر می‌شوند، پیدا کردن علت اصلی مشکلات دشوارتر می‌شود.لاگ‌ها مهم هستند.متریک‌ها مهم هستند.اما زمانی که بخواهیم دقیقاً بفهمیم یک درخواست چه مسیری را طی کرده و دلیل واقعی کندی یا خطا چیست، Distributed Tracing به یکی از مهم‌ترین ابزارهای تیم‌های فنی تبدیل می‌شود.سؤال دیگر این نیست که «آیا سیستم ما مشکل دارد؟»سؤال این است که «چقدر سریع می‌توانیم علت واقعی آن را پیدا کنیم؟»</description>
                <category>محمد مهدی</category>
                <author>محمد مهدی</author>
                <pubDate>Sat, 13 Jun 2026 08:41:32 +0330</pubDate>
            </item>
            </channel>
</rss>