Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: Zend vs. Symfony dla dużego projektu

Witam serdecznie,

jestem w trakcie nauki zarówno jednego i drugiego frameworka. Niestety nie mam jeszcze dużego doświadczenia w ich użyciu dlatego też kieruje pytanie do was:

który jest lepszy framework dla większego serwisu (bo takie niebawem się szykuje) i dlaczego?

Proszę o wypowiedź osób w miarę obiektywnych posiadających doświadczenie w tychże frameworkach. Proszę bez wypowiedzi typu Zend jest lepszy bo używam go od 9 lat lub symfony jest lepsze bo buduję aplikację jak z klocków. Bardziej mnie interesuje wydajność, dokładanie kolejnych funkcjonalności wraz z rozrostaniem się serwisu itp.

Dziękuję i pozdrawiam
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Zend vs. Symfony dla dużego projektu

Interesuje Cię wypowiedź kogoś kto ma doświadczenie tylko z symfony? Jeśli tak to mogę Ci je tu napisać odnośnie dużego projektu :-)

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Moim zdaniem dyskusja jeden framework vs drugi nie ma sensu za bardzo. Wszystko zależy od programisty, w czym ma doświadczenie, jak potafi zoptymalizować projekt, itd. Znam duży dużych projektów chodzących z powodzeniem zarówno na symfony jak i na zf.

Temat: Zend vs. Symfony dla dużego projektu

Zgadzam się z Krzysztofem.
Przy wyborze frameworka wziąłbym pod uwagę przede wszystkim wiedzę i doświadczenie mojego zespołu. Oby dwa frameworki z pewnością nadają się do "dużych" projektów (dla przykładu, Allegro.pl opiera się chyba na symfony).

Poza tym, "duży" nie jest najfajniejszym słowem określającym projekt. Co dokładniej masz na myśli? Dużą liczbę odwiedzin? Dużą złożoność (w sensie ilości kodu)?Dariusz Kwiatkowski edytował(a) ten post dnia 25.02.10 o godzinie 17:11
Wojciech Zieliński

Wojciech Zieliński IT
Project/Programme/Pe
ople Manager
(PRINCE2
Practicioner...

Temat: Zend vs. Symfony dla dużego projektu

Według mnie żaden z tych frameworków samodzielnie nie cechuje się wystarczającą wydajnością dla dużego, mocno obciążonego serwisu internetowego. Obydwa wprowadzają bowiem dość dużo "narzutu" związanego z przetwarzaniem wielu dziedziczących po sobie klas, wzorce projektowe które są nieocenionym narzędziem od strony przejrzystości kodu i możliwości jego utrzymania, ale z drugiej strony również przyczyniają się do dość dużego narzutu wymaganej mocy procesora przy przetwarzaniu.
Dlatego jeśli planujesz robić naprawdę duży portal - powinieneś się raczej skupić na przygotowaniu architektury, która później (wydajnościowo) go pociągnie. Dochodzą oczywiście jeszcze kwestie skalowalności - ale to również nie jest kwestia konkretnego frameworka, ale architektury aplikacji, którą tworzysz.
My pracujemy praktycznie włącznie na ZF - ale my tworzymy głównie aplikacje biznesowe, dla których elastyczność tego frameworka jest wręcz nieoceniona. Problemy wydajnościowe jednak mamy rozwiązane przez własne mechanizmy związane z kompilowaniem interfejsu do prawie "czystego" HTMLa. Podobnie stawiamy zresztą serwisy internetowe - wykorzystując architekturę 2 serwerów - administracyjnego (na którym są robione wszelkie zmiany do stron, a później strony te są kompilowane/rekompilowane) i prezentacyjnego (gdzie mamy praktycznie czyste pliki HTML).
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: Zend vs. Symfony dla dużego projektu

Hmm może źle zadałem pytanie.
Wiadomo jest, że można napisać i własną aplikację, która również będzie działać z dużym obciążeniem (tu chodzi mi o dużą ilość odwiedzin, dużą złożoność kodu, częste zapytania do bazy).
Oczywiście wszystko można cache'ować i będzie ok. Czemu pytam o framework - wiem że w każdym frameworku jak i bez można osiągnać to samo ale zależy mi na:
- szybkości pracy,
- zaoszczędzeniu zbędnego narzutu,
- szybkiego wdrażania pracowników,
- szybkość wykonywania kodu (np. jedne frameworki potrzebują na podstawowe zadania więcej czasu niż inne - chcę tego uniknąć).

Wiem również, iż w sieci jest mnóstwo porównań symfony i zenda ale nie o to mi chodzi. Chcę poznać opinię osób pracujących w danym frameworku (najlepiej jak by miały doświadczenie w obydwu) przy większych projektach (nie prostych stronach biznesowych gdzie jest obsługiwanych 5000 klientów).

Za co cenicie sobie zenda (jeśli w nim pracujecie) a za co symfony?
Zadaje te pytanie z prostego powodu - dotychczas mieliśmy własny framework pisany od dawien dawna od podstaw i coraz bardziej przekonuje się do frameworka po różnych przebytych ekscesach.
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Zend vs. Symfony dla dużego projektu

symfony:
- przemyślna architektura,
- łatwa rozszerzalność niemal dowolnego miejsca "core",
- szybkie tempo rozwoju (aktualnie panuje 1.3/1.4, po 1.0, 1.1, 1.2, a w planach jest Symfony 2.0, które zmiecie wszystko co było do tej pory :-)),
- ciekawa społeczność,
- mnóstwo pluginów,
- świetna dokumentacja (API, Guide, Reference Book dla configów, tutoriale 24 odcinkowe),
- fantastyczny subframework formularzy,
- bardzo fajna integracja z Doctrine,
- w miarę prosty start dla nowych programistów,
- doświadczenia dużych graczy wprowadzane w kod, szczególnie Symfony 2.0 (Dailymotion, Yahoo, Delicous),
- "command-line friendly",
- admin generator - nadaje się do 80% backendowych modułów,
- 2 wielkie projekty CMF oparte o symfony - Sympal i Diem.Wojciech Sznapka edytował(a) ten post dnia 25.02.10 o godzinie 21:27
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Zend vs. Symfony dla dużego projektu

