IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Actualités Discussion :

Facebook délaisse le modèle MVC au profit de son propre modèle Flux,

  1. #1
    Expert éminent sénior

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2011
    Messages : 283
    Points : 18 071
    Points
    18 071
    Par défaut Facebook délaisse le modèle MVC au profit de son propre modèle Flux,
    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

    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 ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    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

  3. #3
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut Meilleur solution
    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.

  4. #4
    Membre à l'essai
    Profil pro
    CTO
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Togo

    Informations professionnelles :
    Activité : CTO

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Points : 13
    Points
    13
    Par défaut
    Intéressante approche , à expérimenter.
    Après Je verrai si je l’adopte ou pas .

  5. #5
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    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...
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  6. #6
    Nouveau Candidat au Club

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Afghanistan

    Informations forums :
    Inscription : Juin 2003
    Messages : 452
    Points : 0
    Points
    0
    Billets dans le blog
    1
    Par défaut
    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..

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    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.
    One Web to rule them all

  8. #8
    Membre éprouvé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Points : 1 253
    Points
    1 253
    Par défaut
    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 !
    Si , et la ont échoué mais pas nous, pensez à dire et cliquez sur . Merci !

    Ici, c'est un forum, pas une foire. Il y a de respectables règles... à respecter !

  9. #9
    Membre confirmé Avatar de steel-finger
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 180
    Points : 530
    Points
    530
    Par défaut
    C'est une approche très intéressante, qui est à testé

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Points : 44
    Points
    44
    Par défaut
    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)

  11. #11
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    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.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  12. #12
    Membre averti
    Homme Profil pro
    Expert MDE
    Inscrit en
    Janvier 2008
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 183
    Points : 337
    Points
    337
    Par défaut
    Il ne se sont pas trop foulés, il ont réinventés struts 1 ... Congrats!

  13. #13
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    quelle différence entre MVC et ce modèle FLUX ?

    Parce que le schéma donné pour MVC est gentil mais les liens Vue --> Modèle, beaucoup sont du code. Souvent un événement sur un objet 'vue' appelle plus ou moins directement une méthode d'un objet 'modèle', ces méthodes peuvent être assez complexes et donc on ajoute un objet qui fait le lien Vue --> Modèle, ce qui est exactement le schéma FLUX mais avec des liens multiples (de toute façon c'est forcément des liens multiples, même si dans beaucoup de cas avec l'héritage on peut rendre ça un peu moins fouillis).

    Sans parler du fait que beaucoup d'objets modèle quand on code en MVC sont en fait des objets qui gèrent des liens compliqués Vue->Modèle, ces objets peuvent donc être facilement déplacés dans la catégorie Action.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 70
    Points
    70
    Par défaut
    Le modèle qui va le mieux je trouve pour les applications web.

    [ Data ] -> [ Controller ]-> [ API, Auth ] -> [ Cache / Refresh ] -> [ View ]
    \---- [ Listener, Event dispatcher ] ------------/

    J'expose mes données au travers d'une API, tout passe par l'API.

    J'écoute les modifications que je transmet au travers d'un "event listener". Exemple: Dit-moi si l'utilisateur lambda a été modifié.

    [Cache et View] se trouve au niveau de l'applicatif. Je prend les données du cache, et derrière (si besoin) je vais lancer un refresh.

    Mes données ont un seul identifiant global. De plus elles ont une date d'expiration.

    Ce qui justifie ce modèle:
    Parfois je veux la dernière version d'une donnée. Exemple mon panier d'achat!
    Parfois une version qui a quelques heures est suffisante. Exemple la description de profile d'un ami. Le DNS d'un site.
    Parfois je veux "pousser" de l'information au client. Exemple: votre document exel a été mis à jour. Pour simplifier simplement pousser l'identifiant (unique) qui a été changé suffit

    C'est assez efficace.

    Le traditionnel MVC ne marche pas sur le net pour les nouvelles applications! La "view" étant au niveau du client, le model et le controller au niveau du serveur.
    Et surtout on a différentes "views"! Une application mobile, une application web, un service externe.

    De plus on a souvent plusieurs sources de données. Intégrer Facebook est un exemple.

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur Java / JEE / JavaScript
    Inscrit en
    Juillet 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java / JEE / JavaScript
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 36
    Points : 73
    Points
    73
    Par défaut
    Personnellement je ne vois pas en quoi Facebook délaisse le modèle MVC, je dirai plutôt qu'il l'applique comme il le devrait :
    - Avant : le model échange avec la vue, pour moi il y a une couche entre les 2 et pas à côté
    - Après : View -> Action / Dispatcher -> Store, on dirait du MVC LOL

  16. #16
    Membre confirmé
    Avatar de tse_jc
    Homme Profil pro
    Data Solutions
    Inscrit en
    Août 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Data Solutions
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 287
    Points : 597
    Points
    597
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    Leur diagramme initial sur la structure MVC ressemble plus à du MVVM qu'à du MVC, MVC dans lequel normalement la vue n'est pas censée communiquer directement avec le modèle, sans parler que le bloc action à gauche est censé être issu de la vue. Leur modèle Flux ressemble plus pour moi à ce qui est fait chez nous, à savoir, comme j'aime à le qualifier du MVC-OVP c'est à dire du MVC Orienté Vertical Process. Par rapport à ça, je rejoinds assez les conclusions portées par rawsrc.

    A gabriel.klein: concernan la meilleure architecture web, tout dépends si on pilote les données au niveau SGBDR ou au niveau Serveur Tiers. Il faudrait aussi tenir compte des conclusions de la maîtrise d'ouvrage d'une appli, pour pouvoir en juger. De plus, et en général, il est plus sage et perenne de piloter les données au niveau SGBDR.

    Parfois je veux "pousser" de l'information au client. Exemple: votre document exel a été mis à jour. Pour simplifier simplement pousser l'identifiant (unique) qui a été changé suffit
    Je préfère personnellement la notification asynchrone (ex mail) comme le fait par exemple ce forum lorsque l'on suit une discussion et que quelqu'un en a modifié le contenu. Sinon le client en est informé lorsqu'il accède à la ressource par défaut. C'est aussi pertinent et performant, cela à le mérite aussi de laisser la main au client pour choisir s'il souhaite en être averti lorsqu'il ne travaille pas dessus, et donc de ne pas monopoliser des ressources inutilement, dans le sens où cela peut parfois être mal perçu, sauf si c'est une exigence applicative bien entendu.

    Cordialement,

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    j'vais encore faire mon vieux croûlant mais bon, c'est un peu ce que je dis dans ces colonnes depuis 2007...

    D'un seul coup ça a été la religion... Alors que les clients/serveurs, les grappes, etc, ça faisait belle lurette que ça exitait..

    Là on a appliqué ça partout, sans discernement... Bref, bien évidemment que c'est limité... Faut pas être un super-héro pour comprendre ça..

    Mais il parait que le bon sens se perd mon brave monsieur.. Ben en fait, au bout de X années, il revient
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [WD-2007] Créer son propre Modèle ?
    Par Kirikiri2007 dans le forum Word
    Réponses: 1
    Dernier message: 03/07/2010, 16h53
  2. [MVC] Intégration de silverlight dans un modéle MVC
    Par Nivouze dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/09/2009, 08h51
  3. jsf et le modèle MVC
    Par mjihanne dans le forum JSF
    Réponses: 11
    Dernier message: 21/03/2008, 13h01
  4. [Architecture] Comment s'approcher du modèle mvc ?
    Par nikalkal dans le forum EDI/Outils
    Réponses: 4
    Dernier message: 21/06/2006, 17h46
  5. Architecture J2EE et modèle MVC
    Par alexd dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 23/02/2005, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo