RSolution.cz

Poskytovatel IT služeb

Přepis interního systému za provozu

Interní systém psaný před lety fungoval, ale nešel rozvíjet. Přepsal jsem ho celý, aniž by firma na jediný den přestala fungovat.

Starý i nový systém nad společnou databází, práce se přesouvá modul po modulu. Starý systém Nový systém Společná databáze modul po modulu

Výchozí situace

Firma jela na interním systému, který vznikal roky — zhruba 1 850 PHP souborů, logika promíchaná s výpisem, knihovny, které už nikdo neaktualizoval. Systém fungoval. Problém byl, že do něj nikdo nechtěl sahat: každá změna byla sázka na to, co jinde upadne.

Co bylo potřeba

Přepsat ho celý — klienti, zakázky, práce, úkoly, fakturace, finance, sklad, prodej, evidence techniky, číselníky, oprávnění. A hlavně: firma nemohla na týden zavřít. Žádný migrační víkend, žádný den, kdy se nefakturuje.

Jak jsem to řešil

Nový systém jsem postavil nad stejnou databází jako ten starý a bez jediné změny schématu. Oba tak mohly běžet současně: modul po modulu se práce přesouvala do nového, starý zůstal jako záchranná síť.

Omezení „nesmíš sáhnout na schéma" si vynutilo poctivost — entity se mapují na existující tabulky i s jejich historickými názvy sloupců. Vypadá to v kódu nehezky a je to správně: cena za to, že se nemusí nic odstavit.

Přihlášení zůstalo kompatibilní se starým systémem, takže uživatelé nemuseli nic měnit.

Sdílená tabulková komponenta s filtry, bočním panelem a mobilními kartami — jednou napsaná, používají ji všechny moduly. K tomu příkazová paleta na ⌘K, nápověda přímo v modulu, práva po modulech a audit každé změny.

Výsledek

Hotových je všech dvacet plánovaných modulů — 37 datových entit a přes 50 controllerů. Přeneslo se několik tisíc zakázek, nový systém běží paralelně a ten starý se už skoro nepoužívá. Firma nezaznamenala výpadek a dnes se systém dál rozšiřuje.