Modernizacja e-commerce legacy

Twoja platforma nie jest zepsuta. Po prostu utknęła.

Platforma w PHP, która działa – ale każda zmiana kosztuje za dużo, każde wydanie to ryzyko, a kod naprawdę rozumie tylko garstka osób. Jest wyjście, które nie oznacza przepisywania wszystkiego od nowa – a dzięki odpowiednim narzędziom AI w odpowiednich rękach praca, która kiedyś była nie do wyobrażenia, jest dziś w zasięgu.

Porozmawiajmy

Widzieliśmy, jak do tego dochodzi.

Każda nowa funkcja kosztuje trzy razy więcej, niż powinna. A z każdym miesiącem rośnie przepaść między twoją roadmapą a tym, co faktycznie trafia na produkcję.

Platforma powstała lata temu – w PHP, który wtedy miał sens, dla sklepu internetowego znacznie mniejszego niż ten, którym jest dziś. Może zbudowała ją agencja, której od dawna nie ma. Może zespół wewnętrzny, który wciąż jest na miejscu, ale wyrósł z odziedziczonego systemu. Może platforma kilka razy zmieniała właściciela. Może nikt nigdy nie znalazł czasu na refaktoryzację. Może zaczęło się od czystego projektu w Laravelu, który po prostu rósł i rósł, albo od aplikacji w Symfony, w której pierwotna struktura wciąż gdzieś jest – zakopana pod latami obejść.

Droga, która cię tu doprowadziła, bywa różna. Miejsce, w którym jesteś teraz, zwykle jest takie samo.

Wdrożenie prostej funkcji nie powinno być aż tak trudne.

A jest. Bo najpierw trzeba ustalić, co właściwie robi stary kod PHP, potem znaleźć skutki uboczne, których nikt nie udokumentował, a na koniec ręcznie sprawdzić, czy nic nie zepsuło się w zupełnie niezwiązanym miejscu. Nowa metoda płatności, poprawka w checkoucie, kampania promocyjna, która powinna zająć kilka dni – każda z nich zamienia się w żmudne wykopaliska.

Backlog rośnie. Tempo dostarczania – nie.

Z wdrożeniami jest jeszcze gorzej. Odbywają się po godzinach albo w weekendy – nigdy w ciągu dnia, kiedy problem uderzyłby w ruch na żywo. Nie ma testów automatycznych, więc każde wydanie to loteria. Wycofanie zmian odbywa się ręcznie. Wdrożenia są odkładane – a im rzadziej się odbywają, tym każde jest bardziej ryzykowne.

Koszty się sumują, nawet jeśli trudno je pokazać w arkuszu. Nie płacisz za powolnych programistów. Płacisz za kod, który aktywnie walczy z każdą zmianą. Dług techniczny narasta od lat. Widać go w tempie spalania budżetu i w wynikach zespołu – i z każdym miesiącem zwlekania jest gorzej.

Dobrzy programiści od niego uciekają.

Nowa osoba dołącza do zespołu i mijają miesiące, zanim może zrobić coś pożytecznego – bo system nie jest udokumentowany. Prawdziwa logika siedzi w głowach kilku osób, które są tu od początku. Seniorzy rzucają okiem na kod i rezygnują.

Rekrutacja jest trudna. Utrzymanie ludzi – jeszcze trudniejsze. A odejście którejkolwiek z tych osób oznacza poważne kłopoty z utrzymaniem systemu przy życiu.

Trzeba to naprawić. Trudność polega na tym, żeby zrobić to bezpiecznie.

Oto, co sprawia, że naprawa jest tak trudna. Nie żaden z tych problemów z osobna – tylko to, że wzajemnie się napędzają. System trzeba zmodernizować. Przepisanie go od zera jest zbyt drogie i zbyt ryzykowne. A zostawienie wszystkiego tak, jak jest, z miesiąca na miesiąc pogarsza sytuację – więc decyzja jest odkładana.

Jest wyjście. I nie jest nim przepisanie od zera.

