Ruby on Rails: zapomeňte na Javu

Transkript

Ruby on Rails: zapomeňte na Javu
Ruby on Rails: zapomeňte na Javu
Jiří Hradil
Kyberie s.r.o.
[email protected]
http://www.hradil.cz
28.2.2011, CZJUG, Praha
`
Java sága, persistence I.
●
Kyberie, rok 2004
●
Cíl: persistence pro Java webové aplikace
●
JDBC – zřejmě by stačil, tlak zvenčí
●
Hibernate, prototyp, složité v porovnání s PHP
●
●
●
Zahozeno Hibernate, chceme víc „standard“,
chyba
EJB 2.1, EJB 3.0, aplikační kontejnery,
deployment, XML, zvrat ve složitosti
Stále probíhá interní výzkum
2
Java sága, persistence II.
●
Anotace v EJB 3.0, další vrstva složitosti
●
Aplikační kontejnery:
●
●
●
●
JBoss – extrémně složitý
Glassfish – grafické klikátko, hezké, první verze
nestabilní
Rozdíly v deploymentu, nedostatek zkušeností
Návrat k „jednoduššímu“ ORM, Toplink,
Hibernate, JPA
●
2 roky ztracené objevováním „standardů“
●
Výsledek - zavržení EJB, složité
3
Java sága, prezentační vrstva I.
●
●
●
●
●
●
JSP – nejblíže PHP, jednoduché
JSTL – knihovny tagů – standardní tagy Sunu,
vlastní tagy přidaly složitost
JSF – naprostá katastrofa, zkušenosti s HTML
k ničemu
JSF – konfigurace akcí přes XML
JSF 1.0 a 1.1 – vlastní tagy – prakticky
nemožné
„Standard“ zklamal
4
Java sága, prezentační vrstva II.
●
Pokus o odlehčení
●
Stripes – super, lze se je naučit za 1 den
●
Stripes - několik chyb, malá komunita (pomalé
či žádné odpovědi), neměli jsme odvahu v tom
dělat projekt v řádu desítek mil.
●
Apache Wicket – nejlepší web framework
●
Apache Wicket - viz moje přednáška na CZJUG
5
Java sága, špagety I.
●
●
Jak spojit vše dohromady?
Spring – nutno vybrat si, co vlastně
potřebujeme
●
Další závislosti
●
Spring transakce – složité, vzpomínání na EJB
●
Základ funguje, ale drahé debugování
●
Ovládnutí jen Springu = několik měsíců
6
Java sága, špagety II.
●
●
●
Logování
●
Java Logger
●
log4j
●
slf4j
Sestavení
●
Apache Ant – těžké, xml
●
Maven – asi nejlepší, opět stupidní xml
Ostatní
●
relační db, testování, nepřetržitá integrace
7
Java sága, shrnutí
●
●
Finální kombinace
●
Hibernate Entity Manager 3.4.0.GA - persistence
●
Hibernate Search 3.1.0.GA – fulltext
●
Apache Maven 2.0.9 – project management
●
Apache Wicket 1.3.5 – prezentační vrstva
●
Spring 2.5.5 – lepidlo
●
PostgreSQL 8.2-relační databáze
Ovládnutí = 1 rok studia, pokud existuje
leadership = hrubá investice asi 500 tis. na
hlavu, nepočítám náklady ušlé příležitosti
8
Požadavky na sw vývoj?
●
Rychlé uvedení na trh, v řádu dnů až týdnů
●
Zmenšit bariéry vstupu na trh
●
●
●
Minimum školení, nový programátor musí být
efektivní ASAP
Agilní vývoj
●
nelze předvídat budoucnost, externí faktory
●
udržet se naživu = být rychlý a efektivní
●
okamžitá reakce, nepřetržitý deployment
Java pro web je pro agilní vývoj nevhodná
9
Osvícení, Ruby on Rails
●
http://rubyonrails.org/
●
„tvorba webu, která nebolí“
●
web framework, MVC
●
Komplet infrastruktura
10
Používané verze
●
Ruby 1.8.7
●
Rails 2.3.11 (aktuální je 3.0.4)
●
3.x dále zjednodušuje, viz CZ Podcast 45
●
PostgreSQL 8.4.4
11
Rails
●
Nástroj pro psaní web aplikací
●
Balíček (gem) instalovaný nad Ruby
●
Komplet instalace a spuštění:
●
gem install rails
●
rails projekt
●
cd projekt
●
./script/server
●
http://localhost:3000
12
Proč RoR? Ruby
●
Objektový jazyk – vše je objekt, neexistují
primitivní typy
●
Dynamické datové typy, duck typing
●
Interpretovaný (nekompilujeme)
●
Otevřený – open classes - ideální pro DSL,
např. bez problémů můžeme přímo do String
přidat vlastní metodu nebo přepsat stávající
●
Zaměřeno na lidi, nikoli na rychlost
●
Cílem je psát jednoduchý a čitelný kód
13
Proč RoR? Rake
●
Task management tool
●
Ruby syntaxe
●
Obdoba make nebo ant
●
Obsluha databáze, spuštění testů, generace
dokumentace, logy, cache, možnost napsat
vlastní úlohy
14
Proč RoR? Migrace
●
Verzovaný přechod databáze od jednoho stavu
ke druhému
●
Stav databáze má svůj timestamp
●
Jdeme dopředu a dozadu
●
Nejen změna schématu, lze měnit i data
15
Proč RoR? Scaffolding
●
„Lešení“
●
Ideální prototypování
●
●
●
Napíšu název třídy, atributy, typ a vše se
vygeneruje
./script/generate scaffold contact name:string
note:text
Vytvoří MVC, testy, migrace
16
Proč RoR? Active Record
●
ORM v Rails
●
Convention over Configuration
●
Zná názvy tabulek, názvy atributů, datové typy
●
●
●
Odpadá dvojí deklarace jako v JPA či Hibernate
(jednou ve třídě, podruhé v DB)
Dynamické findery
Viz Active Record je nejlepší ORM na
www.hradil.org
17
Ukázka
●
Vytvoření projektu
●
Scaffold, CRUD
●
Migrace tam a zpět
●
MVC, REST
●
Console
●
Active Record, dynamické findery
●
3 prostředí, 3 databáze, database.yml
●
3 druhy testů, unit, funcionals, integration
●
Fixtures, yaml
18
Deploy
●
●
●
●
Capistrano
Na všech serverech v clusteru je stejný uživatel
a stejná struktura
Capistrano při deploy zkopíruje scripty na
všechny servery najednou a udělá restart
Umí vzdáleně spouštět cokoli (migrace,
nastartovat jiné servery, poslat mail, dát stránku
o nedostupnosti, apod.)
●
Tasky v Ruby
●
cap aplikace deploy
19
Škálování
●
Jednoduché, rychlé, funguje
●
Share nothing, servery o sobě nevědí
●
Před servery dát balancer (apache, nginx)
●
Sessions ukládat do databáze (rails default)
●
●
●
Sdílení logů řešit před linux nástroje (rsyslog),
jdou pak na 1 server
Jediné slabé místo jsou relační databáze, trend
jde k nosql databázím (mongodb, riak)
Lze používat memcached, do db sahat jen při
zápisu
20
Phusion Passenger
●
http://www.modrails.com/
●
Zadara, lze koupit support či „enterprise ruby“
●
Modul pro Apache a nginx
●
Nulová údržba
●
Pokud rails aplikace spadne, web server stále
běží, při dalším requestu restart
●
Deploy = upload aplikace do web rootu
●
Ideální spojení s Capistrano
●
Doporučeno autory Ruby on Rails
21
Nepřetržitá integrace, Cerberus
●
http://cerberus.rubyforge.org/
●
Lehký, žádné GUI, textový výstup
●
Git, svn, perforce, mercurial, atd.
●
●
cerberus add (DIR|SVN_URL)
APPLICATION_NAME=aplikace
[email protected]
cerberus build aplikace
22
Hosting
●
Heroku, http://heroku.com/
●
Engine Yard, http://www.engineyard.com/
23
Mýty a legendy
●
Ruby je pomalé
●
Není staticky typované = více chyb
●
RoR není dost „enterprise“
●
Nemá support velkých firem
●
Nikdy jsem o tom neslyšel, takže to nefunguje
●
Jednobarevný svět
24
Otázky a odpovědi
?
25

Podobné dokumenty

Kerio Workspace

Kerio Workspace 2.7 Webová rozhraní programu K programu Kerio Workspace lze přistupovat jako: uživatel https://jmeno.serveru administrátor https://jmeno.serveru/admin Porty: • Kerio Workspace běží na standardníc...

Více

Radek Hnilica Radek Hnilica

Radek Hnilica Radek Hnilica Tato „kniha“ je v jistém ohledu mým pracovním sešitem o Ruby. Pokud mám čas, zapisuji sem poznatky které jsem získal při práci s Ruby a Ruby on Rails. Nejsem profesionální „písmák“, a tak to míst...

Více

New England Biolabs ceník 2016

New England Biolabs ceník 2016 T7 Express Competent E. coli (High Efficiency) 24 transformation reactions (6 tubes) dam-/dcm- Competent E. coli - 20 transformation reactions dam-/dcm- Competent E.coli - 24 transformation reactio...

Více

Ruby On Rails = + Ruby + Rails Jan Strnádek

Ruby On Rails = + Ruby + Rails Jan Strnádek Nástroj pro řízení vývoje projektu či celé společnosti

Více

Serverové skriptovací technologie

Serverové skriptovací technologie CGI skripty ............................................................................ 11 Rozhraní CGI ...................................................................... 12 Předávání parametr...

Více

List1 Stránka 1 - First

List1 Stránka 1 - First List1 Upozornění: tento seznam není úplný! Celý seznam na http://www.seznamkatalogu.cz (nejúplnější seznam CZ katalogů, podle něho registrujeme)

Více

lukas_krecan_spring

lukas_krecan_spring Jak nám pomůže Spring?

Více

Trixie Target Stick

Trixie Target Stick 1.krok: Vaše zvíře se musí naučit dotknout se Target Sticku v základní pozici. K tomu držte Target Stick před Vámi ve směru čumáčku Vašeho psa. Klikněte pokud se Váš pes Target Sticku dotkne. Toto ...

Více