Wojciech Zieliński:
Według mnie żaden z tych frameworków samodzielnie nie cechuje się wystarczającą wydajnością dla dużego, mocno obciążonego serwisu internetowego. Obydwa wprowadzają bowiem dość dużo "narzutu" związanego z przetwarzaniem wielu dziedziczących po sobie klas, wzorce projektowe które są nieocenionym narzędziem od strony przejrzystości kodu i możliwości jego utrzymania, ale z drugiej strony również przyczyniają się do dość dużego narzutu wymaganej mocy procesora przy przetwarzaniu.
Dlatego jeśli planujesz robić naprawdę duży portal - powinieneś się raczej skupić na przygotowaniu architektury, która później (wydajnościowo) go pociągnie. Dochodzą oczywiście jeszcze kwestie skalowalności - ale to również nie jest kwestia konkretnego frameworka, ale architektury aplikacji, którą tworzysz.
My pracujemy praktycznie włącznie na ZF - ale my tworzymy głównie aplikacje biznesowe, dla których elastyczność tego frameworka jest wręcz nieoceniona. Problemy wydajnościowe jednak mamy rozwiązane przez własne mechanizmy związane z kompilowaniem interfejsu do prawie "czystego" HTMLa. Podobnie stawiamy zresztą serwisy internetowe - wykorzystując architekturę 2 serwerów - administracyjnego (na którym są robione wszelkie zmiany do stron, a później strony te są kompilowane/rekompilowane) i prezentacyjnego (gdzie mamy praktycznie czyste pliki HTML).

Wszystko zalezy od tego jak planujesz podejsc od strony sprzetowej. Powinienes dodac, ze zaden z tych frameworkow nie nadaje sie do uzycia jezeli planujesz wykozystanie skalowania pionowego dla architektury sprzetowej. Wtedy jestem w stanie ci przytaknac. Jednak jesli serwis ma byc naprawde duzy, to koszty jakie niesie za soba obiektowosc i przejzystosc dajaca mozliwosc zapanowania nad kodem oraz latwego odnalezienia sie w nim dla nowych programistow, są znikome, przeniesione na architekture pozioma;)

Można by sie spierać w tym temacie caly dzien wysuwajac mnustwo argumentow za i przeciw.
Piotr Krajewski

Piotr Krajewski web application
programmer

Temat: Zend vs. Symfony dla dużego projektu

