úterý 11. září 2007

CZ podcast volume #15 a doplnění kritického pohledu

Tento příspěvek je doplněním CZ podcast volume #15 ve smyslu kritického pohledu na framework Ruby on Rails.

Sám jsem fanoušek RoR, ale dle mého názoru neuškodí trocha kritiky na framework, který má v podstatě jen kladné reference marketinkové povahy. Takže zde je několik postřehů z praxe...

Technologická oblast:
  1. Single threaded - RoR není thread safe, takže synchronizace je zajištěna synchronizovaným blokem v metodě Dispatcher.dispatch, která deleguje příchozí HTTP request na konkrétní kontroler. To je důvodem, proč se pro zajištění výkonostních požadavků typicky rozbíhá několik serverů Mongrel ve spojení s reverzním proxy serverem a load balancerem, např. Apache. Škálovatelnost v oblasti konkurenčních přístupů na systém se tak nezajišťuje na úrovni threadů, jako ve světě Javy, ale na úrovni procesů.
  2. Distribuované transakce - nejsou, tzn. žádná transakce pres dva databázové stroje, přes databázi a MOM (Message Oriented Middleware) nebo přes několik systémů s JCA adaptérem...
  3. SQL Prepared Statements - v současné době nelze (i když existuje plugin, který se snad stane součástí jádra RoR). To má dva neblahé důsledky. Za prvé to uzavírá cestu, která elegantně chrání systém před SQL injekcemi. A za druhé opět výkonost. Každý SQL výraz se musí na straně serveru opět parsovat.
  4. ActiveRecord a SQL neefektivita - ActiveRecord odstíní vývojáře od samotného SQL a tím vede vývojáře k produkci kódu, který je z pohledu SQL vysoce neefektivní. S tím lze bojovat, a RoR k tomu nabízí prostředky, ale pak už to není ta krásná a jednoduchá aplikace z prvních stránek knížek o RoR.
  5. Composite primary keys - není podporován. Osobně považuji surrogate key za dobrý postup, ale stěží aplikovatelný na již existující relační schéma, nad kterým se má postavit systém.
  6. MOM rozhraní - neexistuje žádné rozhraní na MOM jako JMS ve světě Javy. To je nedostatek pro tak důležitou integrační technologii, jakou jsou messaging systémy.
  7. Database Connection Pool - samozřejmě existuje :) ale nedosahuje takových konfiguračních kvalit jako existující CP ze světa Javy.
Politická oblast:
  1. Neexistuje žádný veliký hráč ve světě ICT, který by se k RoR hlásil. Tím pádem nemají RoR masivní podporu, kterou by nová enterprise tehnologie potřebovala.
  2. Nedostatečné prostředky pro integraci s existujícími složkami enterprice systémů, jako jsou messagingové systémy nebo doménové řadiče a LDAP.
  3. Další technologie ve světě enterprise vývojových platforem.
  4. Málo specialistů na postavení stabilního vývojového týmu.

1 komentář:

Roman Pichlík řekl(a)...

Myslis si, ze RoR se chce vydat cestou, kdy bude dablovat enterprise vlastnosti Javy? Podle meho by byl tak trochu sam proti sobe, protoze to co bylo povazovano za vrchol jednoduchostu by najednou bylo komplexni a tezkopadne.