Přeskočit přímo na text


Proč byste měli používat Drupal, třeba pro svůj eshop

V tomto článku bych rád upozornil na temná zákoutí proprietárních řešení pro eshop a vyzdvihnul použití open source platformy, kterou používají statisíce profesionálů na velké spoustě často i vysoce exponovaných projektů. Budu zde obhajovat použití Drupalu, ale tyto argumenty se dají vztáhnout i na jiné celosvětově úspěšné profesionální platformy.

Bezpečnost

Bezpečnost je tradiční problém closed source řešení. Málokdy totiž vývojáři takových řešení poskytnou kód a dokumentaci cizímu odborníkovi k hloubkové analýze. Více hlav více ví a je tak větší pravděpodobnost, že výsledná aplikace bude bezpečná a nebude obsahovat více chyb než je zdrávo. (Zdravím Jirku Warmuze z Webmexu, který měl koule to veřejně přiznat.) Existují sice nezávislé certifikace, ale kdo to má? Je potřeba podotknout, že to nejsou žádné nepodstatné drobnosti umožňující „jen“ znefunkčnění aplikace, ale díry umožňující únik citlivých dat, manipulaci s objednávkami (třeba objednávat zadarmo, mazat objednávky, …) a to může přijít hodně draho. Tím nemám na mysli jen mastné pokuty od ÚOOÚ, ale i poškozená pověst, která se velmi špatně napravuje. Říkáte si, že na cílený útok jste moc malí a nepodstatní? Tak to je dobré si uvědomit, že drtivá většina útoků je prováděná automaty, kde člověk nastoupí až po objevení díry.

Open source systémy jsou oproti proprietárním ze svého principu ve výhodě, protože hledat a opravovat chyby může každý, komu na tom záleží. Pokud je v komunitě kolem daného systému dostatečné množství odborníků, tak se to opravdu děje. Takové komunity ale nevznikají kolem všeho, je potřeba aby byl daný projekt dostatečně atraktivní pro kvalitní vývojáře. Komu by se chtělo věnovat zdarma svůj čas projektu, který je v základu zmetek? Lépe na tom jsou projekty, které jsou nejen kvalitně navržené a napsané, ale jsou i univerzální. Komunita se tak netříští kolem CMS pro eshop, CMS pro blogy a CMS pro fotogalerie, ale spojí síly pro jeden univerzální CMS (viz. sekce o univerzálnosti). Kvalitní vývojáří půjdou tam, kde jejich práce bude mít větší efekt.

Asi ale nejsilnějším efektem, který má vliv na bezpečnost je modularita. Většina open source specializovaných řešení není nebezpečných přímo proto, že by komunita pozdě opravovala zranitelnosti, ale proto, že uživatelé neinstalují záplaty včas nebo je neinstalují vůbec. Crackerům pak stačí sledovat changelogy a využívat chyby, které byly v nových verzích opravené. Proč ale lidé záplaty neinstalují? Nejčastěji to je kvůli úpravám, které si do systému přidali a nechtějí věnovat prostředky na přepisování svých modifikací pro každou novou verzi. Modularita toto řeší jednoduchým principem: Pokud potřebujete systém nějak vylepšit nebo upravit jeho chování, stačí jen napsat svůj modul a jádro s ostatními moduly můžete aktualizovat bez práce navíc.

Drupal pomáhá řešit všechny tyto problémy. Komunita čítá tisíce vývojářů, často profesionálů se zkušenostmi z prestižních projektů pro nadnárodní firmy. Drupal Security Team aktivně vyhledává zranitelnosti nejen v jádru ale i v minoritních modulech s několika desítkami stažení (vlastní zkušenost :-)). Díky své modularitě a univerzálnosti byl vyzkoušen na projektech všech velikostí, komplexnosti i typech zákazníků. Aktualizační proces je zjednodušen jak to jen jde, pomocí nástroje drush dokonce můžete aktualizovat jedním příkazem do konzole. Osobně mi není znám jediný případ hacknutí Drupalu, ale nevylučuji, že se to u špatně spravovaných instalací stává (hlavně hack samotného serveru, vyzrazení hesel přes spyware a podobně). Samozřejmě tedy je potřeba dbát na bezpečnost webserveru, všech přihlašovacích údajů a také konfigurace (abyste například nedali nějaké nebezpečné oprávnění cizím uživatelům).

Customizace

Možnosti konfigurace vyplývají z modulární architektury a vysoké míry abstrakce, kdy má programátor možnost zasáhnout snad do jakéhokoliv procesu v Drupalu jen obyčejným modulem. 

