BLOG ShopSys a netdevelo s.r.o.
Informácie z oblasti e-komercie a zo spoločnosti netdevelo.
Rady a tipy pre prácu s e-shopom, aktuality z vývoja aplikácie ShopSys.
ShopSys.sk
BLOG ShopSys a netdevelo s.r.o.
Jak se dělá ShopSys (video)
10. 2. 2010
Na základě četných podnětů našich zvídavých zákazníků jsme se rozhodli, že se s vámi podělíme o část našich znalostí v seriálu populárně-vědeckých článků. Příspěvek našeho vedoucího vývojáře Martina Šustka ukazuje na výhody a nevýhody různých druhů softwaru a popisuje způsob vývoje e-shopů ShopSys.
Zdravím všechny příznivce aplikace ShopSys! Jmenuji se Martin Šustek a ve společnosti netdevelo pracuji jako vedoucí oddělení vývoje. Tímto článkem poodhalím roušku tajemství, takže máte exkluzivní možnost zjistit, jak ShopSys vzniká a funguje a podíváme se na to, jak lze zkombinovat dva zdánlivě protichůdné požadavky na naši aplikaci ShopSys, tedy téměř neomezenou variabilitu a přitom snadnou, rychlou a levnou údržbu.
Podle strategie vývoje můžeme softwarové produkty rozdělit do dvou skupin. První skupinou jsou produkty implementační, které se vyznačují vysokými možnostmi přizpůsobení a tvorbě aplikace v podstatě na míru konkrétním uživatelům. Druhým přístupem je snaha vytvořit produkt, který bude v nezměněné podobně použitelný pro co největší masu uživatelů, někdy se tomu říká také „krabicový“ software.
Typickými příklady implementačních produktů jsou velké, na zakázku vytvářené, CRM a workflow systémy typu SAP, Altus Vario apod. Nasazení těchto systémů trvá zpravidla několik měsíců. Nejprve analytici zkoumají obchodní model klienta, později navrhují možná řešení, programátoři aplikaci připraví, následně se aplikace v několika kolech testuje a dokončuje. Nakonec se zaškolí uživatelé a teprve pak je program připraven k použití a přináší nějaký užitek.
Díky tomuto přizpůsobení je aplikace „šitá na míru“ konkrétním uživatelům a jejich požadavkům mnohem lépe. Na onu individualizaci je ovšem nutné se dívat také z druhé stránky, protože vyžaduje individuální přístup vývojářů a velmi znesnadňuje jakékoli pozdější úpravy aplikace.
Byť se produkt jmenuje stejně, každá kopie je jiná, a proto je také hledání závad a jejich odstraňování, stejně jako další práce, mnohem složitější. Je jasné, že cena za pořízení i údržbu takového řešení je vysoká důsledkem množství vykonané práce.
Příkladem druhé zmiňované skupiny produktů – takzvaných „krabicových řešení“ jsou například počítačové hry, kancelářské balíky a podobně. Krabicový způsob vývoje probíhá tak, že se vyvíjí jediná verze aplikace, která se dokončí a pak nasazuje na různých místech. Snahou je snížit náklady na vývoj tím, že se prodá co nejvíce kopií.
Pokud vyjde nová verze, stačí jí nahradit tu starou a jede se dále. Výhodou tohoto postupu je úspora nákladů a možnost nabídnout nižší cenu. Nevýhodou tohoto přístupu je, že prostým přepsáním souborů přijde zákazník o všechny individuální úpravy.
Řešení problému individualita versus údržba je několik, ale všechna mají svá úskalí. Můžeme například každou novou verzi aplikace individualizovat znovu. Tím ale přijdeme o ekonomickou výhodu. Další možností je přidávat všechny individuální úpravy do hlavní verze a na jednotlivých instalacích odlišnosti zapínat nebo vypínat. Ač se to zdá jako rozumné řešení a v praxi se tento přístup často používá, nikdy nenabídne dostatečnou volnost pro individuální úpravy a společně s tím, jak se aplikace neustále zvětšuje o nové a nové vlastnosti, klesá její výkon a je náročnější na vývoj i údržbu.
Takže jediným spolehlivým řešením problému krabicových aplikací je slevit z požadavku na individuální úpravy nebo možnosti aktualizace. Z pochopitelných důvodů se nelze zbavit bezpečnostních, výkonnostních, legislativních a dalších aktualizací; tím, co obvykle bere za své, je přizpůsobení aplikace potřebám uživatelů. Zkuste si zavolat na hot-line Microsoftu, že chcete mít ve svých Windows tlačítko Start vpravo.
Jak vyřešit dilema mezi krabicovou a implementační aplikací? Představíme Vám naše řešení, které kombinuje výhody a smazává nevýhody obou přístupů.
Vývoj aplikace ShopSys probíhá centralizovaně. Všechny zdrojové kódy jsou ukládány v repozitáři systému Subversion (SVN), kde není uložená jen aktuální verze, ale i veškerá historie jednotlivých změn provedených programátorem, stejně jako všechny vývojové větve a každá jednotlivá instalace.
V repozitáři se eviduje každá změna zdrojového kódu, kdo změnu provedl, datum změny a další informace technického charakteru. Každou takovouto změnu, ať už opravu chyby, přidání nové funkcionality nebo jiné kvalitativní vylepšení, je možné zpětně zrekonstruovat i na jiné instalaci aplikace.
Práce se systémem je jednoduchá. Nejprve si vývojář vyžádá zdrojové kódy pomocí příkazu „checkout“ (získat). Pokud někdo změní zdrojové kódy během jeho práce, může si stáhnout novou verzi příkazem „update“ (aktualizovat). Provede-li potřebné úpravy, použije příkaz „commit“ (odevzdat), čímž uloží své změny do repozitáře. Před přípravou nového e-shopu vytvoříme kopii výchozí verze příkazem „copy“. Na rozdíl od standardní kopie souborů, tato kopie v repozitáři nikdy neztratí svou vazbu na původní verzi. Vylepšuje-li se nebo opravuje původní verze, lze tyto změny sloučit se změnami konkrétního e-shopu příkazem „merge“. Automaticky je provedena většina potřebných úprav a problémová místa, kde je nutný lidský zásah, systém vyhodnotí, přehledně označí a nabídne programátorovi možnosti řešení.
Systém SVN ale řeší kromě problému individualizace versus aktualizace i další problémy, se kterými se setkávají vývojáři softwaru. Umožňuje přístup několika lidem najednou, takže odpadají problémy spojené s tím, že někdo z vývojářů dlouho upravuje lokálně starší verzi souboru a nakonec s ní přepíše práci někomu jinému. Vývoj i implementace se tedy urychlí díky tomu, že má více lidí možnost spolu sdílet stejný kód a pracovat na něm současně. Pokud se najednou programátor ve zdrojovém kódu ztratí, má kdykoli možnost se podívat, jak vypadal kód před jeho zásahem nebo před zásahem někoho jiného.
Jelikož je každá změna evidována v systému SVN, je možné určení individuální zodpovědnosti zaměstnanců i přes to, že se na projektu podílí více lidí. Nikdo se nemůže vymlouvat na to, že problém způsobil někdo jiný, takže si všichni dávají větší pozor a chyby se téměř nedělají.
Další výhoda je v možnostech zálohování. Protože zdrojový kód je ukládán centrálně, případná havárie na programátorově počítači nezpůsobí ztrátu dat. Centrální úložiště lze zálohovat velmi jednoduše. Systém SVN je naším „strojem času“, takže se díky němu můžeme podívat do historie a zjistit, jak bouřlivě se systém ShopSys vyvíjel v minulosti (poznáte to podle počtu změn, tzv. commitů (odevzdání práce) a počtu uživatelů, kteří do kódu v průběhu času zasahovali).
Historie aktivity uživatelů
Vývoj počtu aktivních uživatelů
Zajímavé je také sledovat aktivitu vývojářů během dne a v průběhu týdne. Je vidět, že netdevelo s.r.o. (skoro) nikdy nespí.
Aktivita během dne
Aktivita během týdne
Pomocí nástroje Gource můžeme navíc historii vývoje názorně modelovat a vytvořit například následující film. Je to vizualizace logu našeho systému SVN.
Neváhajte nás kontaktovať. Na základe konzultácií vám pripravíme riešenie a stratégiu šitú na mieru vaším potrebám.