استرنگلر فیگ (Strangler Fig) یک گیاه جالب است که در مناطق گرمسیری و زیرگرمسیری یافت می‌شود. این گیاه‌ها به جنس فیکوس تعلق دارند و برای رویش منحصربه‌فردشان شناخته می‌شوند.

وقتی یک دانه استرنگلر فیگ در شاخه‌های یک درخت میزبان جوانه می‌زند، ریشه‌هایی را به زمین می‌فرستد که در نهایت به زمین می‌رسند. این ریشه‌ها ادامه می‌یابند و ضخامت می‌گیرند و در نهایت ترکیب می‌شوند و یک ساختار شبکه‌ای می‌سازند که درخت میزبان را احاطه می‌کند. همچنین با گذر زمان، ریشه‌های استرنگلر فیگ می‌توانند به طور کامل اطراف تنه درخت میزبان را دربرگیرند، به طوری که به طور موازی با تنه درخت قرار بگیرند

strangler fig tree

وقتی درخت میزبان مرده و تجزیه و تحلیل می‌شود، استرنگلر فیگ باقی می‌ماند و توسط ریشه‌های خود نیز ایستاده می‌ماند. این فرایند باعث ایجاد یک حفره مرکزی خالی در وسط شود که در آنجا درخت میزبان وجود داشته است و یک درخت منحصربه‌فرد و اغلب ترسناک به نظر می‌رسد.

بیان مسئله

با گذشت زمان، با تکامل پروژه نرم افزاری و اضافه شدن ویژگی‌های جدید، بخش‌های خاصی از کد به راحتی قدیمی می‌شوند . این ممکن است به دلیل تغییر در نیازمندی ها، پیشرفت های فناوری، یا صرفاً به این دلیل اتفاق بیفتد که طرح اصلی نیازهای آینده خاصی را پیش بینی نکرده است.

کد قدیمی می تواند چالش هایی را برای توسعه دهندگان ایجاد کند، زیرا ممکن است درک، نگهداری یا گسترش آن دشوارتر باشد. با این حال، با برنامه ریزی دقیق و بازسازی مجدد، می توان کیفیت پایگاه کد را بهبود بخشید و تأثیر مسائل قدیمی را کاهش داد. همچنین برای تیم‌ها مهم است که تعمیر و نگهداری مداوم و بررسی‌های دوره‌ای را برای رسیدگی به مشکلات نوظهور قبل از تبدیل شدن به مشکلات مهم در اولویت قرار دهند.

بعضی از بخش‌های Codebase ها بیشتر از بخش‌های دیگر مدتی طولانی‌تر باقی می‌مانند، اما ناگهان استانداردهای کدنویسی جدید برای کاهش بدهی فنی ظاهر می‌شوند. در نتیجه، شما باید یک برنامه بزرگ را با عدم متوقف کردن (بدون هیچ وقفه‌ای zero downtime) بازنویسی کنید

الگوی شکل‌گیری Strangler Fig یکی از راه‌های موثر برای حل این مشکل است.

Strangler Fig Pattern چیست؟

الگوی Strangler Fig قصد دارد به صورت تدریجی بخش‌های کوچکی از پایگاه کد شما را بازنویسی کند، تا زمانی که پس از چند ماه/سال، تمام پایگاه کد قدیمی خود را  Strangle یا خفه کنید و  در نتیجه بتوان نسخه قدیمی را حذف کرد.