افشار محبی
افشار محبی
خواندن ۳ دقیقه·۳ سال پیش

میکروسرویس ها و به هم ریختگی های آخر سال

قسمت سیزدهم – 1400/9/10

امروز دو ماه از حضورم در شرکت می‌گذرد. این سه هفته اخیر و به‌خصوص این سه روز اخیر یک مقدار سخت گذشت. سه روز گذشته را شدیداً درگیر یک task ساده برای عدم ارسال بعضی مقادیر خاص بودم. اما به دلایل فنی خیلی خیلی طول کشید. الان که این‌ها را می‌نویسم کار تمام شده و منتظر QA است ولی تا اینجا برسم خیلی اذیت شدم.

در اولین تلاش، یک کامیت کردم و مطمئن بودم که مشکل برطرف می شود. بعد از اینکه به سرور تست منتقل شد، هر کاری کردم دیدم که خروجی اصلاً تغییری نکرده و آن مقادیر اضافه هنوز موجود هستند. دوباره build کردم، چند بار هم با jenkins سر و کله زدم ولی مشکل برطرف نشد. تلاش کردم خطا را در local خودم به وجود بیاورم ولی موفق نشدم. اینقدر که میکروسرویس ها به هم وابسته بودند که اصلاً موفق به انجام این کار نشدم. از همکارم راهنمایی خواستم. سه تا میکروسرویس را معرفی کرد که اگر با هم اجرا کنم، اصل خطا را خواهم دید. اما اصلاً خود برنامه هم اجرا نمی شد. نوشتن component test هم خیلی کمکی نمی کرد.

به هر صورت یک روز گذشت و فردای آن روز همکارم دلش سوخت و کمک کرد تا خطا را در local خودم به وجود بیاورم. سر و کله زدن با این همه میکروسرویس نیاز به داشتن تجربه قبلی روی آن دارد. من که تازه دو ماهه اینجا هستم و در جریان نوشتن کدها نبوده ام. اما همکارم یک سال است که با این code base سر و کله می زند. به هر صورت با comment کردن یکی دو جای به‌خصوص و اضافه کردن دو میکروسرویس دیگر، خطا قابل مشاهده شد. هر چند که RAM و CPU Usage سیستم ضعیف من تمام روز بالای 90 درصد بود.

بعد از آنکه فهمیدم مشکل از کجا است تازه باید حلش می کردم. کلی بالا و پایین کردم و در کمال ناباوری دیدم که Automapper یک جای کار به collection مربوطه رکورد اضافه می‌کند. اصلاً این code base استفاده بسیار شدیدی از Automapper دارد و نصف کدهای سیستم در Automapper قرار دارد. مشکل را برطرف کردم ولی این بار component test ها ناز می کردند. از شانس بدم، تست ها روی سیستم لوکال درست اجرا نمی شدند و من مجبور بودم از Pipeline بیت باکت برای چک کردن آن‌ها استفاده کنم. بالاخره تست ها را هم درست کردم و کار را به QA سپردم. ولی خیلی خیلی طول کشید. حتی صدای PM هم در آمده بود.

کلاً استفاده به شدت غلیظ از Automapper، تعدد میکروسرویس ها و config نامناسب jenkins از مشکلات اساسی این کار هستند. بماند که بیشتر سرویس ها روی Amazon هستند و من می‌ترسم VPN من به درستی کار نکرده و خود این هم محل اشکال باشد.

یک مشکل دیگر که این اواخر خیلی اذیت کرده کرونای یکی از افراد کلیدی، مرخصی طولانی مدت یکی از همکاران و به هم ریختگی آخر سال است. همه در حال مرخصی گرفتن و برنامه‌ریزی برای تعطیلات هستند. بعضا جایگزین مشخصی برای شخص وجود ندارد. علاوه بر این تکلیف خودم برای مرخصی روشن نیست. یک بار شنیدم که در شش ماه اول قرارداد امکان مرخصی ندارم ولی یک بار هم گفتند که می‌توانم مثل بقیه تعطیلات سال نو را تعطیل باشم. این در حالی است که تعطیلات رسمی 25 دسامبر و 1 ژانویه بوده که هر دو شنبه بوده و خود به خود تعطیل هستند. اصل تعطیلات مرخصی پایان سال است که در فاصله این دو روز گرفته می‌شود و من هم ندارم. علی الظاهر مرخصی های 2021 به سال جدید منتقل نمی‌شوند و این خودش یک ابهام دیگر در قوانین مرخصی برای من است.

تا بعد.

میکروسرویستستمرخصیبه هم ریختگیدیباگ
مهندس نرم افزار، توسعه دهنده، برنامه نویس
شاید از این پست‌ها خوشتان بیاید