Nie ukrywam, że notka została zainspirowana ostatnim postem na The Daily WTF. Podobną sytuacje mieliśmy całkiem niedawno w pracy.
Jako project lead
systemu CMS wego, mam dość napięty harmonogram i całość mocy przerobowych firmy jest przeze mnie zaangażowana w rozwój tegoż systemu właśnie. W związku z tym, kiedy pojawił się klient, który wymagał indywidualnego rozwiązania, zadecydowano, że zlecenie zostanie outsource’owane, a realizacja przebiegnie poza firmą.
Nie byłoby w tym nic dziwnego, gdyby nie fakt, że po kilku dniach dowiedzieliśmy się, że aplikacja zostanie zbudowana w oparciu o eZ publish — system bardziej enterprise’owy niż statek kosmiczny bohaterów Star Treka. Wcześniejsze doświadczenia z refaktoryzacją aplikacji budowanych na eZ bynajmniej nie przepełniały mnie optymizmem, ale byłem mimo wszystko dobrej myśli — co prawda, już raz zdarzyło mi się przepisywać aplikację oryginalnie opartą na rzeczonym środowisku na wersję standalone, bo wydajność okazała się kwestią krytyczną, ale z całą pewnością w ciągu ostatniego roku eZ się rozwinął. Niczym Bogusław Wołoszański, powinienem teraz powiedzieć tego dnia nie mogli jeszcze przypuszczać, że już za dziesięć dni, w biurze obok, odbędzie się spotkanie, które odwróci bieg historii.
W dziesięć dni później pojawił się bowiem wdrożeniowiec, specjalista od pewnego systemu, którego domena macierzysta mówi wszystko (easy? no!). Rzeczona aplikacja została zbudowana w czasie, który nazwano rekordowym
(choć jej oparcie na frameworku typu Cake z pewnością zaowocowałoby skróceniem tego czasu, jak i oszczędzeniem nam kolejnych kłopotów, ale o tym za chwilę). Przyszedł czas na prezentację. Przygotowania chyżo ruszyły, a specjalista — niczym rączy rumak — wyrwał z kopyta i zatrzymał się na najbliższym słupie. Okazało się bowiem, że nasza wersja PHP jest zbyt nowa. eZ nie działa z PHP5 i tyle, żadna siła boska ni świecka do kooperacji go nie zmusi. Co prawda, wymaga MySQL5, ale parsera oczekuje prehistorycznego.
W 24 roboczogodziny później (Qwiat, jako admin, się specjalnie nie nudzi i bez takich kwiatków), system został uruchomiony. I dnia trzeciego zobaczył Pan, że aplikacja klika i było to dobre.
Chciałoby się powiedzieć, że wszystko śmiga,
ale byłoby to wyjątkowo niecelne sformułowanie. Strony serwisu potrzebują około sekundy na wyświetlenie. Pod jednym warunkiem — że znajdują się w cache. Jeśli się jednak przedawnią, na radość podziwiania kilkudziesięciu linijek HTML przyjdzie nam czekać dokładnie 35 sekund. Na serwerze, gdzie znajduje się kilkaset serwisów, w tym znacznie bardziej skomplikowane rozwiązania, które — bez użycia cache dla danych z bazy — radzą sobie w dobrze poniżej pół sekundy.
Cóż na to można zaradzić? Wdrożeniowiec zalecił instalację eAcceleratora i rekompilację MySQL z parametrami podanymi na stronie eZ publish.
Pewnie, a potem zakup dedykowanego serwera. eAccelerator przyspieszył proces generowania strony o całe 3 sekundy, druga sugestia trafiła wprost do /dev/null. Ale czegóż można się spodziewać po aplikacjach z enterprise
w sloganie marketingowym?
Zapomniałem wspomnieć, że w sytuacji, gdzie wszystkie vhosty mają ustawiony limit pamięci na nie więcej niż 12 8 MB, nasz system na eZ z rozkoszą poprosił o 50 MB żeby się w ogóle uruchomić. Boję się sprawdzać, jak wygląda diagram przepływu sterowania w kodzie, ale na usta ciśnie się cytat z komentarzy do wspomnianego posta na The Daily WTF:
It forgets the steps where it prints an image of the transactions and then scans them on a desktop to get the wood border.
Technorati Tags: ez cms software web enterprise