Duża część naszej pracy to nie budowanie nowych rzeczy. To przejmowanie istniejących platform, stabilizowanie ich i przekształcanie w coś, na czym zespół znów może budować. Pracujemy w PHP – Laravel, Symfony i szerszy ekosystem – a e-commerce to jedna z branż, w których robiliśmy to najczęściej.

Bierzemy pełną odpowiedzialność. Nie tę z umowy – tylko taką, w której zależy ci na stanie kodu, zależy ci na tym, co będzie po twoim odejściu, i nie uznajesz pracy za skończoną, dopóki nie podpisałbyś się pod nią własnym nazwiskiem.

Robiliśmy to wystarczająco wiele razy, żeby mieć na to prawdziwy proces – zbudowany na wszystkim, co idzie nie tak, gdy procesu brakuje.

Najpierw poznajemy, z czym mamy do czynienia.

Zanim cokolwiek ruszymy, robimy audyt kodu.

Nie po to, żeby wręczyć ci raport, który wyląduje w szufladzie – ale żeby naprawdę zrozumieć, co jest w środku:

  • Gdzie leży ryzyko
  • Które części są strukturalnie w porządku i wymagają tylko uporządkowania
  • Z którymi częściami trzeba obchodzić się naprawdę ostrożnie
  • Jak wygląda najszybsza droga do stabilnego, sprawnego systemu

Widzieliśmy dużo PHP legacy.

Wiemy, jak wygląda zły Laravel. Wiemy, jak wygląda zły Symfony. Klasy serwisowe, które próbują robić wszystko. Warstwy abstrakcji, których nigdy nie zbudowano. Własne obejścia z czasów, zanim framework miał porządne rozwiązanie. Rozplątywaliśmy to wszystko.

I tu narzędzia AI pokazują, ile są warte.

Czytanie dużego, nieudokumentowanego kodu było kiedyś powolną, ręczną harówką – taką dogłębną analizą, z której często rezygnowano, bo budżet jej nie uzasadniał. Dzięki odpowiednim narzędziom AI w rękach inżynierów, którzy wiedzą, czego szukają, ta praca mieści się dziś w realnym budżecie. Możemy sięgać głębiej i obejmować większą część kodu niż jeszcze kilka lat temu – a to oznacza mniej niespodzianek później.

Gdy rozumiemy system, ustalamy priorytety.

I tu zaczyna się zmieniać obraz kosztów. Nie przechodzimy przez ogólną checklistę modernizacji. Patrzymy na to, co najbardziej boli cię teraz: krytyczne ścieżki, na których architektura wszystko spowalnia, moduły, w których odejście jednej osoby wywołałoby prawdziwy kryzys, pipeline wdrożeniowy zbyt ryzykowny, żeby uruchamiać go w godzinach pracy. Zaczynamy od zmian o najwyższym zwrocie. Cała reszta idzie według wpływu na biznes.

Potem zaczynamy naprawiać – kawałek po kawałku.

Bez wielkiego wybuchu. Bez ryzyka przepisywania od zera.

Utrzymujemy produkt w działaniu, a jednocześnie go ulepszamy. Nie przychodzimy pierwszego dnia z błyszczącą propozycją nowej architektury – prawo do decyzji strukturalnych zdobywamy, najpierw rozumiejąc system.

Testy dodajemy po drodze.

Bo każdy moduł, który refaktoryzujemy, musi mieć potwierdzoną stabilność, zanim pójdziemy dalej. To rodzaj pracy, z której rezygnowano jako z pierwszej, gdy budżety się kurczyły – porządne pokrycie testami, prawdziwa dokumentacja. Narzędzia AI sprawiają, że dziś da się to zrobić porządnie, zamiast odkładać na „później”, które nigdy nie nadchodzi.

Z czasem wdrożenie przestaje być wydarzeniem. Staje się nudne. Zautomatyzowane. Przewidywalne. Czymś, co dzieje się we wtorek po południu i przy czym nikt nie musi wstrzymywać oddechu.

