Développement web en 2018 : serveur ou client ?

Développement Web : Client ou Serveur ?

Le développement Web connaît des révolutions successives depuis la création d'Internet principalement dues à de nouveaux usages offerts par des plateformes innovantes qui exploitent les dernières technologies disponibles. Depuis les années 2000, la part des développements réalisés côté client et côté serveur penche toujours pour l'un ou pour l'autre de manière cyclique. Nous avons réalisé ce comparatif des frameworks en vue de comprendre cette évolution pour pouvoir se projeter dans les années à venir et faire les bons choix technologiques.

Suggestion de logiciels pour vous

Django

Django
Framework Python préféré des DevOps
Décrire votre besoin métier
Voir ce logiciel

Évolution des développements clients-serveurs au fil des années

  1. Avant 2000 : Web 1.0. Les ordinateurs personnels sont peu puissants et les usages sont principalement constitués de lecture de pages HTML et de communications par emails et Chat. Les développements sont principalement effectués côté serveur.
    Usages : lecture, navigation et emails
    Sites : Yahoo, Lycos, Hotmail, Caramail
  2. 2000 - 2010 : Web 2.0. Les terminaux fixes et mobiles montent en puissance. Les navigateurs Web sont capables d'exécuter des applications SaaS avec un haut niveau d'interactivité. C'est le développement des frameworks JavaScript côté client.
    Usages : discussions instantanées, visio-conférence, mobilité, partage de photos et vidéos, logiciels en ligne
    Sites : Facebook, Twitter, Salesforce, Airbnb
  3. 2010 - 2020 : Web 2.0 enrichi : L'immense collecte de données des utilisateurs d'applications Web donne lieu à un retraitement massif de ces données afin d'alimenter des algorithmes. La puissance de calcul nécessaire à ce retraitement ne peut être possible que côté serveur.
    Usages : Retargeting publicitaire, recommandation de produits, assistance, recherche vocale
    Plateformes : Criteo, Amazon, Google Home, Siri

Qu'en est-il des années après 2020 ? Il semblerait que nous nous dirigions vers le Web 3.0 ou Web intelligent. Grâce à la masse de données collectées depuis les terminaux classiques ainsi que les objets connectés, nous rentrons dans l’ère de l’assistance : on ne cherche plus, on se fait recommander toute sorte de produits et de services. Plus concrètement les services Web seront bientôt en mesure de nous recommander des choses auxquelles nous ne penserions pas et de nous assister comme le ferait un humain ayant une grande connaissance.. sur tous les sujets. De ce point de vue, le traitement des informations côté serveur est immense. Le front (client) garde son rôle actuel de capture et de restitution d'informations.

Le rôle des Frameworks de développement dans la construction du Web

Étant donné l'étendue des développements à effectuer pour concevoir une application Web moderne, un framework est indispensable.

Framework : définition

Un framework est un cadre qui permet de structurer le travail des développeurs grâce à un ensemble d'outils, une structure et des modèles prêts-à-l'emploi. Il existe des frameworks de développement pour tout : création de sites e-commerce, d'application mobile, d'application Web (SaaS), etc.

Meilleurs Frameworks de développement Web 2017

  • Django : Django est un framework Backend Open Source développé en Python. Il a été spécialement créé pour réaliser des sites Web puissants et de haut niveau. Voici quelques sites réalisés avec le framework Django. Exemples de sites utilisateurs :
    • liberation.fr
    • instagram.com
    • openstack.org
    • mozilla.org
  • AngularJs : AngularJs est un framework Open Source développé par Google en JavaScript. Il offre un haut niveau d'interactivité particulièrement apprécié en développement Front End des applications Web (SaaS, comparateurs, plateformes interactives). Exemples de sites utilisateurs :
    • netflix.com
    • upwork.com
    • Youtube sur PS3
    • weather.com
  • React : React est créé et maintenu par Facebook. React n'est pas un framework Full-Stack comme le sont les deux précédents. Il fourni seulement les vues et les fonctions de callback pour rendre le code HTML. Exemples de sites utilisateurs :
    • facebook.com
    • instagram.com (qui utilise également Django pour la partie serveur)
    • 6play
    • Airbnb (utilise également Ruby on Rails)
  • Ruby on Rails (RoR) : RoR est le framework MVC libre le plus populaire. Ce framework a été conçu pour développer des applications Web plus rapidement. Il permet aux développeurs de créer des fonctionnalités avec moins de code que d'autres frameworks. Exemples de sites utilisateurs :
    • shopify.com
    • slideshare.com
    • github.com

