mercredi 23 décembre 2009

Web Application (I)

Introduction
Une application Web , du point de vue utilisateur, est une collection de pages dynamiques (le HTML(1) n’est pas uniquement contenu dans un fichier) mais est construit par une extension du web serveur, qui peut créer la page en accédant à une base de donnée et en utilisant d'autres ressources sur le serveur. Du point de vue du développeur l’application web est tout de même un peu plus que cela…Outre le fait de devoir jouer avec un certain nombre de limitations techniques liées à la nature des protocoles (ex : HTTP(2) étant une protocole stateless(3), il faut prévoir un mécanisme de reconnaissance, pour ne pas demander à l’utilisateur de s’authentifier à chaque nouvel accès, autrement dit, il faut gérer la session de l'utilisateur), il faut encore jouer avec d’autres contraintes techniques, telles que la scalability et l’accès transactionnel au donnée. La première chose à définir lorsque l’on veut concevoir une application Web, ce sont ses limites… Ce sont ces limites ou obligations qui vont déterminer le choix de l'architecture, de la technologie et aussi le choix de la plateforme de développement.

Questions intéressantes à se poser

1. Quel est le domaine de mon application, quel est son business ?
Est-ce une application de data-entry, de reporting, de service?
Quel volume de contenus vais-je devoir renvoyer (le volume sera différent si il s'agit d'images, de vidéo, de rapports, ou d'une simple page statique ...)?
Quels types de traitements sur les données vais-je devoir effectuer pour présenter mes informations ? Simples, complexes, extrêmement lourds ?

2. Combien d’utilisateurs devrais-je gérer en même temps ?
Puis-je prévoir cette évolution ?Ex : lorsque le premier site microsoft.com fut mis en ligne, un mois après sa mise en marche le serveur crashait car il y avait beaucoup trop d’utilisateurs connectés. Dans le cas de page statique ne demandant pas d’authentification utilisateurs, il est possible de placer des filtres ISAPI ou encore jouer sur la NAT(4) du bastion(5) pour rediriger certaines addresses ip vers certains serveur. Dans le cas d’une application dynamique c’est beaucoup plus compliqué.

3. Puis-je me permettre de perdre des données en cas de crash, ou de redémarrage du serveur ?
Ex :J’encode un formulaire, au moment où je le soumet, le serveur est redémarré, seul la moitié du formulaire à été prise en compte et sauvée dans la base de donnée. Quelle sera l'impact d'un tel scénario?

4. L’application est-elle interne ou au contraire est-ce un produit qui sera partagé par différents clients ?
Dans le cas d’un produit, les demandes de configuration spécifiques seront nombreuses, par exemple, l’aspect même de l’interface changera peut-être du tout au tout, en fonction du client.

5. Les changements seront-ils nombreux au cours du temps ?
Quelle sera la fréquence des ajouts de nouvelles fonctionalités, modifications des fonctionalités existantes …

6. Quelles sont les contraintes de mon développement ?
Cela dépend bien sûr du type de secteur d'activités de vos clients, une application bancaire demandera beaucoup plus de contrainte en terme de sécurité, de scalabilité, de performances, ... qu'une application commerciale de vente de brosses à dent par correspondance.
Il faut également savoir que certains secteurs de l'industrie sont soumis à des règles strictes: Ex: L'industrie pharmaceutique est soumise à la FDA(6) qui va imposer un certain nombre de règles quant à la gestion des enregistrements électroniques et de l'utilisation des signatures.

7. Quel est mon budget ?
Les moyens financiers mis à disposition sont aussi un élément déterminant du choix d'une technologie. Le temps est aussi un facteur très important. Un bon RAD(7) vous reviendra sans doute plus cher à l'achat mais vous permettra peut-être de vous faire gagner du temps dans vos développements.

(A suivre...)


(1)HTML:(HyperText Markup Language) : ensemble de tags permettant de décrire le formattage d’une page web, ainsi que l’insertion de hyperliens qui permettront la navigation entre ces pages
(2)HTTP:(HyperText Tansfer Protocol) : permet de transférer des pages web, ainsi que des contenus de formulaire. http est un protocole dit state-less, une fois la page transférée, la connexion avec le serveur est coupée, et le serveur ne sait plus qui est le client.
(3)Stateless:Un protocole stateless ne maitient pas de données utilisateurs sur le server (ex: login/password)
(4)NAT:(Network Address Translation):Table contenant les adresses internet de machine localisée sur un réseau Interne.
(5)Bastion:Serveur faisant l'interface entre le réseau interne et le monde extérieur, il joue en général le rôle de gateway et de mur de feu et de serveur proxy (cfr NAT).
(6) FDA:Food and Drugs Administration: Il s'agit d'un comité d'éthique supervisant la mise en circulation des médicaments et de la nourriture. On ne peut pas mettre tout et n'importe quoi sur le marché. Il y a donc des règles imposées par la FDA qu'il faut respecter.
(7) RAD:Rapid Application Development. Il s'agit d'environnement de développement presse boutons qui vous permettent en général d'aller très vite. Il faut toutefois éviter de tomber dans le piège de la programmation spaghetti, difficilement maintenable sur le long terme.

Aucun commentaire:

Enregistrer un commentaire