Przekazania projektu od poprzedników też nie przyspieszamy na siłę.

Widzieliśmy, co się dzieje, gdy nowy zespół wchodzi za szybko, robi założenia i psuje rzeczy, które po cichu trzymały system w całości. Dlatego tak nie robimy. Budujemy kontekst, zanim dotkniemy czegokolwiek krytycznego. Rozmawiamy z tymi, którzy mają obecną wiedzę. I nie przejmujemy odpowiedzialności, dopóki nie rozumiemy systemu na tyle dobrze, żeby naprawdę za niego odpowiadać – czyli umieć go wytłumaczyć, ręczyć za niego i brać odpowiedzialność za to, co wydarzy się dalej.

A oto co zmienia się z czasem:

  • Funkcje, które zajmowały tygodnie, zaczynają zajmować dni.
  • Praca, która wymagała dużego zespołu i długiego czasu, jest dziś realna przy większości budżetów – bo odpowiednie narzędzia AI w doświadczonych rękach poszerzają to, co może udźwignąć mały zespół seniorów.
  • Nowi programiści mogą stać się produktywni w rozsądnym czasie, bo system jest udokumentowany, a logika siedzi w kodzie, a nie w czyjejś głowie.

Twój zespół przestaje obchodzić kod dookoła i znów zaczyna na nim budować.

Kilka słów o tym, jak korzystamy z AI.

Narzędzia AI są dziś realną częścią naszej pracy – ale nie w taki sposób, jak sugeruje hype. Nie puszczamy ich na twój kod z nadzieją, że się uda. AI wykonuje najcięższą pracę tam, gdzie naprawdę wnosi wartość – czytanie dużych baz kodu, przygotowywanie szkieletów testów, pierwsze wersje dokumentacji – a nasi inżynierowie odpowiadają za każdą linię. Wszystko, czego dotyka AI, przechodzi przegląd człowieka. Nic nie trafia na produkcję bez sprawdzenia.

Korzystamy z komercyjnych narzędzi AI na warunkach, które wykluczają trenowanie modeli na twoim kodzie, a praca wspierana przez AI przechodzi te same standardy przeglądu, testów i bezpieczeństwa co cała reszta tego, co budujemy. Nie chodzi o chodzenie na skróty. Chodzi o to, żeby praca, która kiedyś była poza zasięgiem – dokładne audyty, pełne pokrycie testami, porządna dokumentacja – zmieściła się w realnym budżecie i była zrobiona jak należy.

W przypadku platformy re-commerce opisanej w realizacji poniżej poszliśmy o krok dalej: zbudowaliśmy ścieżkę, dzięki której osoby nietechniczne z zespołu mogły zgłaszać produkcyjne pull requesty poprzez rozmowę z AI. Bezpiecznie, w ramach istniejącego procesu developmentu i zgodnie ze standardami kodowania oraz konwencjami, które inżynierowie ustalili dla tego kodu. Każdy wkład przechodził przegląd jak każda inna zmiana. Powstał w ten sposób drugi strumień dostarczania, który działał obok głównych prac inżynierskich, nie zakłócając ich.

Jak zacząć

Każde przejęcie zaczyna się od dogłębnego audytu kodu – 1–3 tygodnie, zależnie od wielkości kodu. Dostajesz raport: co jest w środku, co jest zagrożone, czego wymagałaby stabilizacja, i szczerą rekomendację, co robić dalej. Raport należy do ciebie bez względu na to, czy będziemy dalej współpracować.

Potem większość współprac przybiera jedną z tych form:

  • Abonament Stały dostęp do konkretnego, imiennie przypisanego inżyniera – utrzymanie, prace stabilizacyjne, mniejsze funkcje. Bez minimalnego okresu współpracy, z 30-dniowym okresem wypowiedzenia. Od kilku godzin w miesiącu do pełnego etatu.
  • Dedykowany zespół Twój produkt, nasz zespół, my odpowiadamy za dostarczenie. Dobieramy ludzi, zarządzamy pracą, bierzemy odpowiedzialność za wyniki. Ci sami ludzie, ten sam kontekst, miesiąc po miesiącu.
  • Projekt Określony zakres – migracja, integracja, konkretny sprint modernizacyjny. Wyceniamy, planujemy i dostarczamy. Po projekcie większość klientów przechodzi na abonament, bo zespół zna już kod.

