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.
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.