do you speak technique

publicité
DO YOU
SPEAK
TECHNIQUE ?
Tous les concepts et le vocabulaire technique du web !
Auteur : Kevin NGUYEN
1
INTRODUCTION
3!
1. LES PRINCIPAUX CONCEPTS
4
BON ALORS, LE WEB COMMENT CA MARCHE ?
4
CLIENT LÉGER/CLIENT LOURD
6
ARCHITECTURE MVC
7
FRONT/BACK : UN PIEGE POUR LES NON-INITIÉS
8
2. LES TECHNOS FRONT END
9
LA BASE
9
GERER LES INTERACTIONS
10
2. LES DIFFERENTES « STACKS »
11
SOLUTIONS OPEN SOURCE
11
ARCHITECTURE WEB CLASSIQUE (PHP)
12
ARCHITECURE PLUS « TENDANCE » (JAVASCRIPT)
14
3. LES BASES DE DONNÉES
15
4. LES WEB SERVICES ET LES FORMATS D’ÉCHANGES
16
5. LE MOBILE
18
TECHNOLOGIES DE DEVELOPPEMENT
18
LES TECHNOLOGIES HYBRIDES
18
6. UN PEU PLUS DE TECHNIQUE…
19
LA GESTION DU CODE SOURCE : GIT
19
LES SERVEURS, LE HOSTING
19
LA SÉCURITÉ
19
LA GESTION DU CACHE
20
LES MOTEURS D’INDEXATION
21
CONCLUSION
22
À PROPOS DE THECODINGMACHINE
23
2
INTRODUCTION
En plus de coder dans un langage incompréhensible pour les non-initiés, les
développeurs ont imaginé un jargon qui leur est hermétique…
Vous êtes en relation avec des développeurs et vous vous sentez parfois perdus ?
Vous soupçonnez vos équipes techniques de délibérément employer des termes ou
des concepts que vous ne comprenez pas ? Reprenez la main ! Avec un peu d’effort
(et ce document), vous pourrez engager une discussion sans complexe.
Ce document a pour objectif de vous faire comprendre les principaux concepts
techniques et les termes employés ! Nous espérons que vous pourrez assister à une
réunion où l’on parle de technique sans être profondément ennuyé ou vous sentir
dépassé.
Le défi est de taille mais chez TheCodingMachine on n’a peur de rien ;-)
Note : notre objectif n’est pas d’expliquer comment les choix sont menés. Cela aurait
augmenté la complexité de ce document.
3
1. LES PRINCIPAUX CONCEPTS
BON ALORS, LE WEB COMMENT CA MARCHE ?
« Au premier jour, Dieu créa le protocole TCP/IP* et puis, comme c’était trop compliqué de
retenir les adresses IP sur le navigateur, Dieu dit : « que le DNS soit ! » Et le DNS fut. Dieu vit
que le DNS était bon. Les requêtes http s’échangeaient bien : ce fut Internet. »
*le protocole TCP/IP permet l’échange de données sur Internet
Quand l’internaute tape une adresse d’un site web, le SERVEUR DNS (Domain Name
System) identifie le nom de domaine et renvoie vers la bonne adresse IP (adresse
physique de la machine). Dans la plupart des cas, les serveurs physiques, destinés à
héberger un serveur web, ont une IP fixe et publique (contrairement au réseau de votre
entreprise qui vous affecte une IP locale aléatoirement dans une plage d’IP). De
4
manière très simplifiée, les serveurs DNS s’échangent des informations afin de fournir
la réponse.
Le serveur DNS est généralement la propriété d’un REGISTRAR (ou hébergeur de nom
de domaine en bon français). C’est auprès du REGISTRAR que vous allez acheter
votre nom de domaine et le faire pointer vers l’adresse IP de votre site web.
Une fois que l’adresse IP est résolue auprès du DNS, la connexion est établie avec les
serveurs web qui peuvent alors échanger des REQUETES HTTP (les pages de votre
site).
Dans les projets, il est possible que l’on parle de PORTS TCP. Ce sont les terminaisons
qui « écoutent » certaines applications, par exemple, les requêtes http sont affectées
au port 80, POP3 (pour les e-mails) sur le port 110 ou bien encore FTP sur le port 21
etc.
5
CLIENT LÉGER/CLIENT LOURD
On oppose souvent les ARCHITECTURES CLIENT LEGER ou ARCHITECTURE 3 (N)
TIERS aux architectures CLIENT-SERVEUR ou CLIENT LOURD. On parle de client
lourd lorsque le matériel de l’utilisateur est utilisé pour les traitements tandis que l’on
parle de client léger lorsque l’ensemble des traitements est effectué à distance (sur un
serveur web par exemple).
Lorsque le web n’était pas aussi prégnant, que les débits réseaux ainsi que les
ressources serveurs étaient faibles (dans les années 80-90), une partie des
traitements était déportée vers les clients (PC des utilisateurs).
Avec l’amélioration des capacités des navigateurs et des connexions internet, les
architectures client léger se sont imposées.
Aujourd’hui, on revient un peu en arrière avec les technologies front-end (expliqué cidessous) ou les applications natives (IPhone ou Android) qui fonctionnent sur le
modèle client lourd pour améliorer les performances ou pallier à la déficience
éventuelle de réseau.
Parfois, par extension ou facilité, on parle aussi d’ARCHITECTURE 3 TIERS pour
évoquer les différents composants physiques de la solution : le terminal (navigateur
web ou téléphone), le serveur web et le serveur de données.
6
ARCHITECTURE MVC
Il y a des problèmes en programmation qui reviennent tellement souvent qu'on a créé
des bonnes pratiques (qui résolvent ces problèmes) que l'on a réunies sous le nom de
DESIGN PATTERN.
Le design pattern MVC ou MODEL-VIEW-CONTROLLER (Modèle-Vue-Contrôleur) est
le plus important. Il s’agit d’un pattern qui sépare la logique du code en trois parties
afin de clarifier la conception et le développement :
-! Le Modèle gère la logique métier et les données (les requêtes SQL) ;
-! La Vue affiche la page (le code HTML et quelques boucles et conditions PHP
très simples, pour afficher par exemple des listes) ;
-! Le Contrôleur gère l’enchainement des pages, les URLs… (le code PHP qui
interroge le modèle et renvoie les éléments à afficher à la vue).
7
FRONT/BACK : UN PIEGE POUR LES NON-INITIÉS
Ici, il y a un piège. On peut parler de développement FRONT-END ou BACK-END en
évoquant la technologie respectivement sur le navigateur ou sur le serveur web. Mais
on peut aussi parler de FRONT-OFFICE ou de BACK-OFFICE. Et, dans ce cas, on
distingue les populations d’utilisateurs. Le Front-Office adressant les visiteurs d’un
site et le Back-Office les gestionnaires.
La même application, deux interprétations de front-back :
Et pourtant, il s’agit de la même application !
Note : un terme apparaît de plus en plus, il s’agit de FULL STACK. Cette notion indique
toutes les technologies depuis le front-end jusqu’au back-end.
8
2. LES TECHNOS FRONT END
(technologies qui sont associées au navigateur).
LA BASE
Le format HTML permet de décrire la structure des pages Web. Il indique la nature des
éléments d’une page (lien, bouton, etc.) et l’organisation des blocs. La version 5,
finalisée en 2014 a apporté beaucoup de nouveautés pour définir les principaux
éléments de la page, intégrer des médias (vidéo, audio) ou fournir des éléments utiles
(saisie de dates ou de nombres).
CSS est le langage qui permet de préciser la mise en forme des balises HTML. Par
exemple la police d’affichage, la taille ou la couleur du texte, les images de fond… La
version 3 permet notamment de gérer les animations et les transitions d’état de
manière standardisée. On peut même adapter le rendu d’une même page à la taille
des écrans (ordinateur, tablette, smartphone) grâce aux media queries. C’est le
Responsive Design.
Comme les développeurs sont flemmards et en ont assez de faire toujours la même
chose, des FRAMEWORKS (ensemble cohérent de briques logicielles « prêtes à
l’emploi ») regroupant HTML, CSS et JavaScript permettent de mettre en place très
rapidement un site web. Ils implémentent notamment le « GRID SYSTEM » (système
de grille) qui assure l’alignement des éléments et pose les bases du Responsive
Design. Un des plus connus est BOOTSTRAP.
9
GERER LES INTERACTIONS
La plupart des interactions qui apparaissent sur une page web sont gérées grâce au
JAVASCRIPT (un peu en CSS si vous avez bien lu le paragraphe d’avant). C’est un
langage de programmation à part entière. Evidement de nombreuses bibliothèques de
code sont apparues comme par exemple JQUERY qui a eu un grand succès ces 10
dernières années. Le slogan parle de lui-même : « code less, do more ». Il met à
disposition des développeurs des fonctions utilitaires permettant d’implémenter très
rapidement des tas d’animations (faire glisser un slider, faire apparaître une
description plus longue etc.)
Une technologie permet de faire appel au serveur sans recharger la page. Il s’agit de la
technologie AJAX. Elle permet d’effectuer des vérifications comme par exemple :
« est-ce-que l’email saisi dans un formulaire correspond à un compte existant ? ».
Evidemment, les navigateurs sont en constante évolution. CANVAS permet, par
exemple, de dessiner grâce au JavaScript. Les usages sont nombreux et peuvent aller
d’une simple palette où on dessine des carrés à un jeu très interactif.
10
3. LES DIFFERENTES « STACKS »
SOLUTIONS OPEN SOURCE
!
Ne réinventez pas la roue ! Parfois, votre besoin correspond à une solution prête à
l’emploi. Il existe en effet de très nombreuses solutions Open Source pour répondre à
des besoins récurrents : gestion de contenus (CMS), gestion de la relation client
(CRM), et e-Commerce notamment. Les principales solutions Open Source sont
largement utilisées, et disposent d'une très large communauté de développement
assurant maintenabilité et support.
Voici un inventaire non exhaustif des principales solutions existantes :
•! CMS - CONTENT MANAGEMENT SYSTEM : DRUPAL, WORDPRESS, JOOMLA
•! CRM - CUSTOMER RELATIONSHIP MANAGEMENT : SUITECRM (FORK DE
SUGARCRM), VTIGER, ODOO (ANCIENNEMENT OPENERP)
•! E-COMMERCE : MAGENTO, PRESTASHOP, DRUPAL COMMERCE
!
Ces solutions permettent de mettre en place très rapidement et à moindre coût votre
application. Cependant, la vraie question est de déterminer ce qu'il reste à développer.
Ces développements seront souvent plus complexes à réaliser car ils devront se plier
aux contraintes de la solution que vous aurez choisie.
Note : si vous choisissez une solution Open Source largement répandue, pensez à prévoir
de la mettre à jour régulièrement, car les failles de sécurité sont fortement exploitées.
11
ARCHITECTURE WEB CLASSIQUE (PHP)
C'est sans doute l'architecture technique la plus utilisée sur Internet. PHP, langage de
programmation coté serveur traite les requêtes des utilisateurs. Il s'interface avec une
base de données relationnelle qui est souvent MYSQL ou POSTGRESQL pour lire ou
stocker de l'information. PHP génère ensuite le HTML qui est affiché en retour. La
plupart du temps, le serveur web Apache (ou Nginx) assure la transmission des
requêtes. Les deux frameworks PHP les plus répandus sont SYMFONY 2/3 et ZEND
FRAMEWORK 2/3.
Sachez cependant qu'un effort de standardisation est mené depuis plusieurs années,
et qu'il favorise une approche micro frameworks, c'est-à-dire que plutôt que d'installer
un seul framework et tous ses modules, il est désormais possible de prendre les
éléments qui sont les plus adaptés.
Enfin, si vous entendez parler d'une architecture (ou STACK) LAMP pas de panique, il
s'agit simplement de l'acronyme LINUX, APACHE, MYSQL, PHP.
Il existe aujourd'hui un très grand nombre de librairies PHP qui permettent de
développer rapidement les fonctionnalités récurrentes des applications web : gestion
des utilisateurs et des droits, implémentation native du MVC, gestion simplifiée des
accès aux bases de données, génération automatique de listes ou de formulaires...
Le point faible de ce genre d’architecture est la capacité à supporter une forte charge
(scalabilité) et la gestion des accès concurrents.
12
Rien que pour votre culture, voici les principaux composants (ou PACKAGES d’un
framework PHP) :
13
ARCHITECURE PLUS « TENDANCE » (JAVASCRIPT)
On pensait avoir trouvé une architecture universelle : un navigateur, un serveur PHP,
des bases de données MYSQL. Patatra : parfois, ce type d’architecture ne suffit plus,
l’ergonomie des sites devient de plus en plus complexe, la vitesse d’exécution de
l’affichage et des traitements est de plus en plus importante (il n’y a qu’à voir les
études faites par Google ou Amazon sur la corrélation entre le taux de transformation
et les performances), les clients qui se connectent sont de plus en plus différents
(mobiles, tablettes), le big data ou bien encore la montée en charge des applications
nécessitent de gérer d’énormes quantités de données.
Asynchrone par nature, le JavaScript y est omniprésent. Que ce soit sur le serveur
avec NODEJS (et le FRAMEWORK EXPRESS) ou bien coté client avec ANGULAR ou
encore REACTJS, cette architecture vous permet de mettre en place des interfaces
fluides et réactives. Très souvent, la persistance des données est assurée par une
base de données non relationnelle comme MONGODB ou CASSANDRA. Ce standard
porte l'acronyme de stack MEAN (MONGO, EXPRESS, ANGULAR, NODE).
!
Sans conteste, il s'agit des applications les plus SCALABLES (celles qui montent en
charge le plus rapidement) car leur caractère asynchrone (désolé, on ne peut pas
employer un terme plus simple mais vous pouvez lire notre livre blanc sur Node.js)
permet de gérer facilement les accès simultanés, et les bases de données non
relationnelles sont pensées pour pouvoir tourner sur plusieurs serveurs. De plus,
l'utilisation systématique des requêtes AJAX permet de ne recharger que la partie de
la page qui doit changer, ce qui produit une expérience fluide et rapide.
14
4. LES BASES DE DONNÉES
La question qui se pose ne concerne pas les caractéristiques des sauvegardes de
données mais plutôt la manière avec laquelle on les sauvegarde !
Il y a quelques années, cette question ne se posait pas. On utilisait une base de
données relationnelle (Oracle par exemple). Mais les volumes de données et même la
nature des données ont changé. C’est le fameux BIG DATA dont on parle tant.
Aujourd’hui, il est tout à fait possible voire souhaitable de conserver toutes les
informations possibles comme celles liées au comportement du visiteur d’un site
web. Avec ces informations, le visiteur qui a passé du temps sur un produit pourra
recevoir des promotions ou des relances adaptées s’il n’a pas finalisé son achat.
Le modèle SQL (MODÈLE RELATIONNEL) qui consiste à lier les données entre elles
(un client a plusieurs adresses par exemple) n’est pas bien adapté ni aux volumes ni à
ce type d’informations. Les temps de traitement sont trop longs. Aussi, apparaît le
NOSQL. Le NoSQL regroupe de nombreuses bases de données, récentes pour la
plupart, qui se différencient du modèle SQL par une logique de représentation de
données non relationnelle. Cette logique a le double avantage d'augmenter les
performances et la capacité à traiter de très grands volumes de données.
Ainsi, dans les projets, il ne faut pas opposer ces deux approches mais bien souvent
les faire cohabiter ! Cette technologie (le NoSQL) ne vise finalement pas à remplacer
les bases de données traditionnelles mais plutôt à les compléter en déportant une
partie de la charge.
15
5. LES WEB SERVICES ET LES FORMATS
D’ÉCHANGE
Les échanges entre les applications sont de plus en plus nombreux. Par exemple, un
site web va permettre à un visiteur de se créer un compte, ce compte va être intégré
dans un CRM (Customer Relationship Management), s’il effectue une commande,
cette commande va être intégrée dans un ERP (Entreprise Ressource Planning) et le
paiement va se faire grâce à une intégration avec une banque. Dans tous ces cas,
pour ces échanges, on va parler de WEB SERVICE ou d’API (Application Programming
Interface).
C’est souvent une des parties les plus dures des projets. La mise en œuvre de ces
services est souvent délicate : le message a-t-il été bien consommé ? La réponse estelle conforme aux attentes ? etc.
Il y a quelques années (OK, un paquet d’années), les formats d’échange étaient fixes
sur un certain nombre de caractères (50 pour le prénom, 50 pour le nom, 10 pour le
numéro de téléphone et ainsi de suite). Ce n’était pas un système très souple. Donc,
on a inventé un format où les différentes informations du message étaient séparées
par un caractère spécial comme un point-virgule par exemple. Ce format est parfois
utilisé, il s’agit par exemple du FORMAT CSV (Comma-separated value) qui est sous
Excel. Ce n’était pas encore assez souple, si l’on devait ajouter une donnée, il fallait
refaire le message. Les formats d’échanges sont maintenant une suite de couples
variable-valeur potentiellement récursives comme le FORMAT XML (Extensible
Markup Language) ou JSON (JavaScript Object Notation).
16
Extrêmement bien structuré et possédant de très nombreuses fonctionnalités, le
format XML a tendance à céder la place à son alter-égo JSON, qui est moins normé
mais nettement plus simple d’utilisation, et nativement compatible avec les
navigateurs.
17
6. LE MOBILE
TECHNOLOGIES DE DEVELOPPEMENT
Les
développements
d’applications
dépendent
étroitement
des
systèmes
d’exploitation (OS) des terminaux mobiles, il y a donc :
- JAVA pour Android ;
- OBJECTIVE-C ou SWIFT pour Apple ;
- et C# pour Windows Phone.
LES TECHNOLOGIES HYBRIDES
La plupart des clients ne souhaitent évidemment pas développer une application pour
chaque OS (sauf si l’on fait quelque chose de très particulier comme un jeu par
exemple). Aussi, certains éditeurs ont eu la bonne idée de développer des
technologies nommées HYBRIDES. Le code de l’application est développé sur des
technologies web classiques HTML/CSS/JavaScript. Ce code est ensuite interprété et
compilé pour chaque plateforme. Ces outils sont par exemple : ADOBE PHONEGAP,
APPCELERATOR ou encore APACHE CORDOVA.
18
7. UN PEU PLUS DE TECHNIQUE…
LA GESTION DU CODE SOURCE : GIT
Le but de ces outils est de permettre de garder un historique de toutes les
modifications effectuées au code source, d’aider à travailler en équipe et de gérer les
versions. GIT est l’outil le plus utilisé. SVN est désormais un peu vieillissant.
Vous pourrez entendre : « Il suffit de FORKER le projet pour commencer à travailler
dessus et ensuite faire une PULL REQUEST ». Ce qui signifie « faire une copie du code
source, travailler dessus et proposer à celui qui est responsable du code dans son
ensemble de relire/valider son code. »
LES SERVEURS, LE HOSTING
Les serveurs ou l’hébergement en général a aussi un vocabulaire qui lui est propre. On
parle de CLOUD (Cloud Computing pour être exact) lorsqu’on achète un service à un
fournisseur et que l’on ne se soucie pas du matériel qui est derrière. On parle de
SERVEUR DEDIE lorsqu’on loue ou achète sa machine qui ne sert que ses besoins.
Entre ces deux extrêmes, toutes les solutions sont possibles : SERVEUR MUTUALISE
lorsque l’on partage un serveur avec d’autres clients ou VPS (Virtual Private Server)
qui a toutes les caractéristiques d’un serveur dédié mais qui est en fait un serveur
virtuel ! Une des plateformes VPS parmi les plus populaires est AWS AMAZON EC2.
LA SÉCURITÉ
On ne parlera que des éléments les plus connus ou les plus critiques en termes de
sécurité. L’ATTAQUE PAR DENI DE SERVICE (DoS ou DDoS en Anglais) est
19
certainement une des attaques les plus médiatisées. Elle consiste à empêcher l’accès
à un service en envoyant un nombre de requêtes très important.
Après les attaques, il y a les failles ou les vulnérabilités. A part les mises à jour qui
sont régulièrement publiées (et qu’il faut mettre en œuvre), les principaux défauts
associés à un code sont les injections SQL (on peut injecter dans un champ de
formulaire des requêtes SQL) ou les failles XSS (là, on injecte du code JavaScript). Il
existe de nombreuses autres types de failles référencées : CSRF, sensitive data
exposure… Celles-ci sont maintenues à jour dans un document publié par l’OWASP
(Open Web Application Security Project) qui fait référence en la matière.
LA GESTION DU CACHE
C’est une des problématiques les plus complexes des applications web. Le cache
permet de stocker quelque part le résultat d’un calcul complexe pour éviter d’avoir à le
refaire plus tard. Il peut s’agir d’éléments très divers, comme les droits associés à un
utilisateur, ou une page HTML. Le résultat du cache peut être stocké côté client (c’est
le cache navigateur qui héberge les fichiers CSS, JS et les images), ou côté serveur.
Le cache navigateur ne nécessite pas de technologie particulière, seulement de la
configuration du serveur Web (Apache, NodeJs, etc.). En revanche, côté serveur, il y a
plein de solutions :
APC, MEMCACHE & REDIS : ces caches stockent des données. Ils sont montés en
mémoire, ils sont très rapides d’accès.
VARNISH : ce cache stocke des requêtes web. Il stocke lui-même les ressources
statiques (fichier CSS, JS, images ou HTML) et répond très rapidement pour les servir.
Cela permet de décharger le serveur applicatif d’appels « inutiles ».
La complexité du cache est liée à son invalidation : savoir précisément quand ne pas
l’utiliser est un art maîtrisé par peu de personnes.
20
LES MOTEURS D’INDEXATION
Le but d’un moteur d’indexation est d’indexer les informations (logique certes). Cela
signifie qu’il classe les données ou le contenu de documents selon un système
d’indexes pour permettre de retrouver très rapidement un ou plusieurs contenus. Leur
nom varie (APACHE SOLR, LUCENE, ELASTICSEARCH, etc.), mais on les utilise
presque toujours pour développer des moteurs de recherche performants :
•! Trouver une information dans un très grand nombre de données ;
•! Faire des recherches approximatives (tolérance à la faute de frappe) ;
•! Faire des recherches à l’intérieur de documents texte.
21
CONCLUSION
La technologie est un sujet passionnant. Elle évolue, se transforme, se remet en
cause. Des barrières se dressent pour la comprendre : certains concepts et un jargon
de spécialistes. Faisons tomber ces barrières !
Nous avons tenté cette approche : « Rendez les choses aussi simples que possible,
mais pas plus simples » (Albert Einstein) et nous savons bien que le sujet est un peu
aride. Mais, avec ce document, vous avez un outil pour comprendre et dialoguer avec
vos équipes techniques.
Do you speak technique now ? N’hésitez pas à nous le dire !
22
À PROPOS DE THECODINGMACHINE
TheCodingMachine accompagne ses clients sur des missions de conseil
technologique et sur des projets de développement d'applications Web avec un
engagement au forfait.
Nous sommes spécialisés dans le développement de sites Internet, d’extranets,
d’intranets, d’applications Web métiers en PHP et en JavaScript.
Fondée en 2005, TheCodingMachine a piloté plus de 350 projets. Nous travaillons
aussi bien pour des grands comptes privés et publics, pour des PME-PMI que pour
des startups. Nous avons investi dès notre création dans la R&D, ce qui nous permet
par exemple d’être à la pointe des technologies web : PHP, Node.JS, AngularJS,
streaming video etc.
www.thecodingmachine.com
Tél : 01 71 18 39 73
[email protected]
4, rue de la Michodière – 75002 PARIS
23
Téléchargement