[{"data":1,"prerenderedAt":121},["ShallowReactive",2],{"case-en-legacy-modernization":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"summary":10,"slug":11,"code":12,"label":13,"tags":14,"challenge":17,"approach":18,"outcome":19,"seo":20,"body":23,"_type":114,"_id":115,"_source":116,"_file":117,"_stem":118,"_extension":119,"sitemap":120},"\u002Fen\u002Fportfolio\u002Flegacy-modernization","portfolio",false,"","Modernizing a legacy system","This is a method note: it describes how we approach this kind of problem, not a write-up of a named client.","How we approach a system that runs the business but everyone is afraid to change — without the risk of a full rewrite.","legacy-modernization","M-04","Modernization",[13,15,16],"Architecture","Risk","A system runs the business but is old and fragile. Every change is risky, and a full rewrite tends to stall or blow up halfway through.","We keep the system running. We carve off pieces one at a time and replace them (the strangler pattern), with tests serving as a safety net throughout.","Done right, change stops being scary. Releases become boring in the good sense, and risk is split into small, manageable steps instead of one big leap.",{"title":21,"description":22},"Modernizing a legacy system — method note | Ag3","How Ag3 approaches modernizing a legacy system: incremental replacement instead of a risky big-bang rewrite.",{"type":24,"children":25,"toc":108},"root",[26,33,40,45,51,97,103],{"type":27,"tag":28,"props":29,"children":30},"element","p",{},[31],{"type":32,"value":9},"text",{"type":27,"tag":34,"props":35,"children":37},"h2",{"id":36},"why-not-the-big-rewrite",[38],{"type":32,"value":39},"Why not the big rewrite",{"type":27,"tag":28,"props":41,"children":42},{},[43],{"type":32,"value":44},"A full rewrite sounds like a clean break, but in practice it means months where the old system is still running and the new one isn't ready. The business can't stand still that long. So we keep the old one alive and change it from the inside.",{"type":27,"tag":34,"props":46,"children":48},{"id":47},"how-we-approach-it",[49],{"type":32,"value":50},"How we approach it",{"type":27,"tag":52,"props":53,"children":54},"ul",{},[55,67,77,87],{"type":27,"tag":56,"props":57,"children":58},"li",{},[59,65],{"type":27,"tag":60,"props":61,"children":62},"strong",{},[63],{"type":32,"value":64},"Understand what it really does first.",{"type":32,"value":66}," There's usually behaviour written down nowhere that someone's job depends on.",{"type":27,"tag":56,"props":68,"children":69},{},[70,75],{"type":27,"tag":60,"props":71,"children":72},{},[73],{"type":32,"value":74},"A safety net.",{"type":32,"value":76}," Before moving anything, we lock existing behaviour behind tests so we notice if we break something.",{"type":27,"tag":56,"props":78,"children":79},{},[80,85],{"type":27,"tag":60,"props":81,"children":82},{},[83],{"type":32,"value":84},"Cut by cut.",{"type":32,"value":86}," We carve off one self-contained capability, replace it, and only then move to the next. The old system runs the whole time.",{"type":27,"tag":56,"props":88,"children":89},{},[90,95],{"type":27,"tag":60,"props":91,"children":92},{},[93],{"type":32,"value":94},"Every step delivered.",{"type":32,"value":96}," Each phase ends in production, not in a branch waiting for a big day.",{"type":27,"tag":34,"props":98,"children":100},{"id":99},"what-changes",[101],{"type":32,"value":102},"What changes",{"type":27,"tag":28,"props":104,"children":105},{},[106],{"type":32,"value":107},"The fear of change fades. The team can release more often and more calmly, because risk is split into small steps. Technical debt goes down continuously instead of waiting for a rewrite that never comes.",{"title":7,"searchDepth":109,"depth":109,"links":110},2,[111,112,113],{"id":36,"depth":109,"text":39},{"id":47,"depth":109,"text":50},{"id":99,"depth":109,"text":102},"markdown","content:en:portfolio:legacy-modernization.md","content","en\u002Fportfolio\u002Flegacy-modernization.md","en\u002Fportfolio\u002Flegacy-modernization","md",{"loc":4},1784880623061]