سازمان ملی پرورش استعدادهای درخشان با همکاری ارون برای سه مرحله در سال های ۱۳۹۹ و ۱۴۰۰ به دلیل اپیدمی کرونا آزمون های عملکردی خود را برای تمام دانش آموزان در سطح کشور به صورت آنلاین برگزار کردند. هر آزمون جامع آماری تقریبا ۱۱۰,۰۰۰ نفری را شامل میشد
مقیاس
برای این آزمون در مجموع ۱۰ سرور اپلیکیشن و ۳ سرور دیتابیس را در ۴ دیتاسنتر ابری در سطح کشور کلاستر کردیم برای هر سرور نهایت کانفیگی که می توانستیم را از آروان، پارس پک و ایران سرور درخواست کردیم اپلیکیشن آزمون کاملا متفاوت از اپلیکیشن مدیریت سوالات و دانش آموزان طراحی و اجرا شد. حداقل زمان پاسخ برای پردازش موازی مد نظر بود
شبیه سازی روز آزمون
بایستی فشار واقعی روز آزمون شبیه سازی میکردیم تا از روز آزمون اطمینان خاطر داشته باشیم برای این کار هم ۱۰ سرور jmeter برای شبیه سازی ۱۰۰ هزار کاربر استفاده کردیم که در دیتاسنتر های متفاوت قرار داشتند و کل فرایند را به صورت e2e شبیه سازی کردیم
چالش لاگین در یک لحظه
تمامی دانش آموزان در یک لحظه وارد سیستم میشوند و برای درخواست های خود از rest api با brear token استفاده میکنند در این شرایط نمی توانستم از متد JWT استفاده کنیم چون بار پردازشی رمزنگاری منابع بسیار زیادی را در دریافت سوال و ذخیره پاسخ هدر می داد به این منظور برای دانش آموزان از روز قبل توکن ها را ساختیم و با مقایسه متنی کاربر را شناسایی کردیم. از طرفی اگر کاربری خروج و ورود به سیستم انجام می داد مجدد توکن ساخته میشد
دانلود سوالات
چالش دانلود سوالات نیز برای سرور هزینه شبکه زیادی به سرور تحمیل می کرد بر اساس زمان بندی آزمون تصاویر سوالات ( به دلیل فرمول نویسی ریاضی و عربی تصمیم به انتقال سوالات با تصویر گرفته شد) چند دقیقه قبل آزمون در پوشه ای قرار داده می شد که به کمک CDN کش میشد و پس از آزمون هم از دسترس خارج میشد
ذخیره پاسخ برگ با ترکیب سوالات
برای چالش ذخیره و آپدیت شدید سوالات کاربران قبل آزمون پاسخ برگی برای دانش آموزان ذخیره کردیم با کلید primary ترکیبی به ازای دانش آموز و شماره سوال با جواب خالی تا تمامی فرایند آزمون به صورت update و کلید primary باشد تا نیازی به ایندکس اضافه و تغییر سایز جدول نباشیم. در این ساخت اولیه ترتیب سوالات نیز به صورت تصادفی جا به جا میشد و کلید زنجیره سوالات نیز به اپلیکیشن آزمون ارسال میشد