Roman Piekarski:
Wszystko zalezy od tego jak planujesz podejsc od strony sprzetowej. Powinienes dodac, ze zaden z tych frameworkow nie nadaje sie do uzycia jezeli planujesz wykozystanie skalowania pionowego dla architektury sprzetowej. Wtedy jestem w stanie ci przytaknac. Jednak jesli serwis ma byc naprawde duzy, to koszty jakie niesie za soba obiektowosc i przejzystosc dajaca mozliwosc zapanowania nad kodem oraz latwego odnalezienia sie w nim dla nowych programistow, są znikome, przeniesione na architekture pozioma;)

hmmm mógłbyś mi przybliżyć terminy architektury pionowej i poziomej?

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Roman Piekarski:

Wszystko zalezy od tego jak planujesz podejsc od strony sprzetowej. Powinienes dodac, ze zaden z tych frameworkow nie nadaje sie do uzycia jezeli planujesz wykozystanie skalowania pionowego dla architektury sprzetowej. Wtedy jestem w stanie ci przytaknac. Jednak jesli serwis ma byc naprawde duzy, to koszty jakie niesie za soba obiektowosc i przejzystosc dajaca mozliwosc zapanowania nad kodem oraz latwego odnalezienia sie w nim dla nowych programistow, są znikome, przeniesione na architekture pozioma;)

Można by sie spierać w tym temacie caly dzien wysuwajac mnustwo argumentow za i przeciw.

Zaciekawilo mnie, czemu oba frameworki nie nadaja sie przy skalowaniu pionowym?

P.S.
Zacznij w koncu uzywac jakiegos sprawdzacza ortografii bo mnie serce boli :P

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Rowniez ciekawi mnie ta teoria :)

Moze chodzilo Ci o skalowanie poziome ? Tu glownie problemem jest nowa implementacja sesji (rozproszonej), i implementacja shardingu na poziomie aplikacji - i nie widze problemu z zadnych frameworkow aby go zastosowac.
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Zend vs. Symfony dla dużego projektu

Marcin Olichwirowicz:
Roman Piekarski:

Wszystko zalezy od tego jak planujesz podejsc od strony sprzetowej. Powinienes dodac, ze zaden z tych frameworkow nie nadaje sie do uzycia jezeli planujesz wykozystanie skalowania pionowego dla architektury sprzetowej. Wtedy jestem w stanie ci przytaknac. Jednak jesli serwis ma byc naprawde duzy, to koszty jakie niesie za soba obiektowosc i przejzystosc dajaca mozliwosc zapanowania nad kodem oraz latwego odnalezienia sie w nim dla nowych programistow, są znikome, przeniesione na architekture pozioma;)

Można by sie spierać w tym temacie caly dzien wysuwajac mnustwo argumentow za i przeciw.

Zaciekawilo mnie, czemu oba frameworki nie nadaja sie przy skalowaniu pionowym?

P.S.
Zacznij w koncu uzywac jakiegos sprawdzacza ortografii bo mnie serce boli :P

Wybacz mi, ale mam problem z ortografia a nie bede za kazdym razem parsowal tego slownikiem.

Co do frameworkow, jestem swiadomy,ze obiektowosc jest mniej wydajna od kodu strikte strukturalnego, zwlaszcza przy wykozystaniu orm'ow. Biorac pod uwage skalowanie pionowe, oraz granice sprzetowe, w pewnym momencie musisz skupic sie na profilowaniu kodu, którego granice gorna mozesz przesunac wlasnie dzieki zastosowaniu kodu strukturalnego.

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Roman Piekarski:

Co do frameworkow, jestem swiadomy,ze obiektowosc jest mniej wydajna od kodu strikte strukturalnego, zwlaszcza przy wykozystaniu orm'ow. Biorac pod uwage skalowanie pionowe, oraz granice sprzetowe, w pewnym momencie musisz skupic sie na profilowaniu kodu, którego granice gorna mozesz przesunac wlasnie dzieki zastosowaniu kodu strukturalnego.

Absolutnie sie nie zgodze.

Wiekszosc narzutow (Zend_Config dla Zenda) czy dynamiczne generatory Doctrine mozna szybko obejsc lub wyeliminowac (cache, brak dynamicznego generowania typow) - i wycisnac z obu frameworkow bardzo dobra wydajnosc.
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Zend vs. Symfony dla dużego projektu