Nie wiesz, co pasuje? Ustalimy to razem podczas pierwszej rozmowy.

Odpowiedni zespół może to naprawić

Robiliśmy to wiele razy. Na platformach w Laravelu, na platformach w Symfony, na starszym PHP sprzed obu tych frameworków. Wiemy, czym różni się kod, który wygląda źle, ale strukturalnie jest w porządku, od takiego, w którym zakopane jest realne ryzyko. I wiemy, jak uczciwie wytłumaczyć tę różnicę – tobie i każdemu w twojej organizacji, kto musi zrozumieć, z czym macie do czynienia.

Przejęcie kodu legacy to zupełnie inna praca niż budowanie od zera. Wymaga cierpliwości. Wymaga dyscypliny, żeby najpierw postawić diagnozę, a dopiero potem leczyć. Wymaga doświadczenia, żeby wiedzieć, które problemy trzeba rozwiązać teraz, a które mogą bezpiecznie poczekać. Zespół świetny w projektach od zera może tu narobić poważnych szkód, jeśli działa zbyt szybko i zbyt pewnie siebie – albo jeśli przestaje mu zależeć w chwili, gdy kończy się umowa.

Byliśmy już w tym miejscu.

Jesteśmy butikowym software house’em z Polski, działającym w całej Europie – zespołem seniorów, który od 2015 roku buduje i modernizuje platformy w PHP. Około 80% naszych klientów zostaje z nami na długo – i w wielu przypadkach dlatego, że przejęliśmy platformę w PHP w złym stanie i zamieniliśmy ją w coś, na czym znów mogli budować.

Nie przerzucamy ludzi między projektami. Inżynierowie, którzy zaczynają pracę nad twoim kodem, zostają przy nim – poznają jego historię, budują prawdziwy kontekst i odpowiadają za swoje decyzje. Bez account managerów pośrodku. Rozmawiasz bezpośrednio z ludźmi, którzy wykonują pracę.

Realizacja: stabilizacja, optymalizacja i rozwój platformy e-commerce

Jeden przykład z wielu: działająca, rentowna platforma re-commerce na Laravelu – bez CI/CD, bez testów, bez monitoringu, z wymykającymi się spod kontroli kosztami infrastruktury i poprzednim zespołem, któremu właściwie przestało zależeć. Przejęliśmy ją, ustabilizowaliśmy, modernizowaliśmy kawałek po kawałku i przez cały ten czas dostarczaliśmy nowe funkcje.

  • 2x większy przychód od pierwszego wydania pod naszą opieką
  • <95% → 99,99%+ uptime’u w ostatnim roku
  • 0 → 100% zautomatyzowanych wydań
  • 0 → rosnące pokrycie testami (jednostkowe, funkcjonalne, statyczne)
  • Słaba → dobra ocena integracji u operatora płatności
  • Minuty → sekundy w przypadku najdłuższych operacji na danych
  • Dodatkowy strumień dostarczania wspierany przez AI – osoby nietechniczne z zespołu wypuszczają na produkcję sprawdzone PR-y za pomocą AI, zgodnie ze standardami kodowania i procesami developmentu zespołu
Przeczytaj całą realizację

Może to dobry moment, żeby się tym zająć.

Jeśli to twój kod spowalnia wszystko inne, warto poświęcić 30 minut na rozmowę wideo.

Bez prezentacji sprzedażowej. Bez nagabywania. Szczerze powiemy ci, czy jesteśmy odpowiednim partnerem i jak wyglądałby pierwszy krok.

Porozmawiajmy