Performance در لغت یعنی اجرا و اگر از زاویه دید نرمافزاری بخواهیم معنی آن را بگوییم، میشود عملکرد برنامه و چگونگی پاسخدهی آن به کاربر نهایی!
حالا همین Performance یا اجرای برنامه، به مدیریت نیاز دارد و لازم است برای بالا بردن کیفیت کار، عملکرد بخشهای مختلف برنامه را زیر نظر بگیریم. مدیریت بخشهای مختلف یک برنامه، چگونگی اجرای کدها و شناسایی نقاط ضعف، همیشه از چالشهای توسعهدهندگان بوده است.
برای مثال فرض کنید که سایتی مشابه یوتیوب و آپارات را بهعنوان یک سایت مرجع برای بارگذاری و مشاهده محتوای ویدیویی طراحی کردید. هنگامی که کاربر محتوای خود را بارگذاری میکند، سرویسهای مختلفی اجرا میشوند و محاسبه اینکه هر کدام از آنها چگونه اجرا شده و چقدر زمانبر هستند برای شما به عنوان توسعهدهنده آسان نیست.
در اینجور مواقع APM کمک میکند تا به راحتی روند اجرا را مدیریت کنید. میپرسید چگونه؟
این مقاله به APM یا Application Performance Mnagement و چگونگی کارکرد آن اختصاص دارد. در این مقاله با مفهوم APM و تعابیر مختلف آن آشنا میشوید و فواید استفاده از آن را میفهمید. برای آشنایی بیشتر با این سازوکار با ما همراه باشید.
APM چیست؟
عبارت APM مخفف Application Performance Management یا Application Performance Monitoring است. اغلب این دو مفهوم را به جای یکدیگر استفاده میکنند؛ اما از لحاظ کارکرد، مدیریت با نظارت تفاوت دارد.
در واقع نظارت بر عملکرد برنامه، بخشی از مدیریت عملکرد برنامه است. یا بهتر بگوییم، بسیاری از راهکارهای مدیریت عملکرد برنامه با کمک ابزارهای نظارت و بهمنظور مشاهده و جمعآوری داده و تجزیه و تحلیل آنها انجام میشود.
در اصل APM به معنی مدیریت مداوم عملکرد برنامه، با هدف در دسترس بودن آن و بهبود تجربه کاربران نهایی است.
مدیریت عملکرد یک برنامه، باعث میشود تا توسعهدهنده تمرکز بیشتری بر منابع داشته باشد و به یک تصویر کلی و واضح از روند اجرا دست یابد. این تصویر موجب آگاهی بیشتر نسبت به کاربر نهایی و تعامل آنها با برنامه نیز میشود.
چرا باید از APM استفاده کرد؟
در پاسخ به این سوال میتوان گفت که APM کمک میکند تا بخشهای موثر در عملکرد کلی برنامه را تشخیص داده و همبستگی هر بخش را با دیگر بخشها (نرمافزارها و سختافزارها) در محیط شناسایی کنیم. در این صورت که اگر بخشی دچار مشکل شود، فوراً قابل شناسایی و تعمیر است.
مثالی که در ابتدای مقاله زدیم را به خاطر بیاورید. یکی از مهم ترین فواید APM محاسبه و نمایش زمان اجرای هر سرویس و میزان استفاده از آن است. علاوه بر آن اگر بخشی دچار مشکل باشد و کاربران را موقع کار با سیستم اذیت کند، شناسایی شده و توسعهدهنده فرصت اصلاح آن را پیدا میکند.
این رویکرد برای صاحبان محصول و رهبران تجاری ارزشمند است؛ زیرا این افراد همواره میخواهند بدانند کدام بخش از برنامه برای کاربران نهایی ضروری و پرکاربرد است تا اولویت بهبود و خطایابی آن بیشتر شود و تا چه حد مشکلات عملکرد برنامه، مانع بهرهوری هستند. در نهایت با به کارگیری صحیح APM میتوان از ریزش کاربران جلوگیری کرد و به یک محصول موفق دست یافت.
APM چگونه کار میکند و شامل چه بخشهایی است؟
APM دادههای مربوط به عملکرد نرمافزار را جمعآوری کرده، آنها را برای تشخیص مشکلات احتمالی تجزیه و تحلیل میکند و اطلاعات موردنیاز برای رفع مشکلات موجود را ارائه میکند تا مشکلات در مدت زمان کمی شود.
ابزارهای APM معمولا یک منوی کنترلکننده و یک داشبورد را ارایه میکنند که با استفاده از آنها معیارهای عملکردی بررسی شده و با عملکرد مورد انتظار در حالت ایدهآل مقایسه میشوند. همچنین در صورت بروز مشکل در سیستم، به صورت خودکار به مدیران سیستم، پیام هشدار ارسال میشود.
نرمافزار مدیریت عملکرد به دو بخش اصلی نظارت (Monitoring) و مشاهده پذیری (Observability) تقسیم میشود و با کمک این دو، دادههای عملکردی برنامه گردآوری و تجزیه و تحلیل میشوند. در ادامه چگونگی عملکرد هر یک از این دو بخش را توضیح میدهیم.
نظارت بر عملکرد برنامه (Application Performance Monitoring)
در روند نظارت (monitoring) بر عملکرد برنامه، مجموعهای از عوامل (agents) در محیط برنامه و زیرساخت پشتیبانی مستقر شده و با نمونهداری از عملکرد برنامه و معیارهای مربوط به آن، هر یک بار در دقیقه، برنامه را محک میزنند. اینطوری عملکرد برنامه رصد میشود.
داخل پرانتز: Agent چیست؟
برای نظارت دقیق و به حداقل رساندن میزان خطا، از چندین ابزار مختلف مانند ربات استفاده میشود. این ابزارها با برنامه تعامل دارند و براساس ماموریت، هر یک بخشی از نظارت را برعهده میگیرند. به این رباتها Agent گفته میشود.
حالا چرا با استفاده از روش نمونهبرداری؟
چون حجم دادگانی که باید پردازش شوند بسیار زیاد است و بررسی چند دقیقه یک بار دادهها ممکن نیست. با روش نمونهبرداری، به طور معمول هر عمل نظارتی هر چند دقیقه تکرار میشود و در صورت وجود مشکل در نمونهها، بخش مربوطه بازبینی میشود.
دقت کنید که در این روش بر تجربه دیجیتالی کاربر هم نظارت میشود.
برخی از موارد تجربه دیجیتالی کاربر عبارتند از:
- زمان بارگذاری یا لود یک بخش از برنامه
- زمان پاسخ یک بخش به کاربر
- زمان واکنش کاربر به یک سرویس
- میزان تاخیر در پاسخ دادن
- ….
نظارت بر عملکرد برنامه شامل چه کارهایی است؟
نظارت بر کل چارچوب برنامه انجام میشود و شامل موارد زیر است:
- زبان برنامه نویسی که محصول با آن توسعه یافته (به عنوان مثال جاوا یا php)؛ ردیابی در سطح کد و یافتن بخشهایی از کد که ممکن است باعث ایجاد خطا در عملکرد شود.
- سیستمعامل، منابع محدود یا پرکاربرد موجود را شناسایی میکند.
- پایگاه داده، بر عملکرد پرس و جوها و کوئریهای SQL و چگونگی ذخیره داده در پایگاه داده نظارت میکند.
- APIs
- میانافزار یا Middleware
- رابط کاربری برنامه
- زیرساخت فناوری اطلاعات (که عواملی مانند کاربرد CPU، فضای دیسک و عملکرد شبکه در آن موثر است)
- بررسی میزان در دسترس بودن و سلامت اجزای سختافزاری حتی در زمانی که کاربران در حال استفاده از آنها نیستند را بر عهده دارد
علاوه بر جمعآوری دادههای عملکردی، عوامل اجرایی به صورت خودکار براساس پروفایل کاربران و سوابق آنها، تراکنشهای پرکاربرد را اجرا کرده و هر تراکنش را از صفر تا صد مراحل ردیابی میکنند.
این اطلاعات برای تعیین وابستگیهای برنامه استفاده شده و در نهایت یک نقشه توپولوژی ایجاد میشود. این نقشه کمک میکند تا تصویری از وابستگیهای بین اجزای برنامه و زیرساختار در حالت ایدهآل چه در درون برنامه و چه در فضای ابری ایجاد شود. در دفعات بعدی که کاربر از سیستم استفاده میکند، این نقشه باعث میشود تا نقاط ضعف و قوت بهتر مشخص شوند.
خب؛ تا اینجا با روش نمونهبرداری آشنا شدید. اما…
هرچند نمونهگیری دورهای برای نظارت و خطایابی بخشهای مختلف سیستم موثر است، اما در بسیاری از موارد پاسخگوی مشکلات نیست. برخی وابستگیها در چندین دوره زمانی متغیر هستند و الگوی مشخصی ندارند. همچنین با پیشرفت فناوری، بسیاری از سازمانها از امکاناتی مانند ماکروسرویسها یا محیطهایی مانند داکر (docker) استفاده میکنند و در این حالت، امکان نمونهگیری دورهای یا بسیار دشوار است و یا اصلا وجود ندارد.
در این مواقع از مشاهدهپذیری کمک میگیریم.
مشاهده پذیری عملکرد برنامه (Observability)
در روش مشاهدهپذیری، به جای عوامل نظارتی دورهای از ابزارهای دقیق استفاده میشود تا دادهها را بدون وقفه جمعآوری کنند؛ سپس از تکنیکهای یادگیری ماشین برای ایجاد ارتباط و تجزیه و تحلیل دادهها در زمانی که کاربر در حال کار با سیستم است، استفاده میشود.
در حقیقت Observability جایگزین نظارت نمیشود؛ بلکه در کنار آن یک روند APM بهتر را ممکن میسازد.
مشاهده پذیری عملکرد برنامه شامل چه کارهایی است؟
با یک راهحل مبتکرانه، تیم توسعه و مدیران IT میتوانند کارهای زیر را انجام دهند:
کشف و پرداختن به خطاهای نامعلوم
مانیتورینگ به روش سنتی، فقط میتواند خطاها یا ناهماهنگیهای شناختهشده را شناسایی کند. در حالی که در روشهای جدید، قابلیت یادگیری ماشین و هوش مصنوعی میتواند الگوهای جدیدی را در حین استفاده کاربر از سیستم کشف کند و از بروز خطاهای جدید مرتبط با مشکلات قدیمی جلوگیری کند.
بررسی مسائل و رفع مشکلات در هنگام توسعه
Observability به تیمهای DevOps کمک میکند تا در مراحل اولیه فرآیند توسعه نرمافزار نظارت داشته باشند. بنابراین آنها میتوانند مسائل را قبل از تجربه مشتری، بررسی کرده و خطاها را شناسایی و رفع کنند.
ارتقا
توسعهدهندگان میتوانند بدون استفاده از ابزارهای تکمیلی و براساس همان الگوریتمهایی که برای شناسایی مشکلات و الگوبرداری رفتار کاربر استفاده میشود، روش خود را برای حجم بسیار زیاد دادهها استفاده کنند.
آینده APM چگونه است؟
امروزه ابزارهای APM میتوانند Observability و هوش مصنوعی را در درجات مختلفی به کار بگیرند. برخی از آنها شیوۀ سنتی مانیتورینگ برنامه را با هوش مصنوعی ترکیب میکنند تا تغییراتی که در مسیر تراکنشهای برنامه ایجاد میشود و همچنین وابستگیهای برنامه را بهصورت خودکار شناسایی کنند.
از طرفی برخی نیز مشاهدهپذیری را با هوش مصنوعی ترکیب میکنند تا به طور خودکار خطاهای ناشناخته را تعیین کنند و با بررسی علایم به مدیریت عملیاتهای فناوری اطلاعات (ITOM) بپردازند. در همین زمینه یکی از ابزارهای کاربری در صنعت، تحلیلگر Gartner است که با استفاده از ابزارهای قدرت گرفته از هوش مصنوعی، عملکرد مناسبی را برای سازمانها ایجاد کرده است.
هدف نهایی – و آینده عملیات APM و IT، ترکیب مشاهدهپذیری با هوش مصنوعی برای عملیات IT یا AIOps، بهمنظور ایجاد زیرساختهای خود ترمیمی و خود بهینهسازی است.
جمعبندی
در این مقاله سعی کردیم راهنمای کاملی درباره چگونگی عملکرد APM تهیه کنیم تا براساس نیاز خود از امکانات بیشمار آن استفاده کنید. در مقالات بعدی برخی ابزارهای پرکاربرد APM را معرفی میکنیم که به شما در مدیریت برنامه کمک میکنند.
اگر هنوز سوالی دارید، یا تجربهای از کار با APM دارید که فکر میکنید مفید است، خوشحال میشویم آن را با ما و سایر دوستان ایران مطرح کنید. 💙