وقتی نرمافزار با رشد اطلاعات کند میشود
یکی از مشکلاتی که ممکن است در یک نرمافزار به وجود بیاید، این است که برنامه در ابتدای کار عملکرد مناسبی داشته باشد، اما با افزایش حجم اطلاعات، بهتدریج کند شود و در نهایت استفاده از آن برای کاربران دشوار یا حتی غیرممکن شود.
یکی از تجربههایی که در این زمینه داشتهام، مربوط به یک شرکت تولیدی بزرگ بود که چندین شعبه در سراسر کشور داشت.
روزی با من تماس گرفتند و گفتند نرمافزار تحت شبکه آنها بهشدت کند شده است و کاربران دیگر نمیتوانند بهراحتی با آن کار کنند. از من خواستند بررسی کنم که آیا امکان برطرف کردن مشکل وجود دارد یا اینکه لازم است نرمافزار از ابتدا بازنویسی شود.
ابتدا از آنها خواستم موضوع را با واحد پشتیبانی نرمافزار مطرح کنند.
آنها توضیح دادند که برنامهنویس این نرمافزار یکی از کارکنان سابق شرکت بوده که پس از بازنشستگی از مجموعه جدا شده و دیگر در دسترس نیست.
با توجه به این شرایط، از آنها خواستم سورسکد نرمافزار و دسترسیهای لازم را در اختیارم قرار دهند تا بتوانم علت مشکل را بررسی کنم.
پس از بررسی سورسکد، با چند نکته جالب مواجه شدم.
حجم سورسکد نسبتاً کم بود و نرمافزار نیز با استفاده از فناوریهای نسبتاً جدید توسعه داده شده بود. بنابراین در نگاه اول، مسئله به نظر نمیرسید که ناشی از قدیمی بودن فناوری مورد استفاده باشد.
اما با بررسی دقیقتر، علت اصلی کندی مشخص شد.
در بخشهای مختلف نرمافزار، تعداد زیادی کوئری به بانک اطلاعاتی اجرا میشد و در برخی قسمتها اصول مناسب در طراحی و اجرای دستورات پایگاه داده و منطق برنامه رعایت نشده بود.
نتیجه این طراحی در زمانی که حجم اطلاعات کم بود، چندان قابل مشاهده نبود. نرمافزار با تعداد کمی رکورد، عملکرد قابل قبولی داشت و کاربران نیز مشکل خاصی احساس نمیکردند.
اما با گذشت زمان و افزایش اطلاعات، شرایط کاملاً تغییر کرده بود. زمانی که حجم دادهها به چند صد هزار رکورد رسیده بود، اجرای برخی عملیات بسیار زمانبر میشد و نرمافزار عملاً برای کاربران قابل استفاده نبود.
اینجا مشخص شد که مشکل اصلی، تعداد زیاد اطلاعات نبود؛ بلکه نرمافزار از ابتدا به شکلی طراحی نشده بود که بتواند با رشد حجم اطلاعات، عملکرد مناسبی داشته باشد.
وقتی مشکل، خودش را با گذشت زمان نشان میدهد
یکی از نکات جالب این تجربه این بود که نرمافزار در زمان شروع پروژه احتمالاً کاملاً مناسب به نظر میرسید. وقتی اطلاعات کمی در سیستم وجود دارد، بسیاری از مشکلات طراحی و بهینهسازی ممکن است اصلاً دیده نشوند.
اما با افزایش حجم اطلاعات و تعداد کاربران، ضعفهای فنی که در ابتدا قابل مشاهده نبودند، بهتدریج خودشان را نشان میدهند. حتی استفاده از فناوریهای جدید نیز بهتنهایی تضمینکننده عملکرد مناسب نیست؛ طراحی نامناسب الگوریتمها، کوئریهای ناکارآمد و رعایت نکردن اصول بهینهسازی میتواند در ادامه باعث افت عملکرد سیستم شود.
درسی که این تجربه به من داد
این تجربه برای من یادآور یک اصل مهم در طراحی نرمافزار بود: نرمافزار نباید فقط برای شرایط امروز طراحی شود؛ بلکه باید رشد اطلاعات و تعداد کاربران در آینده نیز تا حد امکان در نظر گرفته شود.
ممکن است یک نرمافزار با چند هزار رکورد بسیار سریع باشد، اما همان نرمافزار با چند صد هزار یا چند میلیون رکورد عملکرد کاملاً متفاوتی داشته باشد.
بنابراین هنگام طراحی یک سیستم، فقط نباید پرسید «آیا برنامه امروز درست کار میکند؟» بلکه باید پرسید:
«اگر حجم اطلاعات و تعداد کاربران چند برابر شود، آیا این نرمافزار همچنان میتواند عملکرد قابل قبولی داشته باشد؟»
رشد اطلاعات معمولاً تدریجی است و به همین دلیل مشکلات ناشی از طراحی نامناسب نیز ممکن است مدتها پنهان بمانند.
یک نرمافزار خوب فقط نرمافزاری نیست که با اطلاعات کم سریع باشد؛ باید برای رشد کسبوکار و افزایش حجم اطلاعات نیز آماده باشد.
دیدگاه شما
اگر تجربه یا نظری درباره این مقاله دارید، خوشحال میشوم آن را با من و سایر خوانندگان به اشتراک بگذارید.