Marcin Bachleda:
Roman Piekarski:

Co do frameworkow, jestem swiadomy,ze obiektowosc jest mniej wydajna od kodu strikte strukturalnego, zwlaszcza przy wykozystaniu orm'ow. Biorac pod uwage skalowanie pionowe, oraz granice sprzetowe, w pewnym momencie musisz skupic sie na profilowaniu kodu, którego granice gorna mozesz przesunac wlasnie dzieki zastosowaniu kodu strukturalnego.

Absolutnie sie nie zgodze.

Wiekszosc narzutow (Zend_Config dla Zenda) czy dynamiczne generatory Doctrine mozna szybko obejsc lub wyeliminowac (cache, brak dynamicznego generowania typow) - i wycisnac z obu frameworkow bardzo dobra wydajnosc.

Mozna, jednak dalej sa to obiekty i kolejne ograniczenie. Takich ograniczen mozna szukac w nieskonczonosc, a kazde ograniczenie ktore usowasz idzie w ta strone, ze z w pelni funkcjonalnego frameworka robi ci sie cos co go nieprzypomina schodzac do korzeni. Z tad moja riposta odnosnie teori szukania wad frameworkow itd. Dlaczego w takim razie, Dailymotion, yahoo i jeszcze wiele porownywalnych witryn skozystalo np: z symfony? Nie sadze, aby tam na krzeselkach siedzili ludzie, ktorzy nie doszli do takich samych wnioskow jak Wojtek Z.
Dlatego przyrownalem podejscie Wojtka do architktory pionowej, gdzie w firmach czesto dochodzi sie do wniosku "nie zainwestujemy w sprzet, wyprofilujcie aplikacje" a pozniej przychodzi co do czego i koszt wyprofilowania aplikacji byl znacznie wiekszy niz zakup samego sprzetu a ciagnace sie niedogodnosci spowodowane zbytnim wyprofilowaniem odbijaja sie na przyszlych rozszezeniach.Roman Piekarski edytował(a) ten post dnia 26.02.10 o godzinie 15:56

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Roman Piekarski:
korzeni. Z tad moja riposta odnosnie teori szukania wad frameworkow itd. Dlaczego w takim razie, Dailymotion, yahoo i jeszcze wiele porownywalnych witryn skozystalo np: z symfony? Nie sadze, aby tam na krzeselkach siedzili ludzie, ktorzy nie doszli do takich samych wnioskow jak Wojtek Z.


Ok - nie zrozumialem na poczatku zamyslu Twojego posta. Myslimy podobnie w duzym stopniu.
Radek Baczyński

Radek Baczyński GoldenLine.pl

Temat: Zend vs. Symfony dla dużego projektu

Panowie, moim zdaniem to nie ma znaczenia. Wybierz ten, z którym Twój zespół ma większe doświadczenie. Jeśli chcecie się uczyć od 0 to wybierzecie symfony(zalety ktoś wspomniał wyżej) Pierwsza i tak polegnie baza danych, a tu sf jak i zf nie daje rady i nie ma wbudowanych mechanizmów skalujacych poziomo bazy danych. Do ZF będzie pewnie łatwiej dopisać możliwość shardowania danych niż do dosyć hermetycznego Doctrine(wersja 1.2, bo 2.0 będzie zupełnie inna). Jeśli sam php sobie nie będzie radził dokupicie drugi serwer aplikacyjny(spokojnie, to sie stanie przy kilku mln. odslon miesiecznie, kiedy bedziecie widziec ze to bedzie oplacalne) i już.
Krzysztof Krakowiak

Krzysztof Krakowiak Software Developer

Temat: Zend vs. Symfony dla dużego projektu

Od ponad miesiąca siedzę nad Symfony i mam wątpliwości czy jednak nie przesiąść się częściowo na Yii.

Symfony - fajny framework, sporo gotowych rozwiązań, aczkolwiek jeszcze nie we wszystkim się połapałem, i niestety martwi mnie jego wydajność...

Szybkość wczytywania się strony aktualnie jest kalkulowana do jej pozycji w Googlu, zastanawiam się, czy przy włączonym cache strona będzie na tyle wydajna aby w narzędziach dla webmastera w laboratorium wypadała z czasem wczytywania powyżej przeciętnej i czy przypadkiem nie będzie tak, że to googlebot będzie najczęściej trafiał na te podstrony dla których musi ponownie wygenerować się cache.

