Vous trouverez sur ce site mes publications concernant les technologies de l'information. Le contenu est disponible en français et en anglais.

mercredi, 1 novembre 2006

REST : une architecture échelonnable

Lors de la définition d‘une architecture, nous devons choisir quels seront les concepts ou principes majeurs qui la soutiendront. Ces concepts forment le style architecturale. Ils peuvent être évalués de manière qualitative suivant différents aspects, mais un aspect “validant” majeur reste l‘échelonnabilité (traduction de l‘anglicisme scabilité), c‘est à dire : est ce que le système construit peut supporter une charge importante sans reconception majeure ?
La scalabilité en informatique s‘obtient notamment par une utilisation non exponentionnelle des ressources au fûr et à mesures de la montée en charge. La réduction des états gérées par le système fait partie des réponses possibles à ce problème. C‘est d‘ailleurs pourquoi les langages fonctionnels sont intéressant, mais cela fera l‘objet d‘un futur billet.

Ainsi le style architectural REST -Representational State Transfer) répond admirablement bien à ce challenge. Ce style architectural est celui du web. Ce style est basé sur le protocole stateless HTTP qui propose quatres "verbes" GET, POST, PUT et DELETE sur des ressources Ces verbes sont très proches de l'acronyme CRUD bien connu en base de données. Chacun représente une action bien particulière qui modifie ou non l‘état du système considéré. Ainsi :

  • GET : cette action est idempotente et ne modifie pas l‘état du système. L‘équivalent d‘une lecture de données.
  • POST : modifie l‘état du système et n‘est pas idempotente, exemple : l‘ajout d‘un article à un panier ou la validation d‘un panier. Les données ne sont pas compris dans l‘URI.
  • PUT : crée ou modifie une ressource particulière mais est idempotente.
  • DELETE : supprime une ressource.

REST fut proposé initialement par Roy Thomas Fielding pour sa thèse de doctorat.
REST est donc un style architectural simple et très robuste, validé par le web, et qui peut être combiné à la toute puissance du langage XML.
Ce billet m‘est inspiré par ceux d‘Eliotte Rusty-Harold qui pose quelques questions d'ordres pratiques très intéressantes sur REST et l‘utilisation du protocole HTTP.

Le style REST est effectivement simple mais est il suffisant pour batir des interactions complexes et éviter de déporter une logique applicative trop importante sur le client ?
Un exemple très intéressant est donné par cet article qui fournit une transcription REST d‘un service de mail, cet exemple illustre toute l‘importance d‘une identification correcte des ressources. Le parallèle avec l‘approche objet est par ailleurs très net quant à la représentation des ressources.

Quelques liens de mes bookmarks pour aller plus loin sur REST :

Technorati Tags:

Posted at 11:04 PM in fr/Architecture/
portage salarial freelance