Hotové moduly sdílené a udržované komunitou pokrývají snad všechny běžné případy užití, kde modul plní většinou jen abstraktní úkoly, ne konkrétní uživatelskou funkcionalitu. To znamená například, že neexistuje modul pro fotoalbum, ale že si tuto funkcionalitu musíte poskládat z modulů např. pro správu souborů v poli entit, pro rozšíření filefield o práci s obrázky, nějaký modul pro komfortnější nahrávání obrázků, nastavit deriváty pro generování náhledů, naklikat pohledy na data včetně slideshow a podobně. Pro tyto typické případy ale existují tzv. features, což je speciální druh modulu, který nese konfiguraci pro jiné moduly, nějakou fíčuru pro typické fotoalbum tedy asi najdete.

Velmi silnou schopností Drupalu je jeho uživatelské rozhraní, kde se dá naklikat i velmi komplexní chování, včetně libovolných výpisů dat, pravidel reagujících na různé události a importu a exportu dat v jakémkoliv formátu. 

Celý Drupal Commerce (ekosystém modulů pro eshopy) je založen na univerzálních entitách, tedy je možné je zobrazovat, vypisovat nebo naklikat business logiku pomocí standardních nástrojů Drupalu. Například je možné reagovat na událost „Line item price is being calculated“ a naklikat jakkoliv složitou logiku slevy včetně „každé třetí balení zdarma“, „sleva X % na produkt A, pokud je v košíku i produkt B“, „sleva X % na skupinu produktů, pokud zákazník za poslední měsíc nakoupil za minimálně X peněz“.

Na současném trhu je v podstatě nutností ladit design celé aplikace a tak přijde vhod, pokud budete moci na základě analýzy použitelnosti (zdravím kamaráda Honzu Kvasničku :-)) pohodlně měnit konkrétní detaily uživatelského rozhraní. V těchto situacích nejčastěji využijete Drupalových theme hooks, kde můžete svým tématem vzhledu (theme) přetížit konkrétní šablonu jakéhokoliv modulu.

Velmi prakticky se také jeví možnost integrace eshopu s produktovým webem, podporou a vnitřním IS v jednom rozhraní, jednou databází. Nebo co třeba dropshipping platforma, kde klient dostane hotový hostovaný eshop ve vlastní grafice na vlastní doméně, ale se společnou databází produktů a jednou údržbou?

Vendor Lock-in

Uzamčení na dodavatele je častý problém proprietárních řešení, kdy změna dodavatele je velmi drahá a tak má klient velmi omezený vyjednávací prostor v případech, kdy dodavatel například změní cenovou politiku nebo směr vývoje někam, kde to klientovi nevyhovuje.

Podnikání nejen v segmentu českých eshopů je velmi náročné na schopnost měnit svou strategii (pivotovat) v reakci na konkurenční prostředí, změnu trhu nebo svého produktu. Pokud budete muset měnit svůj eshop a proprietární platforma to neumí, tak jste odkázaní na dodavatelův ceník speciálních úprav. V horším případě byl vývoj této větve ukončen a vy musíte zaplatit upgrade na aktuální verzi.

Drupal je open source platforma, kterou používají stovky firem od nadnárodních korporací po freelancery. Pokud jste se svým dodavatelem z jakéhokoliv důvodu nespokojeni, tak se jednoduše ozvete jinému, nebo si na to vyškolíte někoho svého.

Budoucí rozvoj

Při výběru platformy je nutné přemýšlet i o její budoucnosti. Mnoho jsem napsal v předchozí sekci, zde upozorním ještě na problém související s bus/truck faktorem. Projekt může být open source, ale co by se třeba stalo, kdyby se David na posledním Barcampu v Ostravě přepil metanolu? Myslím, že by česká Nette komunita byla ráda, pokud by někdo vůbec vydával hotfixy. I open source projekt může umřít, pokud nemá v komunitě příznivý poměr uživatelů a vývojářů. A to nemusí lidi rovnou umírat, stačí, když se v očích jeho vývojářů jen ukáže jako neperspektivní.

Kvalita

Ne každý projekt je napsán špičkami v oboru (i já můžu na GitHubu založit projekt). Ne každý projekt má přísné coding standards, testy pro všechny důležité moduly, dokumentaci jak ve formě článků, tak i webového výstupu z Doxygenu. Drupal ano.

Pokud Vás to zajímá, koukněte jak funguje automatické testování na Drupal.org a jak funguje Drupal Security Team.

Abstrakce

Díky abstrakci je Drupal neuvěřitelně univerzální platforma. V databázi nemá produkty s cenou a obrázkem, ale entity typu product, které můžou ale nemusí mít pole typu částka (nebo více částek pro různé zákazníky) a pole typu Image dědící většinu vlastností z File. Data mohou být importována z externího systému, ale modul Image nezajímá, jestli data dostal od uživatele, nebo připlula z Pohody.

