tgoop.com/pyHints/115
Last Update:
این باگ ۱ ماه تیم رو درگیر کرده بود :
توسعه و تست همزمان بصورت پارالل توی تیمهایی که هستم پیش میره (اگر تعداد نیرو کافی باشی)
یک بخشی از کد رو داریم که همهی تست هارو به درستی پشت سر میذاره، حتی تستهایی که توی pipeline و CI/CD داریم
همه چیز حتی بصورت هفتگی روی سیستم ها درست کار میکنه
اما بمحض اینکه میره روی سرور تست خصوصی یا
A/B test
سرعتش تا ۲۰ برابر کندتر میشه شایدم بیشتر
ولی این مشکل رو روی سیستم دولوپرها نداریم.
پیدا کردن این مدل باگها خیلی سخت میتونه باشه، ولی خب بالاخره پیداش کردیم.
مشکل چی بود: if item in mylist:
همین خط کد، ۲ تا مسئله داشتیم،
۱- نیروی junior ایی از طرف شرکت به تیم اضافه شده
۲- توی تیم DevOps هم چون کار روتین شده بوده، سپردهاند به یک نیروی Mid-level نگهداری رو
و همزمان ۲ تا خطا انجام شده :
۱- نیروی تیم توسعه و استفاده از in
توی پایتون
۲- نیروی تیم DevOps و تبدیل یکی از pipeline های تست، ازش پرسیدند چرا انقدر تست طول میکشه بنده خدا رفته چک کرده دیده یک دیتاست بزرگ داریم برای تست
اومده این رو با یک دیتای کوچیکتر جایگزین کرده
و چون نیروی junior توسعه دهنده هم سواد کافی نداشته روی
mylist
توی مثال بالا برای چک کردن اینکه آیا یک نمونهای وجود داره یا نه از
in
استفاده کرده، که روی حجم بالای دیتا منبع اصلی کند بودن هست :
راهکار :
۱- چون روی دیتاهای حجیم کار میکنیم، DevOps نباید دیتای تست رو تغییر میداد (اینجوری باگ خیلی زودتر خودش رو نشون میداد)
۲- نیروی تیم توسعه نباید از in و list استفاده میکرد :
۲-۱ : اول به این دلیل که ما اندیس داده رو نمیخواهیم فقط وجود یا عدم وجودش توی کدها مهم بوده که نوع دادهای set بسیار اینجا کمک کننده بود, همین که بدونیم ۱ مورد وجود داره برامون کفایت میکنه این یعنی فضای جستجو کوچکتر
۲-۲ : دستور in بطور کلی کند هست (برای list کوچیک خوبه) باید بجاش از الگوریتمها و ساختمان داده درستش استفاده میکرد که Tree گزینه خوبی هست قطعاً.
دو تا اشتباه همزمان میتونه ۱ ماه همهی تیم رو سردرگم کنه
نکتهی مهم :
حواستون باشه کجا از in
استفاده میکنید و مهمتر اگر برای داده حجیم کد میزنید حتماً یکبار روی این حجم داده هم تست انجام بدید.
BY Python Hints
Share with your friend now:
tgoop.com/pyHints/115