Bonsoir,
Je me lance dans un nouveau projet, et j'en suis aux choix techniques à mettre en place. Ce projet si tout se passe bien et que la mayo prend pourrait être d'assez grande envergure.
Le projet comprend une application web et les applis mobile qui vont avec, dans un premier temps ces applis seront surement sous cordova, mais si ça fonctionne correctement on passera certainement en natif purs.
Concernant la technique j'hésite entre plusieurs choses, effectivement, je fais du php mais je n'ai pas encore "vraiment" utilisé de framework (je préférais tout faire moi même...), pour ce projet ce sera indispensable, du coup j'étais parti pour utiliser cakephp, mais la sortie prochaine de la version 3 me refroidi un peu à apprendre maintenant la 2 et devoir tout re-coder pour passer à la 3 rapidement. L'autre choix est symfony, là ce qui me fait peur c'est de vraiment perdre beaucoup de temps à assimiler son fonctionnement, car il doit surement être très bien mais les retours que j'en ai eu sont qu'il n'est quand même pas super accessible.
Et finalement, un 3éme solution me fait de l'oeil c'est carrément partir sous ruby avec ruby on rails...
Il faut savoir que le projet est destiner à être héberger sur un serveur dédier.
Du coup déjà avec ce que je vous ai dit, vous avez des recommandations (avantage/inconvénient) des choix proposer?
L'autre grosse question est sur le sgbd, effectivement jusqu'a aujourd'hui je me suis toujours servi de mysql, mais là, toujours si la mayo prend, il devrait y avoir énormément de flux de données et je regarde un peu du coté des sgbd nosql (principalement cassandra).
Pour essayer d’être plus précis, j'aurais en bdd des centaines de milliers de référence avec chacune, suivant leurs type, différente information (ex: gencode, libeller, marque, allergène, vitamine...), ces références seront classer par famille de produit, et les utilisateurs pourront consulter et faire différentes chose avec ces produits. Pour le nombre d'utilisateur, ces difficile de prévoir, mais je préfère partir sur le faite que sa va intéresser mon public et du coup prévoir une architecture qui supporte une montée en charge plutôt que subir et devoir modifier a la va vite en cas de succès.
De même beaucoup de donnée pourrais être récolté afin d’être analyser et pouvoir être utiliser pour renforcer et faciliter l'expérience utilisateur (sorte de big data).
Voila, j'espere que vous pourrez m'aider a valider mes choix en expliquant pourquoi vous conseillez plutot tel ou tel solution.
p.s Grafikart, toi tu fait comment pour choisir tes solutions technique?
Merci a vous :)
Chaque framework a ses avantages et inconvénients. Pour CakePHP, je le trouve intéressant pour un débutant, car il a une bonne dose d'abstraction, donc l'apprentissage de MVC est assez simple avec ce framework. Par contre, il devient plus contraignant qu'autre chose lorsque l'on sort des sentiers battus. De plus, il utilise une syntaxe différente de la plupart des autres frameworks (tableaux au lieu d'objets).
Symfony est plus long à prendre en main car il faut tout coder à la main, mais il a l'avanatage d'être très générique et souple. Une fois qu'on le maîtrise on se rend compte qu'il est très puissant.
Si tu souhaites un framework hybride, je trouve que laravel est vraiment intéressant. Il est puissant (il réutilise des briques de Symfony) mais reste simple d'utilisation. Le point noir est sa doc, il n'y a pas de cookbook aussi fourni que Symfony ou CakePHP pour ça.
Je ne connais pas Ruby, mais vu que GitHub est sur Ruby on Rails, je pense que tu peux y aller les yeux fermés.
Si tu souhaites partir sur un autre langage, il y a Scala qui est intéressant et dont on va entendre parler dans les prochaines années. Twitter s'y est mis et le prône activement. L'avantage de Scala est de regrouper à la fois la Programmation Objet et la Programmation fonctionnelle, donc ça en fait un langage très puissant. Si tu connais Java, tu peux aller assez facilement sur Scala, car Scala est en quelque sorte une évolution de Java.
Pour la SGBD, une base NoSQL est en effet plus scalable, l'avantage de la NoSQL est de pouvoir utiliser des objets avec des champs différents dans une même collection (collection ~= une table en SQL), NoSQL a bien d'autres avantages mais il serait long de tout citer ici. Il faut être conscient que NoSQL a aussi des inconvénients, un coût de serveur plus important (les hébergeurs ne proposent pas encore une base NoSQL avec un serveur), un apprentissage un peu plus long (moins de tutos donc il faut mettre les mains dans le cambouis), NoSQL est un peu plus lourd et demande plus de RAM sur le serveur qu'un SGBD SQL. NoSQL n'est pas encore super adapté pour le smartphone par exemple. Les coûts d'appels et de traitement des données sont bien plus longs que SQLite par exemple. De plus la librairie va alourdir l'apk final.
Dernière info : Il n'existe pour le moment pas, à ma connaissance, d'ORM permettant de faire une abstraction entre une base de données SQL et NoSQL.
Salut :)
Merci pour ta réponse détailler :)
Pour le nosql je ne savait pas qu'il n'était pas forcement adapter au smartphone, quelle soucis rencontre t'on?
Concernant les frameworks, tu confirme mon interrogation pour cakephp en version 2, laravel par contre je ne sait pas trop pourquoi mais je ne suis pas vraiment attiré (peut etre a tort :s)
D'autre personnes veulent donner leurs avis?