Skip to content

Latest commit

 

History

History
40 lines (21 loc) · 5.03 KB

Strangler Fig pattern.md

File metadata and controls

40 lines (21 loc) · 5.03 KB

‏Strangler Fig pattern

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

زمینه و مشکل

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

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

راه‌حل

به طور تدریجی بخش‌های خاصی از توابع و قسمت‌‌های عملیاتی مهم را با برنامه‌ها و سرویس‌‌های جدید جایگزین کنید. یک نما یا façade ایجاد کنید که request ‌هایی را که به سیستم قدیمی backend می‌روند را رهگیری کند. façade این درخواست‌ها را یا به برنامه قدیمی یا سرویس‌‌های جدید هدایت(route) می‌کند. ویژگی‌‌های موجود را می‌توان به‌تدریج به سیستم جدید منتقل کرد و مصرف‌کنندگان می‌توانند به استفاده از همان رابط یا interface ادامه دهند، غافل از اینکه متوجه بشوند که هرگونه تغییر یا migrate صورت‌گرفته است.

strangler

این الگو کمک می‌کند تا خطر migrate به حداقل برسد و تلاش برای توسعه نرم‌افزار در طول زمان پخش شود. ازآنجایی‌که façade کاربران را به طور ایمن به برنامه صحیح هدایت می‌کند، می‌توانید با هر سرعتی که دوست دارید عملکردی را به سیستم جدید اضافه کنید و درعین‌حال اطمینان حاصل کنید که برنامه قدیمی به کار خود ادامه می‌دهد. باگذشت زمان، با انتقال ویژگی‌ها به سیستم جدید، سیستم قدیمی در نهایت 'خفه(strangled)' می‌شود و دیگر ضروری نیست. پس از تکمیل این فرایند، سیستم قدیمی می‌تواند با خیال راحت بازنشسته شود.

مسائل و ملاحظات:

نحوه مدیریت سرویس‌ها و ذخیره‌‌های داده‌ای که به طور بالقوه توسط سیستم‌‌های جدید و قدیمی استفاده می‌شوند را در نظر بگیرید. مطمئن شوید که هر دو می‌توانند در کنار هم به این منابع دسترسی داشته باشند.

از این الگو هنگام انتقال تدریجی یک برنامه back-end به یک معماری جدید استفاده کنید.

این الگو ممکن است مناسب نباشد:

*‏ زمانی که درخواست‌ها به سیستم back-end قابل‌رهگیری نباشد.
*‏ برای سیستم‌های کوچک‌تر که پیچیدگی تعویض به سیستم جدید بسیار کم است.

قدم بعدی

منابع مرتبطت