Dlatego rozważam też takie rozwiązanie aby na backendzie zostawić symfony a na frontend dać np Yii, ewnetualnie całość przenieść na Yii.

np mimo tego, że np wybrał bym inny framework to i tak wykorzystywał bym Symfony do generowania bazy ze schemy i do ładowania fixtures, a do wysyłania maili zenda ;)
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: Zend vs. Symfony dla dużego projektu

Uważam, że za bardzo kombinujesz. Dwa frameworki przy jednym projekcie? Slabo to widze.

Zastosuj cache i nie bedziesz mial problemu. Po stronie frontendu nie musisz uzywac czystego orm'a do skomplikowanych zapytan. Pełnej funkcjonalności orm'a uzywaj tylko w bardzo prostych zapytaniach a przy zaawansowanych przygotowuj sobie surowe zapytania sql, które w ten sposób jesteś w stanie łatwiej zoptymalizować.

Powinno wystarczyć:)
Krzysztof Krakowiak:
Od ponad miesiąca siedzę nad Symfony i mam wątpliwości czy jednak nie przesiąść się częściowo na Yii.

Symfony - fajny framework, sporo gotowych rozwiązań, aczkolwiek jeszcze nie we wszystkim się połapałem, i niestety martwi mnie jego wydajność...

Szybkość wczytywania się strony aktualnie jest kalkulowana do jej pozycji w Googlu, zastanawiam się, czy przy włączonym cache strona będzie na tyle wydajna aby w narzędziach dla webmastera w laboratorium wypadała z czasem wczytywania powyżej przeciętnej i czy przypadkiem nie będzie tak, że to googlebot będzie najczęściej trafiał na te podstrony dla których musi ponownie wygenerować się cache.

Dlatego rozważam też takie rozwiązanie aby na backendzie zostawić symfony a na frontend dać np Yii, ewnetualnie całość przenieść na Yii.

np mimo tego, że np wybrał bym inny framework to i tak wykorzystywał bym Symfony do generowania bazy ze schemy i do ładowania fixtures, a do wysyłania maili zenda ;)

konto usunięte

Temat: Zend vs. Symfony dla dużego projektu

Krzysztof Krakowiak:
Szybkość wczytywania się strony aktualnie jest kalkulowana do jej pozycji w Googlu, zastanawiam się, czy przy włączonym cache strona będzie na tyle wydajna aby w narzędziach dla webmastera w laboratorium wypadała z czasem wczytywania powyżej przeciętnej i czy przypadkiem nie będzie tak, że to googlebot będzie najczęściej trafiał na te podstrony dla których musi ponownie wygenerować się cache.

Wszystko zalezy od polityki cache'owania.

Niektore wpisy w cache mozesz przebudowywac w tle nim wygasna, mozesz zastosowac polityke tagow zeby inteligentnie invalidowac wpisy, itp itd

Przy dosc duzym systemie z duza liczba przetwarzanych danych mozna miec 40-60 requestow na sekunde do obsluzenia i czas odpowiedzi 40-70 ms - co powinno w zupelnosci wystarczyc.

[dodatek]

nim na mnie naskocza niektorzy :) oczywiscie jesli masz wiekszy ruch, mozna zastosowac duzo innych mozliwosci optymalizacji serwisu, i wejsc w przedzial 100+ na maszyne, ale w wiekszosci przypadkow taka wydajnosc jaka podalem wyzej w zupelnosci wystarczy.Marcin Bachleda edytował(a) ten post dnia 28.02.10 o godzinie 09:45
Marcin P.

Marcin P. Zakamuflowany
programista

Temat: Zend vs. Symfony dla dużego projektu

Roman Piekarski:
Uważam, że za bardzo kombinujesz. Dwa frameworki przy jednym projekcie? Slabo to widze.
To dość popularne rozwiązanie, z tymże do backend'u zwykle idzie inny język programowania niż PHP. Tak jak wspomniano, niezależnie od rozwiązania pierwsza pada baza danych.

Ja osobiście preferuje Zend, ale to dlatego że nie jestem zwolennikiem pluginów którymi chwali się Symfony. Preferuje własne rozwiązania, dedykowane dla każdej aplikacji.



Wyślij zaproszenie do