Výkon

Kolem Drupalu koluje spousta mýtů, ten o jeho výkonu je jedním z nich. Drupal díky své komplexnosti vyhodnocuje mnohem více dat než specializovaný systém. To ale nutně nemusí znamenat, že uživatel bude na vše čekat déle. Drupal má velmi komplexní systém cachování na mnoha úrovních. Cache z důvodu kompatibility standardně uložená v relační databázi, což není moc rychlé, ale můžete si stáhnout moduly pro napojení cache a dalších kritických částí na různé objektové databáze, file storage, memcached, APC a další. Na kvalitním hostingu není problém, aby byl Drupal pro běžný provoz srovnatelně rychlý, jako statické stránky s pár dynamickými skripty. Kvalitní hosting vhodný pro Drupal sice stojí víc peněz než ten nejlevnější, ale za ten komfort Drupalu, vyšší spolehlivost a ochotnější helpdesk to stojí, ne?

Interoperabilita

Z pohledu českého prostředí tady Drupal trochu pokulhává, ale není to tak strašné, jak by se mohlo zdát. Moduly pro platby pomocí PayPal a GoPay (snad všechny české a polské platební brány) jsou k dispozici.

Samostatné moduly pro napojení českých ekonomických systémů sice chybí, ale to nevadí, import a export dat se dá pro všechny rozumné formáty naklikat pomocí ekosystému kolem modulů Feeds (import) a Views (export).

Pro přihlašování můžete použít všech služeb využívajících standardní protokoly jako OAuth, OpenID, LDAP a mnoho dalších. Out-of-box podpora pro Facebook, Twitter, Google, MojeID včetně speciáních údajů. OAuth navíc podporuje i synchronizaci dodatečných dat včetně profilovek a napojení na API pro bližší integraci například s Facebookem.

Je dobré zmínit i možnosti migrace z jiných systémů pomocí Migrate a jeho ekosystému (Wordpress, …)

Cena

Podstatné mínus Drupalu z pohledu klienta je jeho cena. Samotný software je zdarma, ale díky své komplexnosti je z pohledu vývojáře docela složitý. Počítejte s tím, že Drupalistovi zaplatíte mnohem větší hodinovku než běžnému PHP programátorovi, ale bude mít složité věci mnohem rychleji hotové a v mnohem větší kvalitě. Jednoduše, za kvalitu se platí. Podle mě ale pro úspěch v tomto segmentu je většinou potřeba to dělat lépe než konkurence, málokdy levněji než konkurence.

Nauč se sám

Můžete se taky naučit Drupal sami. Učící křivku bych přirovnal k výstupu na osmitisícovku. Dostat se nahoru je sice fuška, ale pokud se vzdáte v polovině, tak nevadí, i tak jste zažili úžasné věci.

Pokud chcete začít, tak je asi nejlepší zajít na některou Drupal hospodu, které bývají s různou pravidelností v Praze, Brně i Ostravě (sledujte Drupal.cz). Jako pískoviště doporučuji Drupal Gardens, což je obdoba Webnode s hezčím rozhraním a většími možnostmi. Za zkoušku stojí i nový Drupal 8 (co je nového), kde bude mnoho nového a intuitivnějšího. Pokud chcete v Drupalu moderní a vyladěný eshop, tak zkuste jeho distribuci Drupal Commerce Kickstart (vyzkoušejte v simplytest.me). Pokud Vás zajímají nějaké “reference” Drupalu, koukněte se na drupalshowcase­.com.

Alternativy k Drupalu

Nenapadá mě žádná jiná tak všestranná platforma orientovaná na „klikací“ konfigurací s tak velkou komunitou. Drupal je nejen CMS ale i framework.

Podobně kvalitní řešení je ale možné postavit na některém z čistých frameworků, kde sice máte obrovskou svobodu a kontrolu nad výslednou aplikací, ale zaplatíte za to nustností napsat všechno v kódu a často i s chybějícími hotovými komponentami. Pokud toto akceptujete, tak doporučuji Symphony, Django, Ruby on Rails, Node.js a s přimhouřeným okem i Nette.

Je Drupal vhodný pro české prostředí?

Záleží na případu. Pokud máte nějaký rozpočet a zvažujete, jak jej efektivně investovat, tak si můžete nechat na Drupalu postavit kvalitní řešení, které bude i do budoucna udržovatelné. Drupal je stavěn na pro globální trh a tak občas můžete narazit na drobnosti v česku důležité, ale ve světě exotické. V českém prostředí je ostatně jako v globále Drupal na vzestupu a postupně se jednotlivé nedostatky řeší. Například česká dobírka není v Drupal Commerce “out of box”, ale po pochopení jeho filosofie není problém si to nakonfigurovat ručně. K příjímání plateb je připraven modul pro PayU k dispozici zatím jen experimentální modul pro Gopay, kterým vyřešite všechny české brány. Propojení s bankou pro převody lze vyřešit pomocí Feeds.

