Enterprise, beam me up!

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:

10 » odpowiedzi dla wpisu “Enterprise, beam me up!”


  1. 1 qwiat

    “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”

  2. 2 agaran

    coz, moze ja podsumuje innym sloganem “powinni tego zabronic”

  3. 3 h67aruki

    Na sam koniec owocnego spotkania wyla mi kawe na moje nowe biale spodnie… Boze gdzie takich sieja?

  4. 4 yZZuF

    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?

  5. 5 Patrys

    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 ;)

  6. 6 Riddle

    Ten Wego ma logo inspirowane 37signals na maksa. ;-)

  7. 7 MS

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

  8. 8 Łukasz

    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

  9. 9 Patrys

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

  10. 10 Łukasz

    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 …

Skomentuj wpis