A fojtogató füge mintájaStrangler Fig pattern

Növekményesen migrálhat egy korábbi rendszert oly módon, hogy egyes funkciódarabokat fokozatosan új alkalmazásokra és szolgáltatásokra cserél.Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services. A korábbi rendszer funkcióinak lecserélésével idővel az új rendszer felváltja a régi rendszer összes funkcióját, leépítve a régi rendszert, és lehetővé téve annak leszerelését.As features from the legacy system are replaced, the new system eventually replaces all of the old system's features, strangling the old system and allowing you to decommission it.

Kontextus és problémaContext and problem

A rendszerek öregedésével az azok alapjául szolgáló fejlesztési eszközök, üzemeltetési technológia és a rendszerarchitektúrák is jelentősen elavulttá válhatnak.As systems age, the development tools, hosting technology, and even system architectures they were built on can become increasingly obsolete. Új szolgáltatások és funkciók hozzáadásával ezen alkalmazások összetettsége jelentősen nőhet, így a karbantartásuk, illetve a további funkciók hozzáadása nehezebb lesz.As new features and functionality are added, the complexity of these applications can increase dramatically, making them harder to maintain or add new features to.

Egy összetett rendszer teljes cseréje hatalmas feladat lehet.Completely replacing a complex system can be a huge undertaking. Gyakran fokozatosan kell áttérni az új rendszerre a régi rendszer megtartása mellett a még nem migrált funkciók kezelése céljából.Often, you will need a gradual migration to a new system, while keeping the old system to handle features that haven't been migrated yet. Egy alkalmazás két különálló verziójának futtatásakor azonban az ügyfeleknek tudniuk kell, hol találhatóak az egyes funkciók.However, running two separate versions of an application means that clients have to know where particular features are located. Funkciók vagy szolgáltatások migrálásakor az ügyfeleket minden alkalommal frissíteni kell, hogy az új helyre mutassanak.Every time a feature or service is migrated, clients need to be updated to point to the new location.

MegoldásSolution

Fokozatosan cserélje le az egyes funkciókat új alkalmazásokra és szolgáltatásokra.Incrementally replace specific pieces of functionality with new applications and services. Egy előtérrendszer létrehozásával elfoghatja a korábbi háttérrendszernek címzett kérelmeket.Create a façade that intercepts requests going to the backend legacy system. Az előtérrendszer ezeket a kérelmeket a korábbi alkalmazáshoz vagy az új szolgáltatásokhoz irányítja.The façade routes these requests either to the legacy application or the new services. A meglévő szolgáltatások fokozatosan migrálhatóak az új rendszerre, és a fogyasztók továbbra is ugyanazt a felületet használhatják anélkül, hogy bármit érzékelnének a migrálásból.Existing features can be migrated to the new system gradually, and consumers can continue using the same interface, unaware that any migration has taken place.

A fojtogató füge mintájának ábrája

Ez a minta segít minimálisra csökkenteni a migrálással járó kockázatokat, és időben jobban elosztja a fejlesztési folyamatot.This pattern helps to minimize risk from the migration, and spread the development effort over time. Miközben az előtérrendszer biztonságosan a megfelelő alkalmazáshoz irányítja a felhasználókat, tetszés szerint ütemezve adhat funkciókat az új rendszerhez a korábbi alkalmazás működésének fenntartása mellett.With the façade safely routing users to the correct application, you can add functionality to the new system at whatever pace you like, while ensuring the legacy application continues to function. A funkciók új rendszerre való migrálása idővel „leépíti” a régi rendszer funkcionalitását, és nem lesz rá többet szükség.Over time, as features are migrated to the new system, the legacy system is eventually "strangled" and is no longer necessary. A folyamat befejeződése után a régi rendszer biztonságosan megszüntethető.Once this process is complete, the legacy system can safely be retired.

Problémák és megfontolandó szempontokIssues and considerations

  • Fontolja meg, hogyan kívánja kezelni azokat a szolgáltatásokat és adattárakat, amelyeket esetlegesen az új és a régi rendszer is használhat.Consider how to handle services and data stores that are potentially used by both new and legacy systems. Biztosítsa, hogy a két rendszer egyidejűleg hozzáférhessen ezekhez az erőforrásokhoz.Make sure both can access these resources side-by-side.
  • Új alkalmazások és szolgáltatások strukturálása egyszerűen elvégezhető és lecserélhető a jövőbeli fojtogató Fig-Migrálás során.Structure new applications and services in a way that they can easily be intercepted and replaced in future strangler fig migrations.
  • Egy bizonyos ponton, amikor az áttelepítés elkészült, a megfojtott füge homlokzata vagy a régi ügyfelek számára is megkezdi a kialakulását.At some point, when the migration is complete, the strangler fig façade will either go away or evolve into an adaptor for legacy clients.
  • Gondoskodjon róla, hogy az előtérrendszer lépést tartson a migrálással.Make sure the façade keeps up with the migration.
  • Ügyeljen rá, hogy az előtérrendszer ne váljon kritikus meghibásodási ponttá, és ne képezhessen teljesítménybeli szűk keresztmetszetet.Make sure the façade doesn't become a single point of failure or a performance bottleneck.

Mikor érdemes ezt a mintát használni?When to use this pattern

Ezt a mintát háttéralkalmazások új architektúrákra való fokozatos migrálásához használhatja.Use this pattern when gradually migrating a back-end application to a new architecture.

Nem érdemes ezt a mintát használni, ha:This pattern may not be suitable:

  • A háttérrendszernek küldött kérelmek nem foghatók el.When requests to the back-end system cannot be intercepted.
  • Kisebb rendszerek esetében, ahol a teljes körű lecserélés összetettsége alacsony.For smaller systems where the complexity of wholesale replacement is low.