Scurtă analiză a magazinelor românești

Acest articol este un fel de continuare/completare la articolul lui Laurențiu.

Plecăm de la premisa – probabil greșită în unele cazuri – că scopul final al magazinelor este să vândă cât mai multe produse într-un timp cât mai scurt (vorbim de timpul scurs de la intrarea unui vizitator pe site până la finalizarea unei comenzi). Implicit, asta înseamnă o experiență pe site cât mai plăcută, iar un factor important ce influențează această experiență este viteza de încărcare a site-ului.

De când s-a lansat moda Black Friday, absolut fiecare magazin a crăpat în momentele critice. Sfatul tuturor? Cloud Computing! Amazon EC2 sau Azure ar trebui să furnizeze suficient horse power pentru a ține piept hoardelor de cumpărători. Doar că:

It won’t hurt to run badly written code on the fastest possible boxes you can throw at it, of course. But if you want tangible performance improvements, you’ll often have to buckle down and optimize the code, too.

Hardware is Cheap, Programmers are Expensive

A doua recomandare este servirea resurselor de pe un CDN, pentru că se reduce încărcarea serverului. Dar mai este o chestie, mult mai interesantă: browserele au prostul obicei de a nu face mai mult de 2-6 conexiuni simultan la același server (în funcție de browser). Asta înseamnă că o pagină cu multe imagini – cam cum este prima pagină a unui magazin online: o mulțime de oferte și promoții – descarcă maxim șase imagini simultan, chiar dacă există suficientă bandă pentru mai mult. [1] [2]

Din fericire, majoritatea magazinelor testate folosesc subdomenii pentru imagini. Din păcate însă…

Utilizarea unui CDN nu rezolvă a doua mare problemă: dimensiunea paginilor. Care, mai nou, nu se mai măsoară în KB ci în MB. Am făcut un mic… să-i zicem studiu, din care au rezultat următoarele valori:

Magazin Dimensiune homepage
Oktal 600KB
PCFun 970KB
Cel.ro 1.0MB
Koyos.ro 1.3MB
Sigmanet 1.8MB
Marketonline 2.0MB
Altshop 2.1MB
PCGarage 2.1MB
Flanco 2.4MB
F64 2,6MB
Emag 2.9MB
Domo 3.0MB
Elefant 3.0MB
Evomag 7.4MB !!!

Dintre toate magazinele listate mai sus, versiuni responsive/mobile sunt oferite de:

  • PCGarage – 1.5MB (responsive)
  • Cel – 178KB
  • F64 – 200KB
  • Emag – 590KB

Surprizele plăcute au venit de la Oktal, Cel și F64. Pe de altă parte, site-ul Evomag este cel mai slab:

  1. Majoritatea (toate?) imaginile nu sunt optimizate. Deloc.
  2. Prima pagină conține ~60 produse vizibile (plus încă vreo 50 în carusele)
  3. Tot pe prima pagină există un banner cu 34 pagini (!!!) cu timer de vreo cinci secunde (ceea ce înseamnă că, pentru a vedea toate imaginile, utilizatorul trebuie să se holbeze la prima pagină pentru trei minute!) Ironia face că studiile arată o rată de conversie foarte scăzută pentru carusele. [1] [2]

Concluzii

  1. Server(e) separat(e) pentru fișiere statice. Că-i un S3, că-i un server în același datacenter cu serverul principal este mai putin important. Este important să fie pe un alt (sub)domeniu.
  2. Dimensiuni cât mai mici pentru pagini (imagini produse optimizate, scripturi minificate etc).
  3. Un site mic (în KB) nu garantează un site stabil – vezi F64, care în urmă cu câteva zile au lansat o scurtă promoție ce le-a pus site-ul în genunchi.
  4. Evomag violează utilizatorul, fie că-i desktop, fie că-i mobil.

Se estimează că sunt în jur de zece milioane utilizatori de internet în România și refuz să cred că mai mult de un sfert din ei intră simultan pe un site; cred, în schimb, că este mai mult o combinație de zgârcenie (programatori slabi, servere insuficiente) și nepăsare (merge și-așa, clienții cumpără oricum).