Problém by mohl nastat, pokud nemáte na odborníka a chcete si eshop poskládat svépomocí. Drupal pro odpovídající výsledek vyžaduje trochu programátorského myšlení. Pokud Vás ale sekce o customizaci a abstrakci nevyděsily, zkuste to.

Za oponenturu děkuji:

About the authornení
 

Působivé

Díky za tento působivý manifest Drupalisty!

český shop

Ahoj, článek mě velmi zaujal, kdysi jsem na Drupalu jeden web postavil, ale dál jsem se tomu moc nevěnoval. Nemáte na ukázku česká eshop běžící na Drupal Commerce Kickstart? Díky Jirka

Ahoj, postavil jsem na tom

Ahoj, postavil jsem na tom e-shop www.yogaguru.cz (plně funkční). Použil jsem právě Kickstart,tak mrkni.

P.S. Množí se na tomto webu objednávky, kdy někdo testuje funkčnost systému až do dokončení objednávky. Jedná se o funkční shop, tedy ne DEMO, prosím respektujte to! Děkuji.

Z hlavy mě napadá třeba

Z hlavy mě napadá třeba http://www.fler.cz nebo http://www.melvil.cz

Melvil je podle me teda

Melvil je podle me teda Ubercart a Fler si myslim na Drupalu postaveny neni.

Ubercart? Tím se vysvětluje,

Ubercart? Tím se vysvětluje, proč zanevřeli na Drupal :-). Fler jsem zkoumal a je na 99% na Drupalu.

Ahoj pravě jsem si přečtl

Ahoj pravě jsem si přečtl tvoje hodnocení ohledně Drupalu jako platforma pro eshop. Jen si nejsem jistý tou podporou modulu PayU. Zmiňoval jsem se na Integrace s PAYU (online platba), že sám autor říká, je to určeno jen pro Polsko (This version works only with Payu/platnosci.pl (available at www.payu.pl). Takže pokud má někdo zkušenosti z provozem tohoto modulu pro Česko bylo by fain kdyby to zde na Drupal.cz bylo rozvedeno, aby uživatelé pak nebyli zmatení…

Taky jsem se o toto zajímal a

Taky jsem se o toto zajímal a získal jsem úplně stejný dojem, že to je určeno jen pro Polsko. Pro Česko existuje integrace GoPay, ale bohužel zatím jen pro Übercart (http://drupal.org/…ect/uc_gopay), resp. pro Drupal Commerce v sandboxu (http://drupal.org/…aska/1831634).

S PayU nemá osobní zkušenost,

S PayU nemá osobní zkušenost, ale v jejich oficiální dokumentaci jsem četl něco jako, že Česko má jiný protokol, ale ten bude v blízké době nahrazen tím novějším polským, který tehdy měl v Česku běžet v nějakém testovacím režmu. Modul tedy má spíše neaktuální popis.

Ruku do ohně bych za to ale nedal, chce to podrobnější zkoumání. Zjišťoval to někdo jiný?

Alternativy k Drupalu

Jako alternativu k drupalu bych viděl TYPO3, což je stejně jako drupal nejen CMS ale i framework. V Čechách není moc rozšířen, ale v ostatních zemí Evropy je hojně rozšířen.

kam přejít z Drupalu?

Na Typo3? Zatím jsem spíše pro Drupal8 :-)

Zrovna před pár dny jsem si procházel nějaká srovnání zde:
http://w3techs.com/…pal,cm-typo3
a i vzhledem k tomu mi Drupal vychází nejnadějněji (podotýkám, jsem zavilý odpůrce php, nicméně zatím nic kloudně rozšířeného na žádné lepší technologii není)

Pokud ale znáš alespoň jeden důvod, proč TYPO3, sem s ním ;-)

Poslat nový komentář

  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <em> <strong> <b> <i> <br> <code> <ul> <ol> <li> <pre> <pre class="php">
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Více informací o možnostech formátování

Hledat

Přihlášení

Bezpečnost Drupalu

Z hlediska bezpečnosti je Drupal na velmi vysoké úrovni, díky propracovanému systému hlášení, prověřování a řešení možných problémů.

Čtěte více a odebírejte bezpečnostní aktuality

Poslední komentáře

Kdo je online

Momentálně je online 1 uživatel a 3 hosté.

Online uživatelé

Support

Psychologie - poradenství