Od PHP až k Ruby on Rails

Zaujal vás framework Ruby on Rails, ale máte o něm pochyby, resp. nechce se vám plýtvat silami a učit se další webový framework? V článku Lukáše Burkoně z eBallance se dozvíte, jak se k Railsům dostali oni, jaká byla jejich motivace, co jim Railsy přinesly a jakým problémům při přechodu museli čelit.

Dlouhá léta s PHP

Jako většina online agentur, zabývající se vývojem webových aplikací, jsme stavěli naše řešení na PHPku. Povětšinou jsme vytvářeli standardní aplikace typu web s CMS, e-shop apod., ale dostalo se i na aplikace na míru.

Jelikož už ale fungujeme nějaký ten pátek, tak jsme si prošli barvitou evolucí, od garážových začátků na živnostňácích až po naši současnou značku eBallance. Po technologické stránce, z pohledu vývoje, jsme se rozvíjeli také. Začínali jsme ale v době, kdy dnešní webové frameworky buď vůbec neexistovaly, nebo byly teprve ve velmi raném, dosti neohrabaném stádiu vývoje.

Tu dobu si jistě všichni dobře pamatujete: většina webových vývojářů stavěla na PHPku, zpravidla podle knihy Jirky Koska, absence kvalitních frameworků ale měla dva efekty – kdo neměl smysl pro kulturu kódu, tak vytvářel po technické stránce dosti tristní aplikace, a kdo chtěl být poctivý, tak si začal psát vlastní framework, resp. často spíše pseudo-framework.

My jsme se snažili zařadit mezi druhou skupinu a stejně jako velká část ostatních jsme si vystavěli vlastní řešení, které jsme pojmenovali Defactory. Samosebou s ambicemi vytvořit univerzální platformu pro tvorbu webových aplikací, se kterou dobudeme svět.

V minulosti jsme se snažili využít i rozšířené open-source balíky jako Joomla, Drupal či WordPress, ale odradily nás jak „kulturou“  svého kódu, tak i problematickou účelovostí – udělat v nich něco čistě na míru nám připadalo prostě jako zápas.

Postupem času se začaly objevovat open-source frameworky, kterým se podařilo vybočit z řady a získat na svou stranu početnou skupinku uživatelů – vývojářů. V tomto bodě jsme už ale měli Defactory ve stavu, kdy dostatečně plnila naše aktuální potřeby, a hlavně: byl to framework, který jsme si sami vytvořili, a tudíž jsme přesně věděli, jak do detailu funguje a jak pomocí něj vytvořit aplikace, které naši klienti poptávali. Přechod na jiný framework tudíž v tu chvíli pro nás nedával smysl.

PHP frameworky jako Zend a Symphony ale záhy nasadily rapidní tempo a poměrně rychle nabídly takovou architekturu a možnosti, kterým jsme sami nebyli schopni konkurovat. Začínali jsme tak cítit, že se něco musí změnit, že je naše tempo vývoje naším aktuálním frameworkem limitované a budeme s tím muset něco provést.

K Railsům jsme se dostali vlastně náhodou

Začalo to nevinně – na podzim minulého roku jsme se rozhodli, že veškeré naše a klientské projekty, které jsme doposud hostovali na managed serveru, přesuneme do Cloudu – konkrétně na Linode, který nám, na doporučení Lukáše Konarovského, vycházel nákladově cca na desetinu ceny našeho stávajícího serveru.

Když jsme začali s Lukášem plánovat přípravu virtuálního serveru a migraci projektů, tak jsme se do hloubky bavili i o zlepšení našich vývojových procesů (jako automatizaci deploymentu apod.). V rámci toho jsme dospěli k zajímavému závěru – náš systém na to nebyl dostatečně připraven, a tak nás Lukáš začal nenápadně lanařit na svůj nejoblíbenější webový framework – Ruby on Rails – kde jsou veškeré zmíněné věci už elegantně vyřešeny.

Jelikož jsem otevřený novým technologiím a naše aktuální situace nebyla dlouhodobě udržitelná, tak jsem se rozhodl dát Railsům šanci, a vydali jsme se při rozvoji novým směrem.

Skočili jsme do toho po hlavě…

Nemám rád polovičatá řešení, a když do něčeho jdu, tak naplno – i v tomto případě jsem volil poměrně radikální, i když možná trochu riskantní postup. Promluvil jsem si s týmem, co si o přechodu na Rails myslí, a po pozitivním ohlasu jsme si řekli, že do toho opravdu půjdeme, a naplno. Zhruba za měsíc už jsme nové projekty vyvíjeli výhradně v Rails.