Una peste alta, nu cred că există suficienți utilizatori români de internet pentru a pune în genunchi un site într-un scenariu realist.

Resurse

24 Comentarii to “Scurtă analiză a magazinelor românești”

  1. progamatorii e scumpi.

  2. Hehe! Astia-s de la evomag is aia care la Black Friday mi-au luat banii dar nu mi-au trimis produsul, dupa care mi-au zis ca, daca sunt programator, ar trebui sa inteleg cum functioneaza treburile astea. :))

  3. ” daca sunt programator, ar trebui sa inteleg cum functioneaza treburile astea.” – Asta e cea mai subtila insulta de care am auzit :))

  4. Dap. Trebuie sa imi cer scuze public fata de Evomag si sa fac o mica corectura: nu era vorba ca nu mi-au trimis produs, ci faptul ca a fost ofertat la Black Friday la pretul “50% din X” dar pana am facut checkout mi-a fost taxat/facturat la pretul 100%.

    Numai de bine!

  5. nu neapărat programatorii sunt principala problemă, ci si zgârcenia celor care au magazinele online. (1Gbps? da’ ce-au frate 100Mbps?

    majoritatea programatorilor care au mai halit ceva la viața lor sunt pe-afară sau lucrează pentru firme de afară. în plus, cam nimeni înafara emag-ului n-a prea înțeles rolul marketing-ului în toată harababura asta prost aplicată numită e-commerce. iar pe parte de infrastructură, dumnezeu cu mila… prima chestie pe care o face un sysadmin care dă de selinux e să-l dezactiveze; c-așa zice în tutorial, nu face de capul lui, desigur. :) ah… și rolul unui reverse proxy e fix lula din punctul multora de vedere, la fel cum n-are rost să investești într-un load balancer fizic când poți balansa software și folosi mașina aia și ca să servești ceva poze să zicem + să hostezi niște fișiere în regie autonomă proprie.

    oricum, chiar și așa, dacă ai cum să împachetezi frumos un rahat (aka marketing), îl vinzi chiar dacă e cel mai împuțit. și lumea nu prea o să înțeleagă atâta vreme cât merge și așa aka nu există o alternativă ok. (amazon? yup, nu vând doar tigăi, ci au o întreagă echipă de engineering care a dezvoltat s3, ec2 etc)

  6. @C.: multumesc pentru comentariu (deși aș aprecia ca data viitoare să te semnezi cu un nume real). Emag o fi înțeles cum funcționează e-commerce, dar în momentul în care ai 110 servere și 70 programatori (cum singuri s-au lăudat) și totuși îți pică site-ul, e ceva putred :)

  7. C. e o simplă prescurtare.

    da, au 70 de programatori, dar au enșpe platforme de întreținut/dezvoltat, nu stau toți călare pe site-ul principal și nu toți îs geniali. ca fapt divers, site-ul principal era (sau încă e) o încrengătură de framework-uri, unde acțiunea de 404 dă de fapt redirect în routerul celuilalt framework și tot așa. la bf au rezistat datorită închirierii de servere în plus de la hostway + procesare a comenzilor pe lângă + afișat un html chior pe prima pagină + caching la greu cu varnish. d-aia am spus că măcar au urmat o oarecare strategie. :) spor.

  8. Exista CDN-uri in Romania (care sa-mi dea fisierul din orasul cl mai apropiat)?

    Ca alea externe sunt irelevante.

  9. @Dan: Nu exista, majoritatea serviciilor care ofera in Ro au serverele in Bucuresti.
    Ca sa nu mai zicem ca routele sunt facute cu curul, candva eu din Oradea ca sa-mi incarc siteul gazduit in Cluj ma trecea prin Bucuresti.

  10. Salut,
    In cazul EvoMag nu CDN-ul este problema ci compresia gzip si memcache care nu sunt activate pe server :)
    Info despre gzip aici: https://developers.google.com/speed/articles/gzip iar testul il faci aici: http://www.gidnetwork.com/tools/gzip-test.php
    Cu memcache e alta poveste dar e la fel de basic :)

    CDN-ul il poti face foarte simplu pe subdomeniu (ex. cdn.evomag.ro) si servesti elementele statice de acolo…

  11. 5. cache. cache la tot ce se poate face cache.
    6. sa angajeze programatori. din aia care stiu programare, nu coaderi de wp :D
    7. sa inteleaga ca felul in care e scris codul conteaza foarte mult.

    @c. cu ce te-ar ajuta pe server banda de 1gbs? in cele mai multe cazuri problemle vin la executarea codului, nu la transfer.

  12. Băi? Doar mie îmi pare redundant faptul că în fiecare an se vorbeşte despre aceleaşi optimizări la aceleaşi magazine?

  13. @Cătălin: nu îmi aduc aminte să se fi pus problema asta vreodată. Ci doar caching, caching, cdn, cloud, cdn, caching :)

    Cât despre aceleași magazine: ce să facem dacă altele nu avem? :D

  14. Păi hai să facem noi unu. Nu de alta dar e mai greu de zis decât de făcut.

  15. Ce folos ca Emag au sait de mobil, la Black Friday-ul trecut l-au dezactivat cu cateva zile inainte.

  16. Eh. Mai e de munca. Cred ca abia pe la sfarsitul anului urmator vom avea magazinele online puse la punct.

  17. foarte bine punctat, numai zic ca multe din scripturile js sunt puse bulk continand multe functii de care nu au nevoie(trec si de 300-400kb) si numai zic ca unele sunt scrise cu fundul, de interogari mysql/i numai zic, degeaba ai avion daca in el pui benzina in loc de kerosen asta e principiul hardware & programare

  18. N-ai ce face cu CDN in Romania, avem viteza metropolitana fff buna, subdomain sharding e de ajuns. CDN e daca ai vizitatori din SUA, EU, etc. Cum a scris si zoso, programatorii e problema.

    Si check out my latest (and greatest) creation: https://mediaplex.ro/
    In-memory database, subdomain sharding, ssl everywhere, optimizari peste tot, asa ca dpdv al vitezei si dimensiunii paginii cred ca e ok, mai am de lucrat la diverse features gen comentarii clienti, alerte, etc., dar asta pe parcurs ce se mai adauga produse, ca acum sunt prea putine.

  19. @weasel frumoasa optimizarea, asa ar trebui sa faca toate magazinele online.
    Vezi sa iti pui scriptu de la analitycs pe static, la tine papa 1,38sec GET-ul. La dimensiunea indexului de 253KB nu trebuie sa ia 4,55 sec loadul

    Page load time: 4.55s
    Total page size: 253KB
    Total number of requests: 9

    In rest totul pare super!

  20. Mie imi mergea destul de ok (se incarca orice pagina in <300ms) si cu analytics incarcat separat, imi scapase asta. Mersi de sfat, l-am pus local.

  21. @semeketh: vorbim după ce atingi peste 20k utilizatori simultani și rămâi cu putere de procesare la dispoziție, dar fără bandă :)
    @weasel: ai seturi de atribute separate? ai produse grupate/configurabile? ai tipuri separate de produse? asta-i ideea cu magazinele online mari: sunt complexe. iar complexitatea aduce cu sine și o abstractizare mai mare a codului și consum mai mare pe parte de procesare.

  22. In opinia mea, aici este treaba de Architect nu de programator.

  23. Fetele de la Relatii Publice Evomag in fiecare an “ies la rampa” si spun ca anul acesta site-ul Evomag “nu va cadea”

Show trackbacks
  1. […] ca Black Friday să le fie mai ușor (fără servere picate). O idee pe care am prins-o citind asta (prin link-ul de la Vali) și apoi am ajuns și la articolul lui Laurențiu.  Ce spun ei, pe […]

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>

windows apple dropbox facebook twitter