by qwiat
31 maj 2006 at 10:14
„Genialny” wdrożeniowiec nie był w stanie określić przed wdrożeniem wymagań CMS-u począwszy od wersji PHP a kończywszy na liście wymaganych modułów PHP. Zabawa polegała na instalacji wszystkich modułów jakie wyświetlała funkcja php_info(), odpalona na jego laptopie (oczywiście to był jakiś automat PHP-owy więc część jest zbędnych).
Na koniec dodam, że ów magik nie potrafił nawet skonfigurować phpMyAdmina, strach pomyśleć, że tacy ludzie próbują uchodzić z „twórców zaawansowanych serwisów internetowych”
by agaran
31 maj 2006 at 10:22
coz, moze ja podsumuje innym sloganem „powinni tego zabronic”
by h67aruki
31 maj 2006 at 10:33
Na sam koniec owocnego spotkania wyla mi kawe na moje nowe biale spodnie… Boze gdzie takich sieja?
by yZZuF
31 maj 2006 at 10:58
Jak sam widzisz to jest klasa enterprise. Jeżeli jesteś za cienki to wychodząc na ring dostaniesz w morde. Do aplikacji klasy enterprise musisz dorzucić jeszcze system który to uciągnie. Oczywiście też klasy enterprise — SLES albo RH ES. A jak dorzucisz serwer, po raz kolejny produkt klasy enterprise, np. IBM xSeries 336, 2 x Xeon HT 3,2GHz, 4 GB ramu, to może, zaznaczam może, uda Ci się spełnić wymagania i wszystko będzie działało bez zająknięcia.
A tak na poważnie to współczuję. Za dużo mam do czynienia w pracy z czymś co zwie się enterprise i wiem, że jest to nic innego jak tylko mydlenie oczu ludziom, a dokładniej marketoidom. Ale cóż, taki świat, takie życie.
8MB per vhost? Rozumiem, że to tylko profilaktyka i że nie jesteście ograniczani przez zasoby aż tak bardzo?
by Patrys
31 maj 2006 at 11:03
yZZuF:
8MB to domyślna konfiguracja, pozwala łatwo wyłapać błędy w kodzie (jak coś nagle zechce sobie zaalokować 20 MB). Jeśli ktoś potrzebuje więcej, to dostanie, ale ciężko znaleźć system w PHP, który by wymagał pamięci liczonej w dziesiątkach megabajtów ;)
by Riddle
31 maj 2006 at 12:51
Ten Wego ma logo inspirowane 37signals na maksa. ;-)
by MS
02 cze 2006 at 13:46
heh — zawsze czułem, że to całe eZ jest o d… potłuc… jakiś czas temu miałem wątpliwą przyjemność przerabiać sklep oparty o eZ publish (działał dramatycznie wolno i brakowało kilku istotnych elementów) i generalnie skończyło się na zrobieniu wszystkiego od nowa.
Do ww. limitów pamięci dodać należy spore zapotrzebowanie na powierzchnię dyskową ;)))
Nieustająco dziwię się też adminom serwisu PHP.pl, którzy są do tego stopnia zakochani w eZ, że obecnie http://www.php.pl to ramka ładująca stronę z phppl.ezpublish.no (widać nie udało się znaleźć w PL wystarczająco enterprise’owego hostingu).
by Łukasz
03 cze 2006 at 20:03
Witam, znalazłem Twój wpis zupełnie przypadkowo przeglądając polski internet dla słów „eZ+publish”. Zainteresowało mnie którą firmę reprezentował ów wdrożeniowiec?
Ponadto wydajności systemu to koszt który płacisz za funkcjonalność i elastyczność, a te są imponujące. eZ publish to duża aplikacja i jeżeli ktoś decyduje sie z niej korzystać, powinien spełniać wymagania, podobnie jak z każdym innym softwarem.
Co do osiągów eZ publish polecam wątek:
http://ez.no/community/forum/install_configuration/ez_publish_performance/
Hosting w Polsce? Proszę bardzo:
kei.pl
home.pl
webserver.pl
Każda z tych firm hostuje co najmniej kilka instalacji eZ publish, bez problemów i czasy generowania strony są bardzo dobre. Jeżeli trzeba, możesz korzystać ze static cache. Być może ów wdrożenioweic, pseudo-profesjonalista nie był w stanie zasugerować albo nie wiedział która firma eZ publish hostować może.
Padł także argument braku kompatybilności z PHP 5. Ty jako „project lead” powinieneś znać i widzieć różnice miedzy aplikacjami typu „PHP 5 ready” (które na PHP 5 można tylko uruchomić) a aplikacjami które w pełni korzystają z dobrodziejstw obiektywności PHP 5. Co więcej proces tworzenia eZ publish 4, które będzie PHP 5 strict został zapoczątkowany wraz z pojawieniem sie eZ Components. Wysoka wydajność obiektowego PHP 5 będzie miała na pewno odzwierciedlenie w osiągach eZ publish 4. O tym ze obiektowe PHP 4 jest wolne, wie każdy, cóż zrobić taka platforma …
pozdrawiam
Łukasz
by Patrys
03 cze 2006 at 20:07
Łukasz:
Z tym, że eZ Publish z PHP5.1 umiera na błędach składni.
Reszta twojego komentarza to marketingowa papka.
Tłumaczenie niskiej szybkości (a może wysokiej powolności) elastycznością, to jak sprzedawanie w salonie samochodowym amfibii, wciskanie jej człowiekowi, który potrzebuje malucha i tłumaczenie, że co prawda jedno tankowanie to cała pensja, ale za to można sobie pływać w razie powodzi.
by Łukasz
03 cze 2006 at 20:18
Patrys,
Umier bo kiedy powstawał, PHP 5.1 było w powijakach ;)
Z manuala PHP 5
The behavior of array_merge() was modified in PHP 5. Unlike PHP 4, array_merge() now only accepts parameters of type array. However, you can use typecasting to merge other types. See the example below for details.
O tym problemie piszesz?
Zgadzam sie ze software trzeba dobierać do potrzeb. Jeżeli eZ publish je przewyższa, zostaw go w spokoju …