Přestože jsme projekty stavěli původně na vlastním produktu, měli jsme dobrou znalost i standardně využívaných PHP frameworků jako Zend Framework, Kohana či Prado, a tudíž pro nás přechod na Rails nebyl bolestivý. De facto většina současných frameworků využívá podobné architektonické prvky jako MVC, Active Record apod. stejně jako Rails. Vývojář s léty praxe se pak poměrně rychle zorientuje. Jedná se spíš o pochycení odlišné syntaxe, příp. koncepce řešení některých standardních situací, jako je zpracování formulářů, routování nebo třeba komunikace AJAXem. Kvalitních zdrojů a dokumentace je ale dost, nemusíte se tedy bát, že byste se ve frameworku ztratili.

Zároveň nám velmi pomohl právě i Lukáš Konarovský, který nám, jako zarytý Rails evangelista, poskytl celou řadu užitečných zdrojů a rad, nasměroval nás na výuku vývoje v Rails a souvisejících technologiích a postaral se o nastavení celého vývojového a produkčního prostředí. Bez všech těchto věcí by asi naše startovní pozice byla o hodně horší.

Pokud jde o vhodné zdroje, tak výchozí základ Lukáš pěkně shrnul ve svém blogpostu. Nám při výuce asi nejvíce pomohly dva hlavní zdroje, které každému začínajícímu vřele doporučuji – RailsForZombies a původní Rails Guides.

Co se týče vývojového a produkčního prostředí, nachystal nám Lukáš na našem virtuálním serveru vcelku standardní sestavu pro vývoj v Rails. Základem je Debian, webový server Nginx a Ruby 1.8.7. Cílem bylo server co nejvíce odlehčit, tudíž na něm běží pouze minimum potřebných procesů. Verze svých projektů spravujeme skrze instalovaný GIT, deployujeme přes Capistrano a veškeré zálohy se nám automaticky zasílají na Amazon S3, který navíc na první rok využití nabízí 5GB úložného prostoru zdarma.

Je na místě zmínit, že vývojáři, pracující na Windows, mají výchozí pozici ztíženou. Samotné Rails včetně souvisejících technologií si totiž rozumí se systémy na bázi Unixu, ale s Windows nejsou příliš kamarádi. Jste-li tedy uživateli Windows, očekávejte více práce s instalací, konfigurací, aplikace zde běží pomaleji a zároveň práce s příkazovou řádkou, bez které se v Rails neobejdete, není tak přívětivá jako např. na Macu. Vše se ale dá vyřešit bez nutnosti změny platformy. Pro instalaci a následný běh pod Windows doporučuji např. následující zdroje – RubyInstaller for Windows, Vagrant nebo Console.

Open-source balíky ani v Rails světě nestačí

Jak jsem již zmínil, naší hlavní činností z pohledu vývoje byla tvorba vcelku standardních webových aplikací. V PHP světě nás ale volně dostupné open-source CMS, e-shop a podobné balíky nepřesvědčily, proto jsme šli cestou vlastního řešení. Po vstupu do světa Rails jsme si ale řekli, proč vše vyvíjet nanovo, určitě zde bude celá řada kvalitních hotových open-source aplikací.

V porovnání s PHP světem jich však je v Rails podstatně méně. Resp. těch, co něco opravdu umí a mají fungující komunitu, je jak šafránu. V jednoduchosti lze říci, že nejsilnější Rails systém pro správu webového obsahu je Radiant CMS, zatímco nejpokročilejší e-shop platformou je Spree Commerce.

Architektura, technické zpracování i uživatelské rozhraní obou balíků je povedené, avšak obdobně jako v PHP světě velmi jednoúčelové. Každá z platforem sice má rozsáhlou, uživateli vytvářenou knihovnu rozšíření, takže můžete svůj web obohatit např. o diskuze, přehled událostí nebo ho napojit na Facebook, ale stále půjde o správu běžného webu.

Pokud se však, jako naše agentura, živíte zakázkovým vývojem, kdy jednou vytváříte klasický web s CMS, podruhé pak elektronický obchod na míru a jindy třeba kombinaci obojího s komunitními prvky, máte i v Rails světě s open-source balíky najednou problém. Jednotlivé balíky totiž nelze vzájemně propojovat a musíte si vždy vybrat, který z nich na projektu využít. Pokud potřebujete funkce kombinovat, pak se dostanete do situace, že buď budete mít e-shop s rozšířením na CMS, anebo CMS s rozšířením na e-shop. Nějaká obecnější, neúčelově zaměřená platforma s portfoliem standardních komponent typu stránky, produkty, diskuze apod. pro stavbu klasických aplikací zde však, stejně jako v PHP světě, chybí.

Máte tedy následující možnosti: Buď se zaměříte, budete implementovat např. pouze e-shopy, a tudíž se stanete specialisty na jednu vybranou platformu, kterou do hloubky ovládnete a přizpůsobíte si ji dle svých potřeb, anebo se rozhodnete zůstat u širšího portfolia poskytovaných aplikací, a pak je nejvýhodnější si vystavět vlastní řešení, které bude vašemu stylu práce ideálně vyhovovat.