Django, AngularJs, React, RoR : quelle différence ?

La courbe ci-dessous montre l'évolution du nombre de sujets ouverts sur Stack Overflow depuis la création de la plateforme sur les 4 Frameworks Django, Angular, React et Ruby on Rails :

Django face à Ruby, Angular et React

On distingue immédiatement que Django est une technologie persistante depuis 2010 qui a gagnée la confiance des développeurs. On note également une progression des échanges au sujet de ce framework depuis 2014 jusqu'à aujourd'hui. La tendance observée devrait se prolonger. Les frameworks JavaScript quant-à eux ont littéralement explosé en 2013. Ils devraient rester à de hauts niveaux à condition que de nouveaux usages ne viennent pas tout chambouler. Enfin Ruby on Rails a connu un heure de gloire très importante mais vit depuis 2011 un déclin progressif.

Avantages et inconvénients de ces frameworks

Voici les points clés de ces cadres de développement :
 

  Avantages Inconvénients
Django
  • Framework Full-Stack (il est très facile de combiner Django et React ou Django et Angular)
  • Tout clé en main : modèles, côté serveur, panneau d'administration pour configurer un site sans coder
  • Idéal pour créer un site Web puissant
  • Utilisation du Model-Template-View
  • Utilisation du Object Relational Mapper (ORM) pour mapper les objets avec la base de donnée
  • Supporte MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2 et d'autres avec des drivers additionnels
  • Migration native et facile entre moteurs de bases de données (pas de réécriture nécessaire)
  • Fourni avec son propre serveur de développement
  • Très structurant voir trop pour les experts voulant plus de flexibilité
  • Structures de code importantes même pour de petites fonctionnalités
  • AngularJS
  • Idéal pour les Single-Page Applications et les applications mobiles
  • Utilisation du modèle MVC
  • Utilisation de composants qui définissent à quoi va ressembler la page (quoi, comment, où)
  • Possibilité de lier tous les composants entre eux
  • Compatibilité faible voire nulle avec les moteurs de recherche (même Google). Un outil tiers comme Prerender est nécessaire
  • Ce n'est pas un framework Full-Stack comme Django
  • Il n'y a pas de migration entre Angular 4 et Angular 1
  • React
  • Outil puissant pour le développement Front (client)
  • Idéal pour les Single-Page Applications et la création d'applications mobiles nativement
  • Re-rendering de morceaux de contenus ayant changé au lieu de rendre à nouveau l'intégralité d'une page (plus rapide)
  • Utilisation d'un DOM virtuel en parallèle du vrai
  • Tout est créé avec des composants
  • React ne peut pas ête considéré comme un framework à part entière. Il doit être complété par beaucoup d'autres technologies
  • Il est très difficile d'intégrer des designs complexes réalisés sous Photoshop, Sketch en fichiers JSX. Les UX Designers souffrent de cette complexité.
  • Compatibilité faible avec le SEO. Possibilité cependant d'utiliser l'isomorphisme : le rendu de la page peut être aussi bien calculé côté serveur que côté client).
  • Ruby on Rails
  • Moins de code à fonctionnalité égale (développement rapide)
  • Peu de configuration, plus de convention
  • Utilisation du concept MVC
  • Compatible avec la plupart des bases de données relationnelles et non relationnelles
  • Peu de configuration, plus de convention (c'est aussi un inconvénient pour certains)
  • Le niveau d'expertise pour se lancer est une barrière à l'entrée pour les débutants
  • Ruby nécessite des ressources serveur plus importantes que Django et des frameworks PHP.
  • Technologie en déclin

 

Astuce : prenez des conseils chez un pro
Pour se lancer dans un projet Django, sollicitez un expert comme Pilot Systems qui saura vous aiguiller vers la bonne prestation : architecture, assistance, développement au forfait ou régie déportée.

Avantages et inconvénients d'un développement orienté client

Le développement Web orienté client offre un certain nombre d'avantages. En 2017-2018, nous pouvons aisément dire que la plupart des efforts en développement sont orientés sur le front-end pour les raisons ci-dessous :

  • Beaucoup de métier se trouve aujourd'hui côté client : navigation, partage de données, communication vidéo, etc. Les sites sont devenus des plateformes où les usages priment car ils permettent de fidéliser les utilisateurs et donc de capter beaucoup de données.
  • Le développement Front offre beaucoup d'interactivité d'où l'explosion des framework JavaScript.
  • Un développement orienté front permet d’utiliser le même langage (JavaScript) aussi bien sur le Web que sur mobile. Les performances sont meilleures et le serveur moins sollicité (à condition que le terminal soit récent).
  • Déplacer le métier côté client permet d'exploiter la puissance de navigateurs Web et des terminaux modernes afin de restituer rapidement de l'information à l'utilisateur. Éviter les échanges avec le serveur permet d'être plus rapide ;
  • Les technologies JavaScript se développent beaucoup et très vite. Cela signifie qu'il y a beaucoup de possibilités en terme de fonctionnalités et beaucoup de développeurs pour les réaliser. Une technologie en décroissance engendre des difficultés à recruter pour ces profils.
  • Les navigateurs sont de plus en plus sophistiqués (Chrome exécute particulièrement bien le JavaScript tout comme la dernière version de Firefox et Edge). Ils sont conçus pour les applications Web et le SaaS.

En revanche voici quelques inconvénients à souligner dans un développement client :

  • Le développement Front est fortement contraint par beaucoup d'éléments externes non maîtrisables : disponibilité de la connexion Internet, plugins du navigateur, hétérogénéité des navigateurs, hétérogénéité de la puissance des terminaux. Il est donc difficile de faire confiance au client. D’autant plus qu’un utilisateur expérimenté peut facilement trouver des parades à des sécurités côté front.
  • Les technologies orientées client ont une durée de vie courte comme nous avons pu le voir plus haut avec les frameworks JavaScript versus Django. Être "bon en front" implique des formations et une veille régulière. Il faut également du temps pour supprimer et reconstruire un existant avec une technologie plus moderne.
  • Les frameworks JavaScript sont difficilement compatibles avec le SEO. Ils doivent être secondés de solutions tierces qui ne sont que des jambes de bois face à des sites Django ou Wordpress.
  • Un développement Front est plus complexe donc plus coûteux.

Avantages et inconvénients d'un développement orienté serveur

Un développement côté serveur offre quant-à lui plus de simplicité et d’uniformisation :

  • La centralisation du métier côté serveur permet d’uniformiser les développements. C’est particulièrement le cas lorsqu’il y a plusieurs fronts (appli web, appli mobile, logiciel offline, etc.).
  • Déplacer l’intelligence côté serveur permet généralement d’avoir un front en HTML plus simple et donc mieux crawlé par les bots Google. C’est donc un bon pari SEO.
  • Le développement serveur doit avant-tout exploiter au mieux les possibilités offertes par les API (Web services). Il doit permettre à une application Web de s'interconnecter facilement avec d'autres applications Web en toute sécurité.
  • L'échange de données entre applications est une tendance lourde. Elle permet de se concentrer sur une fonctionnalité essentielle et de l'enrichir avec des services tiers.
  • Le développement côté serveur permet d'exploiter les possibilités infinies en terme de traitement et retraitement des données grâce aux volumes immenses de stockage et la puissance de calcul des datacenters combinée à des algorithmes et des logiciels à la pointe.

Voici les inconvénients du développement Web porté principalement sur le Back-End :

  • En 2017-2018, il y a de moins en moins de métier côté serveur et plus côté client grâce au JavaScript et aux navigateurs modernes. La tendance pourrait cependant s'inverser avec des systèmes d'Intelligence Artificielle qui nécessiteront moins d'interaction avec l'utilisateur (hormis la capture de la voix).
  • L'échange de données entre client et serveur tend à ralentir l'expérience utilisateur. Les utilisateurs finaux sont cependant habitués à des expériences rapides en toute circonstance et leur exigence est de fait très élevée.
Suggestion de logiciels pour vous

Django

Django
Framework Python préféré des DevOps
Décrire votre besoin métier
Voir ce logiciel

Conclusion

Nous avons vu dans cet article que l'évolution des développements Web clients face aux développements Web orientés serveur n'est pas fixe mais cyclique. De fait il est possible que les développements côté serveur reprennent de l'importance grâce au Web 3.0, aux API rest et à l'IA bien que les plateformes continueront à utiliser des framework JavaScript leur son interactivité. Afin de suivre les évolutions du Web il est nécessaire de se doter d'une solution durable et souple comme Django ou une combinaison Java + Angular afin de pouvoir ajuster ses développements sans se trouver dans une impasse dont la sortie ne serait que coûteuse.

Commenter cet article

Ajouter un commentaire