[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1ze6vmmc4sfgu":3,"$f39p6nnw5d9n29":180},{"data":4},[5],{"id":6,"slug":7,"locale":8,"type":9,"title":10,"subtitle":11,"summary":12,"body":13,"primary_topic":14,"knowledge_status":15,"practical_validation":16,"workflow_status":17,"author_id":18,"published_at":19,"updated_at":19,"review_due_at":20,"canonical_url":21,"seo_title":10,"seo_description":12,"hero_asset_id":20,"reading_time":22,"version":23,"technology_versions":24,"review_frequency_days":25,"parent_content_id":26,"sort_in_parent":22,"hub_entry_status":27,"content_blocks":28,"hero_alt_text":21,"hero_caption":21,"hero_credit":21,"publication_scope":170,"access_level":171,"approved_at":172,"approved_by":173,"review_note":21,"home_enabled":174,"home_slot":175,"home_variant":176,"home_priority":177,"home_eyebrow":20,"home_valid_from":20,"home_valid_to":20,"home_image_asset_id":20,"promotion_kind":178,"sponsor_name":20,"sponsor_url":20,"sponsor_disclosure":179},"7cfc14d5-baf3-430c-a66c-03b96b431e39","modernizzazione-legacy-sanitario-strangler-fig","it","CAPSULE","Strangler Fig: sostituire il legacy senza Big Bang","Migrare una capacità alla volta mantenendo il sistema operativo e reversibile.","Lo Strangler Fig consente di sostituire gradualmente un sistema legacy instradando capacità e traffico verso il nuovo fino al completo retirement.","Che cos'è\nLo Strangler Fig è una strategia di modernizzazione incrementale. Il sistema legacy continua a funzionare mentre nuove capacità vengono costruite accanto ad esso. Un punto di ingresso controllato decide, richiesta per richiesta o funzione per funzione, se servire il vecchio o il nuovo.\nPerché è particolarmente adatto alla sanità\nIn un'applicazione clinico-amministrativa il Big Bang è rischioso: molte regole sono implicite, le integrazioni sono numerose e il fermo può avere impatto operativo. Lo Strangler riduce il raggio di esplosione perché permette di migrare una vertical slice, osservarla, confrontarla e fare rollback senza attendere che l'intera piattaforma sia stata riscritta.\nCome funziona\nSi introduce un punto di ingresso stabile: API Gateway, reverse proxy, BFF o Facade.\n\nSi sceglie una capacità con confine riconoscibile, per esempio ricerca paziente, gestione ordine o consultazione episodio.\n\nIl nuovo servizio viene implementato e collegato al gateway.\n\nUna regola di routing sposta solo una parte del traffico o un sottoinsieme di casi d'uso.\n\nSi osservano errori, prestazioni e differenze funzionali; se necessario si torna al legacy.\n\nQuando il nuovo diventa autoritativo, la vecchia funzione viene dismessa e il perimetro del legacy si restringe.\n\nRouting per capacità, non per tecnologia\nIl criterio di instradamento dovrebbe essere espresso con concetti funzionali: «ricerca paziente nuova», «ordini del nuovo dominio», «viewer tramite adapter», non «porta 3001 invece della porta 3002». Il gateway conosce il routing, non la business logic.\nQuando usarlo\nLegacy grande e non completamente documentato.\n\nNecessità di continuità operativa e rollback rapido.\n\nPossibilità di individuare capability o vertical slice separabili.\n\nMigrazione plurimestrale con convivenza inevitabile tra vecchio e nuovo.\n\nQuando non basta\nSe il nuovo servizio deve ancora usare dati e codici del vecchio, lo Strangler da solo non protegge il nuovo modello. In quel caso va combinato con Anti-Corruption Layer e Data Ownership. Se si cambia una singola implementazione dietro un'interfaccia già stabile, Branch by Abstraction può essere più semplice.\nCriterio di successo\nOgni iterazione deve ridurre il perimetro del legacy. Se dopo mesi esistono solo nuove API davanti allo stesso database condiviso, il sistema è stato incapsulato, non realmente strangolato.\n\nStrangler Fig è il pattern di migrazione; non definisce il dominio interno del nuovo servizio. Per quello servono Bounded Context e Ports & Adapters.","58ba728e-da9d-409d-a6c7-31325e3773a8","REVIEWED","NOT_PERFORMED","PUBLISHED","fbbfd4b6-f4c7-4740-94a6-f81eb8fbb1b2","2026-08-25T18:13:50.070Z",null,"",7,5,{},365,"776fc737-dda9-4c82-bd56-b6ba0b7148d6","AVAILABLE",[29,166],{"id":30,"type":31,"version":32,"doc":33},"aa162c5c-d317-5464-9e2b-f279a032d9e7","rich_text",1,{"type":34,"content":35},"doc",[36,44,49,54,58,63,104,109,113,118,145,150,154,159],{"type":37,"attrs":38,"content":40},"heading",{"level":39},2,[41],{"type":42,"text":43},"text","Che cos'è",{"type":45,"content":46},"paragraph",[47],{"type":42,"text":48},"Lo Strangler Fig è una strategia di modernizzazione incrementale. Il sistema legacy continua a funzionare mentre nuove capacità vengono costruite accanto ad esso. Un punto di ingresso controllato decide, richiesta per richiesta o funzione per funzione, se servire il vecchio o il nuovo.",{"type":37,"attrs":50,"content":51},{"level":39},[52],{"type":42,"text":53},"Perché è particolarmente adatto alla sanità",{"type":45,"content":55},[56],{"type":42,"text":57},"In un'applicazione clinico-amministrativa il Big Bang è rischioso: molte regole sono implicite, le integrazioni sono numerose e il fermo può avere impatto operativo. Lo Strangler riduce il raggio di esplosione perché permette di migrare una vertical slice, osservarla, confrontarla e fare rollback senza attendere che l'intera piattaforma sia stata riscritta.",{"type":37,"attrs":59,"content":60},{"level":39},[61],{"type":42,"text":62},"Come funziona",{"type":64,"attrs":65,"content":66},"orderedList",{"start":32,"type":20},[67,74,80,86,92,98],{"type":68,"content":69},"listItem",[70],{"type":45,"content":71},[72],{"type":42,"text":73},"Si introduce un punto di ingresso stabile: API Gateway, reverse proxy, BFF o Facade.",{"type":68,"content":75},[76],{"type":45,"content":77},[78],{"type":42,"text":79},"Si sceglie una capacità con confine riconoscibile, per esempio ricerca paziente, gestione ordine o consultazione episodio.",{"type":68,"content":81},[82],{"type":45,"content":83},[84],{"type":42,"text":85},"Il nuovo servizio viene implementato e collegato al gateway.",{"type":68,"content":87},[88],{"type":45,"content":89},[90],{"type":42,"text":91},"Una regola di routing sposta solo una parte del traffico o un sottoinsieme di casi d'uso.",{"type":68,"content":93},[94],{"type":45,"content":95},[96],{"type":42,"text":97},"Si osservano errori, prestazioni e differenze funzionali; se necessario si torna al legacy.",{"type":68,"content":99},[100],{"type":45,"content":101},[102],{"type":42,"text":103},"Quando il nuovo diventa autoritativo, la vecchia funzione viene dismessa e il perimetro del legacy si restringe.",{"type":37,"attrs":105,"content":106},{"level":39},[107],{"type":42,"text":108},"Routing per capacità, non per tecnologia",{"type":45,"content":110},[111],{"type":42,"text":112},"Il criterio di instradamento dovrebbe essere espresso con concetti funzionali: «ricerca paziente nuova», «ordini del nuovo dominio», «viewer tramite adapter», non «porta 3001 invece della porta 3002». Il gateway conosce il routing, non la business logic.",{"type":37,"attrs":114,"content":115},{"level":39},[116],{"type":42,"text":117},"Quando usarlo",{"type":119,"content":120},"bulletList",[121,127,133,139],{"type":68,"content":122},[123],{"type":45,"content":124},[125],{"type":42,"text":126},"Legacy grande e non completamente documentato.",{"type":68,"content":128},[129],{"type":45,"content":130},[131],{"type":42,"text":132},"Necessità di continuità operativa e rollback rapido.",{"type":68,"content":134},[135],{"type":45,"content":136},[137],{"type":42,"text":138},"Possibilità di individuare capability o vertical slice separabili.",{"type":68,"content":140},[141],{"type":45,"content":142},[143],{"type":42,"text":144},"Migrazione plurimestrale con convivenza inevitabile tra vecchio e nuovo.",{"type":37,"attrs":146,"content":147},{"level":39},[148],{"type":42,"text":149},"Quando non basta",{"type":45,"content":151},[152],{"type":42,"text":153},"Se il nuovo servizio deve ancora usare dati e codici del vecchio, lo Strangler da solo non protegge il nuovo modello. In quel caso va combinato con Anti-Corruption Layer e Data Ownership. Se si cambia una singola implementazione dietro un'interfaccia già stabile, Branch by Abstraction può essere più semplice.",{"type":37,"attrs":155,"content":156},{"level":39},[157],{"type":42,"text":158},"Criterio di successo",{"type":160,"content":161},"blockquote",[162],{"type":45,"content":163},[164],{"type":42,"text":165},"Ogni iterazione deve ridurre il perimetro del legacy. Se dopo mesi esistono solo nuove API davanti allo stesso database condiviso, il sistema è stato incapsulato, non realmente strangolato.",{"id":167,"type":168,"version":32,"text":169},"855ead17-6f8a-5188-8cc2-4920545e2811","callout","Strangler Fig è il pattern di migrazione; non definisce il dominio interno del nuovo servizio. Per quello servono Bounded Context e Ports & Adapters.","PORTAL","ANONYMOUS","2026-08-25T18:13:48.664Z","794a9185-136c-4415-ab23-cd144eb5870e",false,"LATEST","AUTO",0,"EDITORIAL","Sponsorizzato",{"sources":181,"secondaryTopics":182,"tags":183,"primaryTopic":184,"technologies":188},[],[],[],[185],{"id":14,"name":186,"slug":187},"Software Architecture","software-architecture",[]]