Hlavní síla Rails implicitně není v tvorbě krabicových řešení, ale spíše v rapidním, z pohledu programátora velmi přívětivém, vývoji aplikací na míru. Díky této vlastnosti a díky velkému množství již hotových knihoven, tzv. gemů, však můžete svůj základ pro stavbu „krabicových“ řešení připravit poměrně rychle, což byl nakonec i náš případ – obnovili jsme naši starou platformu Defactory, avšak na zcela novém podvozku. Pokud půjde vše podle plánu, rádi bychom ji následně na GitHubu zveřejnili coby open-source.

Společnost eBallance nabízí agilní vývoj webových aplikací v Rails s úzkou vazbou na online marketingové služby a s ohledem na obchodní cíle svých zákazníků.

Komunita a kultura

Nejsilnějším prvkem na Rails je pravděpodobně komunita a její kultura. Rails vývojářů je, v porovnání např. s vývojáři v PHP, podstatně méně, ale dovolím si tvrdit, že jejich průměrná kvalita je viditelně vyšší. Samozřejmě, i v PHP je celá řada špičkových programátorů, naproti tomu v Rails také nalezneme nejednoho amatéra. Můj pocit a dosavadní osobní zkušenost mě ale prozatím přesvědčila, že najít kvalitního Rails programátora je podstatně snazší než najít obdobu v PHP.

Je otázka, čím je to způsobeno. Dle mého názoru to bude primárně díky kvalitě Rails frameworku, který své uživatele svou prověřenou architekturou a striktními konvencemi nutí psát aplikace velmi podobně – výsledný kód aplikace dvou různých Rails vývojářů bývá často daleko podobnější než např. dvou vývojářů v Zend Frameworku, který má naopak konvence poměrně volné.

Dále se liší situace region od regionu. Např. u nás nejsou Rails mezi vývojáři ještě příliš rozšířeny – podle globálního komunitního serveru Working with Rails se u nás k Rails hlásí 80 lidí (realita bude samozřejmě vyšší). Cestu si k Rails nejčastěji naleznou vývojáři, kteří již mají něco za sebou a hledají něco víc – což byl i náš případ. Z toho důvodu může domácí Rails komunita působit možná trochu elitářsky, přičemž je pravdou, že řadě domácích Rails vývojářů sebevědomí a silný entusiasmus k Rails rozhodně nechybí.

Česká komunita ale rozhodně není uzavřená, ba právě naopak. Domácí Rails evangelisté, jako např. Karel Minařík, mladý Tomáš Jukin nebo třeba již zmíněný Lukáš Konarovský, se snaží komunitu co nejvíc otevřít. Máte-li zájem s Rails začít, rozhodně doporučuji se do práce v komunitě aktivně zapojit. Vstupní branou pro vás může být některý z následujících zdrojů – RubyOnRails.cz, jejich Twitter účet a Google Group, Rails fórum – nebo dorazte na tradiční Ruby sraz, který se koná první středu v měsíci večer, zpravidla v pražském baru Fraktál.

Pro mladé, začínající vývojáře ale jsou i další možnosti, jak s Rails začít. Tomáš Jukin nabízí úvodní Rails školení, Karel Minařík je vám schopen nabídnout školení Rails i GITu na míru vašim potřebám a dokonce i na univerzitě – konkrétně na Unicorn College – naleznete kurz Webové technologie, kde se s Ruby a Rails studenti seznámí od základů pod výukou Tomáše Holase a Jana Minárika.

Jste-li firma, která váhá, podobně jako jsme váhali my, zda na Rails přejít, a obáváte se např. nedostatku personálních kapacit na trhu, pak myslím, že přehnané obavy nejsou na místě. Rails vývojářů u nás sice není tolik, jako např. vývojářů v Nette, ale firem je také podstatně méně – oficiálně něco přes deset – takže volných vývojářů se zájmem o práci je poměrně dost. Např. mně se podařilo pro jeden větší projekt za týden sestavit tým pěti Rails vývojářů, což mě samotného až překvapilo. Zpravidla se vám podaří sehnat kvalitní programátory, musíte ale na druhou stranu počítat s jejich vyšší cenou oproti např. běžným PHP vývojářům.

Pokud jste vývojář, který o přechodu na Rails uvažuje, tak bych vás taky podpořil. Hlad po kvalitních Rails programátorech je nejen na domácím, ale především i na globálním trhu. U Rails vývojářů je velmi časté, že spíše pracují coby freelanceři – kontraktoři, a řada českých vývojářů outsourcuje své služby do zahraničí, zpravidla do západní Evropy či USA. Pro tyto účely může posloužit např. některý z pracovních portálů, ať už je to např. obecný Guru.com nebo třeba Job Board přímo od 37 signals – tvůrců Ruby on Rails.

