Ruby on Rails: zapomeňte na Javu



Podobné dokumenty
Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Ruby on Rails. VŠE, Jiří Hradil

PA165: Úvod do Java EE. Petr Adámek

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

KIV/PIA 2013 Jan Tichava

Správa linuxového serveru: Zprovoznění Ruby aplikací s RVM, Thin a Nginx

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Systémová administrace portálu Liferay

Server-side technologie pro webové aplikace

Platformy / technologie. Jaroslav Žáček

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

Spring framework 2.0. Roman Pichlík CZJUG

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

(Enterprise) JavaBeans. Lekce 7

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

Architektury informačních systémů

Architektury informačních systémů

Platformy / technologie. Jaroslav Žáček

Travis CI. 8. března InstallFest Travis CI. Miro Hrončok. Co je CI. K čemu CI. Co je potřeba k CI. Co je Travis CI.

SPECIFIKACE PŘEDMĚTU PLNĚNÍ

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

UAI/612 - Cloudová Řešení. Technologie

Databáze II. 1. přednáška. Helena Palovská

Tvorba informačních systémů

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

<Insert Picture Here> Vývoj portálových řešení v Javě

Jak testovat software v praxi. aneb šetříme svůj vlastní čas

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Bakalářské. Vzdělání: Telefon: Ostrava. Bydliště: Ukázky práce: Správa a monitoring platformy provozované na AWS

Další vlastnosti Springu Moduly Springu. Spring Framework. Pavel Mička. Pavel Mička Spring Framework 1/18

Elektronická podpora výuky předmětu Komprese dat

Úvod do Groovy pro Java experty

Databázové a informační systémy

Nástroje pro průběžnou integraci a testování

Využití JBoss Fuse ve skandinávské energetice

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Stěhování aplikací. Michal Tomek, Sales Manager

Architektury Informačních systémů. Jaroslav Žáček

MBI - technologická realizace modelu

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Nové jazykové brány do Caché. Daniel Kutáč

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Monitoring kritických systémů - Case study. Tomáš Hrubý, AutoCont CZ tomas.hruby@autocont.cz

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: AVTK. Úvod. strana 1

Microsoft Azure Workshop

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Technologie Java. Jaroslav Žáček

Spring Framework Handout

Domino 10 nové komponenty a související témata (node.js, ES )

Vybraná zajímavá Lotus Notes řešení použitelná i ve vašich aplikacích. David Marko TCL DigiTrade

Web frameworks v praxi

Úvod do Entity Frameworku

X33EJA Enterprise Java

IS pro podporu BOZP na FIT ČVUT

Evoluce deploye Od FTP po automatický deploy

Úvod do problematiky vývoje Vývoj informačních systémů

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Vývoj software pro Linuxové distribuce. Installfest Praha,

Webové programování a Open Source. Open-source. Liberix o.p.s

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

Korporátní identita - nejcennější aktivum

JavaScript 101. "Trocha života do statických stránek"

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Gradle.

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Přizpůsobení JSTL pro Google App Engine Datastore

Ročníkový projekt. Jaroslav Žáček

JAVA EE ORGANIZÉR - SOFTWAROVÁ ARCHITEKTURA

LINUX - INSTALACE & KONFIGURACE

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Instalace a konfigurace web serveru. WA1 Martin Klíma

Databáze EMS podacích lístků

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Architektura softwarových systémů

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Multiplatformní osobní organizér v jazyce Java

Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko

O NÁS. Specializujeme se na návrh a vývoj v následujících oblastech:

Tvorba informačních systémů

X36ASS Dokumentace projektu. Firemní helpdesk se správou požadavků. Bc. Ondřej Brynda Bc. Petr Hůla

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Novinky ve Visual Studio Tomáš Kroupa

RUP - Disciplíny. Jaroslav Žáček jaroslav.zacek@osu.cz

Acronis. Lukáš Valenta

Tvorba informačních systémů

Transkript:

Ruby on Rails: zapomeňte na Javu Jiří Hradil Kyberie s.r.o. jirka@hradil.cz 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 RECIPIENTS=vyvojari@domena.xyz 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