Bonjour,

je bosse dans un cabinet d'ingénierie qui développe, décline et affine selon les besoins des clients un ERP écrit en 4D. Ce logiciel gère aussi bien des stocks, que des plannings ou des fichiers clients, dans une architecture client/serveur. Le programme a été conçu de façon modulaire, si bien que lorsqu'un client a besoin de quelque-chose de nouveau on peut l'intégrer dans la structure et si un nouveau client veut quelque-chose de légèrement différent, on peut modifier l'existant et l'intégrer assez facilement.

J'ai rejoint l'entreprise plus tard pour apporter des compétences web pour un client particulier et pour mon entreprise également. Développant dans un classique PHP/Javascript/MySQL, j'ai développé des modules "légers" (consultation depuis internet/intranet sans client 4D etc.) qui s'interfacent via de l'XML aux données 4D. Sur le même principe modulaire, j'ai construit une ossature qui va dans ce sens.

Mon entreprise aimerait progressivement laisser tomber 4D pour autre chose. D'abord parti sur une solution PHP/MySQL classique, on nous a alors conseillé Ruby On Rails et/ou Ruby-tout-court, le défaut majeur de PHP étant apparemment ses problèmes en écriture dans les BDD (??), ainsi que le problème de la connexion non persistante des langages web : en effet, notre ERP gère l'ouverture d'une entrée de la BDD et bloque l'enregistrement ouvert pour les autres tant qu'elle est fermée par le premier (pas d'accès simultané optimiste ou pessimiste à gérer). Dans ma structure, j'ai géré ce problème par une table Verrou et un timestamp.

Bref, passer à Ruby on Rails même avec une base postgesql ne changera rien au problème d'accès concurrentiel à une entrée dans la BDD, si ?

Est-ce que Ruby-tout-court est adapté pour développer des "gros" logiciels ? Des infos que je lis à droite à gauche, je n'ai rien lu qui aille en ce sens. Systématiquement ce que je lis embraye sur RoR ou des interfaces web mais jamais sur quelqu'un qui a développé quelque-chose de conséquent en client/serveur (avec connexion persistante etc.)

Avoir un Ruby en client/serveur et un RoR en client léger serait pratique puisqu'un seul langage à apprendre pour les 2 parties (serveur, client "lourd" pour mes collègues et client léger pour moi), quels sont vos avis dessus ?

Le but est d'avoir une solution ou le minimum de code est a réécrire lorsque l'on reprend/modifie un module existant pour l'intégrer à une nouvelle structure client. Le framework RoR semble aller en ce sens (on ajoute des champs dans une table, ça modifie automatiquement la vue etc.), mais est-ce que Ruby fonctionne de la même manière ?

Quelles autre alternatives voyez-vous à notre situation ?
Java ? Framework PHP ?

Merci d'avance pour vos impressions et vos retours !