Fiecare companie din piata a implementat strategii de reducere a costurilor, dar nevoia pentru aplicatii de nivel enterprise este in continua crestere. O data cu definirea mai buna a noii paradigme SOA (Service Oriented Architecture) si a conceptului de intreprindere virtuala, rigorile de eficienta cresc din ce in ce mai mult.
Framework-ul Rails pare sa acopere nevoile generate de acest mediu. Iata cateva puncte cheie care il recomanda drept o solutie potrivita:
- Time to market: Excelent. Poti sa creezi foarte rapid un prototip functional, pe care sa-l lansezi pe piata.
- Costuri de dezvoltare: Destul de ridicat. Pentru ca developerii de RoR sunt rari deocamdata. In schimb este nevoie de o echipa mai mica pentru o aplicatie cu aceleasi functionalitati dezvoltata in java de exemplu.
- Costul de mentinere in piata: Foarte mic – in cazul echipelor profesionale de developeri.
- Performante: Aici trebuie avute in vedere mai degraba designul si arhitectura decat tehnologia implicata. Intr-adevar, este nevoie de alternative la Active Record, dar aici se poate interveni cu Java.
- Impactul asupra sistemelor existente: Cu siguranta nu se va renunta la aplicatiile al caror core e construit in Java, dar prin JRuby se poate folosi backendul existent in Java, ceea ce va permite inlocuirea aplicatiilor invechite cu frontend Java.
- Securitate: Buna. Uneori apar probleme de securitate, dar in general se rezolva rapid. Si aici este vorba mai degraba de designul intregului sistem decat de tehnologia implicata.
- Costul instalarii: Este mai ridicat decat in cazul php-ului dar la un nivel similar cu Java.
- Costul schimbarilor: Mult mai mic. Metaprogramming-ul este unul din capabilitatile cele mai importante ale Ruby-ului. Se bazeaza pe proprietatea mostenita din Lisp ca orice functie a unei clase sa fie o variabila ca oricare alta si prin urmare modificabila la runtime. Astfel se pot dezvolta idei foarte interesante de programe care se scriu singure in timp ce ruleaza. Din pacate utilizarea acestui feature necesita un grad mai mare de disciplina pe care acei “coding monkeys” nu prea il au. Imaginati-va cum ar fi sa supraincarce cineva operatorul “=” in timpul executiei unei aplicatii. Acesta este motivul pentru care RoR functioneaza foarte bine in echipe care folosesc TDD (test driven development) si pentru aplicatii de dimensiuni nu foarte mari si unde echipele sunt mici, coezive si profesioniste. Ruby on Rails este in mod special util pentru partea de frontent, fiind foarte usor adaptat dupa cerintele mereu crescande ale departamentului de marketing oferind si flexibilitatea pe care o ofera PHP-ul dar si stabilitatea si separatia in module is respectarea unor design pattern-uri pe care o ofera java.
- Riscuri: Mediu. Riscul general este mai ridicat decat in cazul aplicatiilor java, la toate nivelurile, din moment ce Java este mult mai matur si mai stabil, exista mai multi profesionisti in domeniu si o documentatie mai bogata.
Pe scurt, RoR isi gaseste locul ca un nod de complexitate medie in cloud-ul SOA. Pentru imbunatatirea performantelor se poate folosi compatibilitatea cu aplicatii Java, dar permite, in acelasi timp, reducerea costurilor si oferirea unor raspunsuri rapide la schimbarile din mediul de business.
6 Comments
Leave a CommentPoti sa ne enumeri cateva proiecte la care ai lucrat, care te recomanda a avea competenta necesara pentru a emite astfel de afirmatii ?
O bucata de cod care sa supraincarce operatorul “=” ar fi deasemenea extrem de interesanta de vazut…
Cu toate ca postul nu e tehnic, un exemplu ar fi intr-adevar interesant:
require ‘test/unit’
#avem o clasa normala cu un atribut
class Foo
attr_accessor :bar
end
class TestFoo < Test::Unit::TestCase
def testEqual
f=Foo.new
#aici verificam ca totul functioneaza normal
f.bar=2;
assert 2,f.bar
#aici supraincarcam la runtime operatorul =
f.instance_eval "def bar=(v) ;@bar=v*10; end"
#aici verificam ca operatorul nu mai functioneaza cum ar trebui
f.bar=3;
assert 30,f.bar
end
end
Hostwaylab a dezvoltat in ultimii 3 ani o serie de aplicatii bazate pe ruby si unele pe ruby on rails. Cea mai notabila ar fi formularul de comanda francizabil care e parte a unei mai mare platforme distribuite de billing, provisioning si business control folosita cu succes de cam tot atatia ani pentru tot ce inseamna vanzari pentru brandul principal Hostway dar si pentru altele sub umbrela ei sau cu care Hostway are parteneriate whitelabel, in general telecom din US. Eg: order-sp.hostway.com, order-sp.gate.com, order.domains.verizon.net.
Confunzi din pacate operatorul “=”, care e un construct sintactic al limbajului si nu poate fi supraincarcat in nici un fel, cu sintactic sugar-ul pentru setteri (attr_writer in terminologia ruby). Deci ce ai suprascris tu in acel exemplu e pur si simplu un setter, mai exact metoda “bar=”, nicidecum operatorul “=”. Un exemplu edificator:
# aici, “=” este operatorul limbajului
user = User.first
# aici, “=” face parte din metoda “name=”
# sintactic sugar-ul permite spatii intre “name” si “=”
# va fi apelata metoda “name=” a obiectului user, nici o legatura
# cu operatorul “=”
user.name = “Foobar”
Daca vrei sa fim atat de stricti, un operator nu este un keyword, este o doar notatie. Felul in care este interpretata notatia depinde de context, in cazul nostru de lvalue. Daca lvalue e o variabila sau o constanta atunci i se atribue o referinta la rvalue. Daca lvalue e un atribut a unei clase atunci se apeleaza seterul.
Daca lvalue este o referinta la un array atunci se apeleaza metoda “[]=”.
In orice caz, nu insist asupra acestei chestiuni, scopul paragrafului era de a sustine faptul ca utilizarea metaprogramming-ului este riscanta daca nu e facuta cu cap pentru ca induce rezolvari contra-intuitive si am dat un exemplu. In acelasi timp sustin ca tot metaprogramming-ul, daca e utilizat corect poate rezolva extrem de eficient multe probleme cum sunt DSL-urile interne utilizate de rake sau capistrano.
Oricum, critica mea se vroia constructiva. Ma bucur ca mai sunt si altii care se ocupa cu Rails pe meleaguri mioritice 😉
Si eu ma bucur de interes. Sper sa avem cat mai multa critica. E singurul mod in care putem sa evoluam.
Comments are closed.