Byznys · 7 min čtení
Záchrana, refaktoring, nebo přepis? Jak se rozhodnout, co s kódem postaveným s AI
Zachraňujte, když produkt funguje a problémy jsou v zabezpečení, konfiguraci a chybějících pojistkách. Refaktorujte, když funguje, ale každá změna je pomalá a riskantní. Přepisujte, jen když je zásadně špatně datový model nebo platforma — a i pak po částech. Rozhoduje datový model, ne to, jak neuspořádaně kód vypadá.
Autor BacklooPublikováno
Hlavní body
- Nepořádný kód není důvod k přepisu. Špatný datový model, nevhodná platforma nebo nedůvěryhodná data být mohou.
- Záchrana opraví to, co brání bezpečnému spuštění; refaktoring snižuje cenu budoucích změn; přepis vyměňuje základy.
- Největší riziko nesou přepisy naráz: zmrazíte vývoj funkcí, udržujete dva systémy a znovu objevujete zapomenuté okrajové případy.
- Vzor strangler fig umožňuje přepisovat postupně, zatímco stará aplikace dál vydělává.
- Rozhodujte na základě důkazů: krátký audit za pevnou cenu je levnější než se netrefit jedním nebo druhým směrem.
Máte aplikaci postavenou s AI zachránit, refaktorovat, nebo přepsat?
Ve většině případů nejdřív zachraňte. Pokud uživatelé dokážou projít hlavním procesem a datový model zhruba odpovídá byznysu, nejrychlejší a nejméně riskantní cestou je opravit zabezpečení, konfiguraci a spolehlivost na místě a potom refaktorovat části, které měníte nejčastěji. Přepis je oprávněný jen tehdy, když jsou špatně samotné základy, a téměř vždy by měl probíhat postupně.
Tahle odpověď frustruje obě strany. Zakladatelé, které kód od AI už unavuje, chtějí začít načisto. Inženýři, kteří ho zdědí, často chtějí totéž, protože přepisování působí produktivněji než čtení. Jenže kód, který vidíte, je málokdy ta drahá část. Drahé je chování, které nikdo nesepsal — okrajové případy, na které už uživatelé spoléhají, data, která už jsou v produkci, integrace, které fungují z důvodů, na které si nikdo nevzpomene.
66 %
„Skoro správně“ je normální stav aplikace postavené s AI při spuštění. A „skoro správně“ se obvykle opravit dá. Otázkou je, kolik ze základů spadá do toho „skoro“.
Co vlastně znamená záchrana, refaktoring a přepis?
Liší se v tom, co se mění a co zůstává. Záchrana mění jen minimum potřebné k bezpečnému provozu v produkci. Refaktoring mění vnitřní strukturu, aniž by měnil chování. Přepis nahrazuje implementaci a obvykle i datový model, přičemž se snaží chování zachovat.
- Záchrana — zalepit bezpečnostní díry (autorizace, uniklé tajné klíče, neověřené webhooky), opravit konfiguraci, přidat monitoring chyb, zálohy a testy kolem kritických procesů. Architektura zůstává.
- Refaktoring — přestavět kód, který zpomaluje každou změnu: duplicitní logiku, komponenty, které dělají pět věcí najednou, byznysová pravidla rozházená mezi UI a databází. Chování zůstává; testy to dokazují.
- Přepis — postavit novou implementaci, často na jiném datovém modelu nebo platformě, a převést na ni uživatele i data.
| Záchrana | Refaktoring | Přepis | |
|---|---|---|---|
| Kdy | Hlavní proces funguje; překážkami jsou zabezpečení, konfigurace, spolehlivost | Funguje, ale každá změna je pomalá nebo rozbije něco jiného | Datový model, platforma nebo základní architektura produkt neunesou |
| Riziko | Nízké — malé, cílené změny | Střední — kontrolované testy a malými kroky | Vysoké — nové chyby, ztracené okrajové případy, migrace dat, zmrazení funkcí |
| Co určuje cenu | Počet mezer v zabezpečení a spolehlivosti; přístup k účtům a datům | Velikost často měněných oblastí; testy, které je nejdřív potřeba doplnit | Rozsah funkcí, migrace dat, integrace, souběžný provoz dvou systémů |
| Časový rámec | Dny až několik týdnů | Průběžně, souběžně s vývojem funkcí | Měsíce, se starým systémem stále v produkci |
| Co poznají uživatelé | Méně chyb; nic jiného se nemění | Zpočátku nic, pak rychlejší dodávky | Migraci a obvykle i nějaké regrese |
Které signály ukazují na kterou možnost?
Než se podíváte na styl kódu, podívejte se na datový model a historii změn. Ošklivé komponenty se opravují levně. Schéma, které neumí popsat váš byznys, ne.
Signály pro záchranu
- Uživatelé dokážou projít hlavním procesem od začátku do konce.
- Tabulky zhruba odpovídají skutečným věcem, které prodáváte nebo spravujete.
- Problémy, o kterých víte, se týkají zabezpečení, nasazení, plateb, ošetření chyb nebo výkonnostních úzkých míst.
- Dokážete vyjmenovat pět procesů, na kterých záleží, a ty většinou fungují.
Signály pro refaktoring
- Malé funkce trvají dny, protože stejná logika existuje na několika místech.
- Oprava jedné chyby spolehlivě vytvoří jinou kousek vedle.
- Většina změn se soustředí do několika souborů nebo modulů (zkontrolujte
git log --stat). - Nikdo, člověk ani AI, nedokáže změnit část aplikace, aniž by přečetl celou.
Signály pro přepis
- Datový model je špatně v jádru — například tabulky pro jednoho uživatele tam, kde musí být multi-tenant produkt, nebo peníze uložené napříč schématem jako float.
- Platforma neumí, co produkt potřebuje (no-code backend, který nezvládne úlohy, regulatorní požadavky nebo integrace, ke kterým jste se zavázali).
- Integritě dat nelze věřit a nelze ji opravit na místě.
- Skutečného používání je zatím málo, takže je málo chování, které by bylo potřeba zachovat.
Kolik jednotlivé možnosti skutečně stojí?
Přímým nákladem je čas inženýrů. Větším nákladem je to, co ten čas vytlačí. Dluh, který necháte na místě, dál zdaňuje každou budoucí funkci; přepis pozastaví roadmapu a utrácí peníze za znovupostavení toho, co už existuje.
20–40 %
To je argument proti ignorování problému, ne argument pro přepis. Přepis má vlastní náklady, které se snadno podcení:
- Zmrazení funkcí. Zatímco se staví nový systém, ten starý dostává jen urgentní opravy — a konkurence dál dodává.
- Znovuobjevené požadavky. Každý tichý okrajový případ, který stará aplikace zvládala, je potřeba najít znovu, často až díky uživatelům.
- Migrace dat. Přesun produkčních dat do nového schématu vyžaduje skripty, zkoušky nanečisto, validaci a plán pro návrat zpět.
- Dva systémy. Až do přepnutí platíte provoz, monitoring a zabezpečení obou.
Náklady na záchranu a refaktoring se ohraničují snáz, protože každá změna je malá a dá se ocenit i ověřit samostatně. Proto je stavíme jako sprinty s pevným rozsahem, ne jako otevřenou práci za hodinovou sazbu.
Pokud musíte přepisovat, použijte vzor strangler fig
Vzor strangler fig (škrticí fíkovník), který popsal Martin Fowler, nahrazuje systém po částech místo všeho najednou. Před stávající aplikaci postavíte směrovací vrstvu, v novém systému vytvoříte jednu schopnost, pošlete na ni odpovídající provoz a opakujete, dokud starý systém nemá co dělat. Stará aplikace po celou dobu obsluhuje uživatele.
- Předsaďte rozhraní (seam). Reverse proxy, edge middleware nebo API gateway, která umí směrovat podle cesty nebo funkce.
- Vyberte první část. Zvolte něco hodnotného a dobře ohraničeného — často oblast s nejhoršími chybami nebo nejčastějšími změnami.
- Postavte ji nově, s testy. Včetně dat, která vlastní, a rozhodněte, jak se data během přechodu synchronizují se starým systémem.
- Přesměrovávejte provoz postupně. Za feature flagem, nejdřív interním uživatelům, pak určitému procentu, pak všem.
- Smažte starou cestu v kódu. Část je hotová, až když stará implementace zmizí, ne když nová existuje.
// Next.js proxy (middleware) jako rozhraní pro strangler fig:
// převedené cesty jdou na novou službu, vše ostatní zůstává ve staré aplikaci.
import { NextResponse, type NextRequest } from "next/server";
const MIGRATED = ["/billing", "/api/invoices"];
export function proxy(req: NextRequest) {
const path = req.nextUrl.pathname;
if (MIGRATED.some((p) => path === p || path.startsWith(p + "/"))) {
return NextResponse.rewrite(new URL(path + req.nextUrl.search, process.env.NEW_SERVICE_URL));
}
return NextResponse.next();
}Směrování je ta snadná část. Ta těžká jsou data. Dokud běží oba systémy, musí mít každý kus dat právě jednoho vlastníka: buď je čte a zapisuje nová služba a stará aplikace přistupuje přes ni, nebo zůstává zdrojem pravdy stará databáze a nový kód z ní čte až do přepnutí. Zápis stejných záznamů z obou systémů bez jasného vlastníka je přesně to, co u strangler migrací vede k rozjetým datům, která už nikdo nedokáže sesouhlasit. Vlastnictví rozhodněte pro každou část, sepište ho a přidejte kontrolu, která obě strany porovnává, dokud stará cesta nezmizí.
Tento vzor promění jednu velkou sázku typu všechno, nebo nic v mnoho malých a vratných sázek. Když se některá část nepovede, přesměrujete provoz zpět. Když se v půlce změní priority, pořád máte funkční produkt.
Jak se rozhodnout na základě důkazů
Rozhodujte po krátkém strukturovaném auditu, ne podle první reakce na kód. Audit by měl písemně odpovědět na čtyři otázky: co je nebezpečné právě teď, co vás zpomaluje, jestli datový model unese další fázi produktu a kolik sprintů by stála každá z možností.
Pokud nedokážete ukázat na tu část základů, kterou nejde opravit na místě, přepis zatím nepotřebujete.
Přesně tak funguje náš Rescue Audit. Stojí pevně 690 € a trvá 3 pracovní dny. Projdeme repozitář, databázi a její policy, přihlašování, platby, nasazení a monitoring a dodáme mapu rizik seřazenou podle priority a doporučení — záchrana, refaktoring, nebo přepis — s písemným zdůvodněním. Pokud s námi budete pokračovat, cena auditu se vám do záchrany započte ze 100 %. Záchrana a refaktoring pak probíhají ve 2týdenních sprintech s pevným rozsahem od 4 900 €.
Přepis nedoporučíme, dokud ho audit písemně neprokáže. Ne proto, že by přepisy byly vždycky špatně, ale proto, že důkazní břemeno by měla nést ta nejdražší možnost.
Jak vám Backloo může pomoct
Začněte bezplatnou 60sekundovou kontrolou připravenosti a zjistěte, které oblasti vypadají nejslabší. Pokud chcete úplný písemný verdikt, stránka záchrana AI aplikací popisuje audit i navazující sprinty a backendové systémy pokrývají případy, kdy základy opravdu potřebují vyměnit. Kód, repozitář i cloudové účty zůstávají po celou dobu vaše. Pokud jde hlavně o připravenost na produkci, může vám stačit náš checklist před spuštěním a checklist Supabase RLS — nebo se nám ozvěte a popište, co máte.
Otázky
Je levnější přepsat aplikaci vygenerovanou AI od nuly?
Jakmile má aplikace skutečné uživatele a data, jen zřídka. Přepis musí znovu postavit každou existující funkci, znovu objevit okrajové případy a převést data, než přinese cokoli nového. Záchrana a cílený refaktoring se k bezpečnému a udržovatelnému stavu obvykle dostanou dřív.
Kolik stojí záchrana aplikace z vibecodingu?
Záleží na tom, kolik mezer v zabezpečení a spolehlivosti aplikace má. V Backloo stojí Rescue Audit pevně 690 €, je hotový během 3 pracovních dnů a započítává se do záchrany; samotná práce pak probíhá ve 2týdenních sprintech s pevným rozsahem od 4 900 €.
Jaký je rozdíl mezi refaktoringem a přepisem?
Refaktoring mění vnitřní strukturu kódu, aniž by měnil jeho chování, a to v malých ověřených krocích. Přepis nahrazuje implementaci, často včetně datového modelu, a pak na ni převádí uživatele i data.
Co je vzor strangler fig?
Strategie postupné náhrady, kterou popsal Martin Fowler: provoz se směruje přes rozhraní (seam), jednotlivé schopnosti se po jedné přesouvají do nové implementace a starý systém se vyřadí, jakmile na něm nic nezávisí.