Un meilleur job mieux payé ?

Deviens chef de projet, développeur, ingénieur, informaticien

Mets à jour ton profil pro

ça m'intéresse

Facebook délaisse le modèle MVC au profit de son propre modèle Flux
Car MVC ne permettrait plus un passage à l'échelle suffisant

Le , par Arsene Newman, Expert éminent sénior
Facebook, le réseau social qui compte pas moins d’un milliard de comptes actifs, vient d’annoncer son passage au nouveau modèle de programmation Flux développé par ses soins, délaissant par la même occasion le modèle MVC, ce dernier n’étant plus adapté aux besoins du réseau social et de l’immense quantité de données transitant à travers lui.

En effet, durant la conférence des développeurs Facebook (F8), la session « Hacker Way : Rethinking Web App Development at Facebook » a traité la problématique du modèle le plus adapté à Facebook, Tom Occhino, ingénieur chez Facebook, a alors déclaré que « MVC est devenu compliqué très rapidement ». Il a conclu par la même occasion que MVC ne leur permettait plus un passage à l’échelle conséquent vu leur importante base de données.


Il a donné d’autres détails sur le cheminement de cette décision et a expliqué que la complexité du modèle se faisait ressentir à chaque introduction d’une nouvelle fonctionnalité, le code était devenu fragile, dès lors cette situation est devenue problématique et les ingénieurs craignaient de plus en plus de comportements hasardeux de l’ensemble.

Ainsi, l’une des solutions qui ont été retenues par les ingénieurs est l’utilisation du nouveau modèle Flux qui est caractérisé par un flux de données unidirectionnel. Ce dernier a été conçu autour du framework Javascript React qui est utilisé par Facebook pour construire des UI web prédictibles et déclaratives.

Jin Chen, ingénieur logiciel chez Facebook, a expliqué de son côté que le modèle Flux doit être vu comme un modèle unidirectionnel (pas de communication bidirectionnelle entre les entités du modèle) composé de trois entités : Dispatcher, Store et View.


Le store contient toutes les données d’une application, le dispatcher (correspondant au Controller de MVC) se charge d’accepter ou de refuser des mises à jour à appliquer au Store suite au déclenchement d’une action, ainsi il peut bloquer le déclenchement de certaines actions pour ne pas perturber l’état du Store ou encore décider de l’ordre d’exécutions des actions. Quant au View, il se met à jour lorsque le Store change et peut éventuellement lancer une action, ce qui lui permet d’interagir indirectement avec le store.

Ce modèle permet donc de simplifier la maintenance et le debug des applications pour les nouveaux développeurs et se montre particulièrement intéressant pour contenir les actions qui peuvent avoir des effets de bords aux conséquences inattendues. En outre, il a permis à Facebook de corriger un bug de son application de chat.


Source : facebook.github.io

Et vous ?

Que pensez-vous du nouveau modèle Flux ?

Pensez-vous que le MVC ne soit pas le plus adapté pour le passage à l’échelle ? Pourquoi ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de rawsrc rawsrc - Modérateur http://www.developpez.com
le 19/05/2014 à 10:05
J'ai écouté entièrement le topo et je dois dire que c'est une approche technologique très intéressante.
Je pense quand même qu'il faille derrière du lourd question serveurs.

