Migracja z jednego frameworka PHP do drugiego

10

Współpracuję z firmą internetową, która zbliża się do punktu, w którym prawdopodobnie będzie musiał ponownie przemyśleć produkt jako V2 - ze względu na przerośnięcie niektórych jego podstaw i zasad V1, które zostały wbudowane w praktycznie wszystko, od modelu danych po interfejsy użytkownika. Z różnych powodów ta ewolucja może obejmować migrację z CakePHP (z którą zbudowano V1) do Symfony lub Zend.

Chciałbym poprosić o pewne doświadczone opinie na temat tego, jak ludzie mogli poradzić sobie z takim przejściem dla witryny o dużym ruchu i generującej przychody. Nie chcę rozpoczynać dyskusji na temat zalet i wad różnych frameworków PHP, ani dlaczego ta migracja może być potrzebna. Byłbym raczej bardzo zainteresowany usłyszeniem, czy istnieją jakieś praktyczne alternatywy dla zasadniczo zbudowania V2 od zera obok V1 przez kilka miesięcy - i zablokowania cennego czasu kodowania na czas tego intensywnego okresu. Przykładem takiej alternatywy może być migracja aplikacji w częściach w dłuższym okresie.

Byłbym wdzięczny za wszelkie opinie ludzi, którzy mogliby lub byli zaangażowani w takie przejścia.

Z góry dziękuję.

Tomek
źródło

Odpowiedzi:

2

Jeśli jest to aplikacja komercyjna, która jest działalnością Twojej firmy, możesz lepiej odejść bez frameworka innej firmy. Potem, gdy nadejdzie czas na v3, nie będziesz miał już tego samego problemu. I nigdy nie będziesz w sytuacji, w której będziesz musiał ciągle dostosowywać kod w odpowiedzi na aktualizacje frameworka. Frameworki świetnie nadają się do szybkiego uruchomienia i działania, ale jeśli jest to coś a) kluczowego dla Twojej firmy ib) utrzymywane w długim okresie, wartość frameworka maleje.

Grandmaster B.
źródło
1
Dzięki - Przydatna perspektywa, chociaż frameworki ułatwiają życie w odniesieniu do tak wielu rzeczy, że trudno jest rozmyślać o ich nieużywaniu. Można je również dostosowywać i nie zawsze muszą być aktualizowane, chyba że istnieje taka potrzeba (np. Luki w zabezpieczeniach, brak wsparcia dla X itp.). Zaakceptowanie tej odpowiedzi, ponieważ tak naprawdę dotyczy „rozwiązania”, zamiast próbować wyjaśnić, dlaczego może być potrzebny przełącznik ramowy.
Tom
1
Ta odpowiedź wcale nie jest rozwiązaniem.
James
6

Naucz się najpierw nowego frameworka i upewnij się, że spełni on twoje potrzeby, i że naprawdę rozumiesz paradygmaty nowego frameworka. Będziesz musiał wyrzucić dużo kodu i to jest w porządku. Ważne jest to, że używasz nowego frameworku w taki sposób, w jaki miał być używany, w pełni wykorzystując jego funkcje i nie będąc przywiązanym do sposobu myślenia ze starego frameworka. Nie próbuj używać Zend „w sposób CakePHP” *

Na przykład, kiedy przeszedłem do korzystania z frameworka MVC z poprzednich modeli innych niż MVC, tak naprawdę nie miałem pojęcia, jak powinny działać modele, widoki i kontrolery, i napisałem okropnie wyglądający kod, ponieważ nie rozumiałem nowego sposób robienia rzeczy. Lepiej trzymaj się starej, gorszej architektury niż słabo napisana aplikacja na lepszej platformie.

* Ja też nie znam, więc nie wiem, jak podobne / porównywalne są.

GSto
źródło
+1 zaDon't try to use Zend "the CakePHP way
Tim Post
wiesz, kiedy ludzie mówią „+1”, zwykle dają +1, głosując na odpowiedź;)
GSto
Przepraszamy, czkawka internetowa. :) TCP przez gołębia pocztowego tutaj.
Tim Post
Dzięki za przydatną odpowiedź. Zajmowałem się zarówno Zendem, jak i CakePHP i chociaż zgadzam się z twoim komentarzem, z zasady nie mogę go „zaakceptować”, jeśli nie jest to praktyczne doświadczenie mówienia.
Tom
5

Pierwszą rzeczą do rozważenia jest to, że przepisywanie produktu od zera jest czymś, czego nigdy nie powinieneś robić . Jest to szczególnie prawdziwe, gdy obecna wersja już zarabia. Zasadniczo zamierzasz spędzić 6 miesięcy, aby wrócić do miejsca, w którym byłeś 6 miesięcy temu. Dopiero teraz masz więcej błędów (lub przynajmniej różne błędy), ponownie wprowadziłeś błędy, które zostały już naprawione w starym kodzie, i masz sześć miesięcy opóźnienia, gdzie mógłbyś być, gdybyś był dodając funkcje do starej bazy kodu.

CakePHP, Zend i Symphony są w dużej mierze takie same (tj. Są to frameworki w stylu MVC na PHP), więc nie jestem pewien, jaką przewagę miałbyś z jednego do drugiego. Z pewnością istnieją różnice w zestawie funkcji, ale czy naprawdę warto cofnąć się przez cały czas? Ile czasu poświęciłbyś na pisanie od nowa w Zend lub czymkolwiek innym, czy mógłbyś spędzić tyle samo czasu, dodając wymagane funkcje do Cake?

Moim zdaniem, lepiej byłoby powolniej refaktoryzować istniejący kod w czasie, niż zaczynać całkowicie od nowa z nowym frameworkiem.

Oczywiście to tylko moja opinia. Wiem, że kuszące jest porzucenie istniejącego (brzydkiego, starego) kodu i rozpoczęcie od zera, ale w przypadku sprawdzonych produktów, które już działają, zwykle niewiele można zyskać, a wiele stracić.

Dean Harding
źródło
Dokładnie to, o czym myślałem. Nie ma sensu tutaj pisać, ponieważ nie wydaje się, aby istniał silny argument, że będzie to decyzja ekonomiczna.
EricBoersma,