Shrnutí

Pokud budu mluvit za svou firmu, tak v Rails prostředí se sice pohybujeme ještě poměrně čerstvě, ale s přechodem z původního vývoje pod PHP jsem spokojen a dle mého názoru nám tento krok velmi pomohl ve zkvalitnění našich vývojových procesů a prospěl efektivitě práce. Tudíž čistě za sebe, i za svou firmu, mohu tento krok vřele doporučit.

Rád si nyní poslechnu váš názor. Pokud v Rails vyvíjíte, jak jste s tím spokojeni? Co vám vyhovuje a co naopak chybí či vadí? Pokud o Rails teprve uvažujete, tak jaké jsou vaše vstupní bariéry, čeho se obáváte nebo co vás brzdí? A pokud v Rails nevyvíjíte, ani o tom neuvažujete, tak v čem si myslíte, že je technologie, kterou aktuálně využíváte, pro vás vhodnější? Podělte se v komentářích pod článkem.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 102

Přehled komentářů

Pepa zdroje
Pepa Chmel S Rails pod Windows není problém ;)
johno Re: S Rails pod Windows není problém ;)
Alois.Janicek Re: S Rails pod Windows není problém ;)
Pepa Chmel Re: S Rails pod Windows není problém ;)
Pepa Re: S Rails pod Windows není problém ;)
Lukáš Burkoň Re: S Rails pod Windows není problém ;)
n0 Re: S Rails pod Windows není problém ;)
Kit Skriptovací jazyk na serveru
Čelo Re: Skriptovací jazyk na serveru
Petr Re: Skriptovací jazyk na serveru
blizz Re: Skriptovací jazyk na serveru
pexxi Re: Skriptovací jazyk na serveru
Pepa Chmel Re: Skriptovací jazyk na serveru
Pepa Chmel Re: Skriptovací jazyk na serveru
alancox Re: Skriptovací jazyk na serveru
martin Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
martin Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
martin Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
krespo Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
martin Re: Skriptovací jazyk na serveru
v6ak Re: Skriptovací jazyk na serveru
jos Re: Skriptovací jazyk na serveru
nyan Re: Skriptovací jazyk na serveru
v6ak Re: Skriptovací jazyk na serveru
xylon Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
xylon Re: Skriptovací jazyk na serveru
v6ak Re: Skriptovací jazyk na serveru
krespo Re: Skriptovací jazyk na serveru
xx Re: Skriptovací jazyk na serveru
v6ak Re: Skriptovací jazyk na serveru
Čelo zdroje
Pepa Re: zdroje
Čelo Re: zdroje
Alois.Janicek Re: zdroje
D Re: zdroje
honza Srovnání s Djangem
vidya Re: Srovnání s Djangem
Martin Soušek Re: Srovnání s Djangem
Mintaka Re: Srovnání s Djangem
Droid Re: Srovnání s Djangem
Honza Kral Re: Srovnání s Djangem
Droid Re: Srovnání s Djangem
Erich CMS - Refinery CMS
BeryCZ web2py
Honza Kral Re: web2py
sputnikone Re: web2py
David Marko Re: web2py
BeryCZ Re: web2py
daevid226 Re: web2py
ZiziTheFirst Groovy (and) Grails
David Marko Re: Play framework
v6ak Re: Play framework
v6ak Re: Play framework
ZiziTheFirst Re: Play framework
v6ak Re: Play framework
martin Re: Play framework
v6ak Re: Play framework
krespo Re: Play framework
Martin Malý Re: Play framework
Opravdový odborník :-) Re: Play framework
martin Re: Play framework
krespo Re: Play framework
martin Re: Play framework
krespo Re: Play framework
karmi Re: Play framework
krespo Re: Play framework
v6ak Re: Play framework
Pepa Re: Groovy (and) Grails
ZiziTheFirst Re: Groovy (and) Grails
vetesnik Pěkné
mamlasek proc?
v6ak Re: proc?
mamlasek Re: proc?
Pepa Re: proc?
Droid Re: proc?
mamlasek Re: proc?
martin Re: proc?
martin Re: proc?
mamlasek Re: proc?
martin Re: proc?
Bruce Re: proc?
Pepa Re: proc?
mamlasek Re: proc?
martin Re: proc?
Bedňa Toto je čo za blivajz
krespo startupy rails asp.net
v6ak Re: startupy rails asp.net
krespo Re: startupy rails asp.net
krespo Re: startupy rails asp.net
v6ak Re: startupy rails asp.net
krespo Re: startupy rails asp.net
v6ak Re: startupy rails asp.net
karmi Re: startupy rails asp.net
v6ak Re: startupy rails asp.net
karmi Re: startupy rails asp.net
Richard Riman Zdroje
Zdroj: https://www.zdrojak.cz/?p=3487