Quelques points :
- diminution drastique de l'abstraction
- focus sur les fonctionnalités et beaucoup moins sur leur implémentation technique au sein d'un existant
- architecture ouverte et évolutive par défaut (y a qu'à regarder la convergence de tous les services FB vers un seul et unique modèle de codage : React)
- Au temps 40:30, ils enterrent clairement AngularJS
- Se positionnent comme les successeurs naturels de jQuery

Si on rajoute à ceci ce que Facebook fait autour du PHP, ils vont finir à terme par proposer un environnement de développement complet couplé à un environnement technique de très haute performance et tout ça en open-source.

En un seul mot : impressionnant.

C'est des p'tits jeunes qui n'en veulent
Avatar de super_navide super_navide - Provisoirement toléré http://www.developpez.com
le 19/05/2014 à 13:20
Je pense la meilleur solution est quand même le MVC mais structuré de la façon suivante :
d'un coté VC et de l'autre M.
Ensuite on décline avec les technos suivantes pour le VC (Vue controleur ) on utilise du javascript , du HTML et des CSS fournit par un serveur HTTP simple pas de génération de page comme JSP GSP ASP PHP
De l'autre un serveur de service attaqué par des services au format HTTP via AJAX coté navigate.
On modélise les services métier en premier puis l'interface utilisateur.
Avatar de thebronx thebronx - Membre à l'essai http://www.developpez.com
le 19/05/2014 à 13:24
Intéressante approche , à expérimenter.
Après Je verrai si je l’adopte ou pas .
Avatar de leminipouce leminipouce - Membre éprouvé http://www.developpez.com
le 19/05/2014 à 15:24
Citation Envoyé par rawsrc  Voir le message
- Au temps 40:30, ils enterrent clairement AngularJS

Enterrer AngularJS de Google quand on s'appelle FB... presque normal

Citation Envoyé par super_navide  Voir le message
Je pense la meilleur solution est quand même le MVC...

Meilleure solution pour quoi ? Pour tout ? Une solution pour les gouverner tous et dans les ténêbres... Oh pardon, je m'égare.

Même si je n'ai que 10 ans d'expérience, je n'ai encore jamais vu une solution unique, un langage unique, une architecture unique etc... qui surplante tous les autres sans exception et qui réponde universellement à tous les besoins...

J'ai comme envie de dire que chez FB ils n'embauchent pas que des brêles et que dans le tas il doit bien y en avoir 1 ou 2 qui a réussi à réfléchir à la solution la plus adaptée à leurs besoins, avec les moyens actuels...
Avatar de super_navide super_navide - Provisoirement toléré http://www.developpez.com
le 19/05/2014 à 15:37
Je pense quand même pour les IHMs (hors jeux videos en 3D et encore il y a des démos WEBGL bleufante qui laisse penser que les jeux web on un bel avenir ) le mieux
est HTML5-JAVASCRIPT et CSS apres pour créer des services appelé en AJAX de puis le client il n'y a pas de langage unique tous dépend de l'existant , des besoins de performance etc..
Avatar de SylvainPV SylvainPV - Rédacteur/Modérateur http://www.developpez.com
le 19/05/2014 à 15:47
J'aime beaucoup les diagrammes qui font croire que tout est plus simple en retirant les noeuds On passe de 7 vues à une seule, et on cache toute la complexité des règles métiers et gestion de droits dans la case "Store" qui devient le point de concentration de cette organisation.

Facebook paie une petite fortune une armée d'ingénieurs tous très jeunes et talentueux pour réinventer la roue, en mieux bien sûr. Certaines de leurs idées sont réellement novatrices et intéressantes à creuser, notamment sur React, mais du reste c'est énormément de com et d'étalage technologique pour attirer les développeurs (et là clairement, on sent l'effet de concurrence avec Google). Une communication unidirectionnelle et un dispatcher, ce n'est pas sans rappeler toutes les solutions existantes orientées autour de la prog évènementielle. J'y vois surtout une grosse couche de refactoring bien préparé, comme doit y passer n'importe quel service Web ayant subi des évolutions incrémentales depuis des années.
Avatar de leminipouce leminipouce - Membre éprouvé http://www.developpez.com
le 19/05/2014 à 16:15
Citation Envoyé par super_navide  Voir le message
Je pense quand même pour les IHMs le mieux est HTML5-JAVASCRIPT et CSS ...

C'est pas un modèle de développement ça, ce sont des langages !
Avatar de steel-finger steel-finger - Membre habitué http://www.developpez.com
le 20/05/2014 à 5:33
C'est une approche très intéressante, qui est à testé
Avatar de Yoann29 Yoann29 - Membre du Club http://www.developpez.com
le 20/05/2014 à 10:17
Avec de beaux slides, leur approche semble implacable ! Pourtant à y regarder de plus près, en se basant sur un dispatcher,
leur modèle semble davantage tendre vers un autre modèle du GOF : le pattern observer.

Les technologies employées présentent tout de même une approche très intéressante, mais cela s'apparente davantage à une opération de communication
vantant les mérites de leurs framework maison (un peu comme thrift pour les webservices)
Avatar de r0d r0d - Expert éminent http://www.developpez.com
le 20/05/2014 à 11:44
Citation Envoyé par SylvainPV  Voir le message
Facebook paie une petite fortune une armée d'ingénieurs tous très jeunes et talentueux pour réinventer la roue

Peut-être, mais je suis d'accord avec eux que le modèle MVC a ses limites, et qu'il serait intéressant de réfléchir à d'autres modèles. J'ai déjà eu l'occasion d'en parler sur le forum C++, et la façon dont mes remarques ont été reçues m'ont rappelé à quel point il est difficile de s'attaquer de front à une doxa bien établie. MVC est tellement présent partout que c'en est devenu un dogme. Tous les frameworks se basent sur MVC (de .Net à Qt en passant par Swing, etc, etc, ça devient une religion, je n'aime pas trop ça.
Offres d'emploi IT
Analyste support informatique (h/f)
CTS Consulting - Ile de France - Élancourt (78990)
Programmeurs/développeurs iOS H/F
Peace - Autre - Osaka
Ingénieur sécurité infrastructures (H/F)
Atos - Ile de France - Les Clayes-sous-Bois (78340)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil