URL: https://linuxfr.org/news/tempete-dans-les-nuages-openstack-et-le-bazar-des-api Title: Tempête dans les nuages : OpenStack et le bazar des API Authors: GeneralZod Nÿco, Benoît, Katyucha, Xavier Teyssier, Zarmakuizz, Benoît Sibaud, rootix, lamiricore, Florent Zara et Jean Gabes Date: 2013年04月29日T20:27:50+02:00 License: CC By-SA Tags: cloud Score: 29 Un des débats qui fait rage parmi les développeurs d'OpenStack réside dans le choix d'un framework commun pour le développement de leurs API. Pour information ou rappel, [OpenStack](http://fr.wikipedia.org/wiki/OpenStack "Définition Wikipédia") est un moteur de _cloud_ (informatique en nuage) de type [IaaS](http://fr.wikipedia.org/wiki/IaaS "Définition Wikipédia") (Infrastructure as a Service) issu de la fusion de la plateforme de cloud de la NASA (projet Nebula) et de Cloud Files de Rackspace (cloud storage), la société texane d'hébergement. Cette pile de logiciels libres est écrite en Python sous licence Apache et s'appuie sur la norme [WSGI](http://fr.wikipedia.org/wiki/WSGI "Définition Wikipédia") pour exposer ses APIs. Pour reprendre une définition donnée par [misc](https://linuxfr.org/news/ubuntu-13-04-raring-ringtail#comment-1447662) : « *OpenStack, c'est beaucoup de choses, c'est un groupe de logiciels visant à gérer un nombre massif de machines virtuelles. En gros, tu rajoutes des serveurs, et OpenStack va faire tout seul le fait de rajouter des VM à la demande, via une API. API qu'on peut donc utiliser dans une interface web, ou via un script.* » OpenStack se veut le concurrent open source de la plateforme propriétaire Amazon Web Services. ![OpenStack](https://linuxfr.org/images/historique/images_perdues/tempete-dans-les-nuages-openstack-et-le-bazar-des-api-170px-OpenStack.png) ([source](http://upload.wikimedia.org/wikipedia/en/thumb/4/4c/OpenStack.png/170px-OpenStack.png)) La dernière version d'OpenStack (nom de code : Grizzly) a été publié le 4 avril 2013 et offrait les composants suivants : * Nova : gestion d'instances de calculs * Swift : stockage d'objets * Cinder : gestion de volumes blocs * Keystone : authentification * Quantum : gestion de réseaux virtualisés * Dashboard : framework fournissant une interface d'administration web extensible basé sur Django * Ceilometer : collecte de métriques * Heat : orchestration ---- [Projet OpenStack](http://www.openstack.org/) ---- ## Les API : un point clé À l'heure actuelle, tous ces composants proposent une API REST native ainsi qu'une API offrant une compatibilité plus ou moins complète avec le leader du marché : Amazon Web Services. Les API sont un point crucial pour le projet OpenStack, elles sont massivement utilisées à la fois en interne et par les utilisateurs finaux comme on peut le voir dans le diagramme ci-dessous. ![Architecture OpenStack](https://linuxfr.org/images/historique/images_perdues/tempete-dans-les-nuages-openstack-et-le-bazar-des-api-openstack-logical-arch-folsom.jpg) ([source](http://docs.openstack.org/folsom/openstack-compute/admin/content/figures/openstack-logical-arch-folsom.jpg)) ## Les frameworks actuellement en compétition Deux compétiteurs sont actuellement en cours de [discussions sur la liste](http://lists.openstack.org/pipermail/openstack-dev/2013-April/007748.html). ### Falcon [Falcon](http://falconframework.org) développé par Kurt Griffiths de Rackspace et annoncé comme étant un *micro-framework pour développer des API supersonique pour le cloud* (rien de moins que ça !). Il est utilisé dans le projet [Marconi](https://github.com/stackforge/marconi) qui vise à fournir un service de messages queueing dans OpenStack. ![Falcon](https://linuxfr.org/images/historique/images_perdues/tempete-dans-les-nuages-openstack-et-le-bazar-des-api-openstackfalconsmall.png) ### Pecan et WSME [Pecan](http://pecanpy.org/) & [WSME](http://pythonhosted.org/WSME/) proposé par Doug Hellman, mainteneur du projet Ceilometer. ![pecan](https://linuxfr.org/images/historique/images_perdues/tempete-dans-les-nuages-openstack-et-le-bazar-des-api-openstackpecansmall.png) ![WSME](https://linuxfr.org/images/historique/images_perdues/tempete-dans-les-nuages-openstack-et-le-bazar-des-api-openstackwsmelogo.png) ## État des lieux Actuellement, Nova utilise [eventlet](http://eventlet.net) pour la partie réseau et [Webob](http://webob.org) pour gérer les objets requêtes/réponses HTTP. [code middleware WSGI dans Nova](https://github.com/openstack/nova/blob/master/nova/wsgi.py) Swift quant à lui redéfinit ses propres objets requêtes/réponses HTTP. [code middleware WSGI dans Swift](https://github.com/openstack/swift/blob/master/swift/common/wsgi.py) [code Requêtes/Réponses WSGI: SWOB](https://github.com/openstack/swift/blob/master/swift/common/swob.py) Ceilometer utilisait [Flask](http://flask.pocoo.org) pour la version 1 de son API puis Pecan/WSME pour la version 2 [code de l'API v1](https://github.com/openstack/ceilometer/blob/master/ceilometer/api/v1/app.py) [code l'API v2](https://github.com/openstack/ceilometer/blob/master/ceilometer/api/controllers/v2.py) On notera que pour des raisons de stabilité, quelque soit la solution choisie au final, les API existantes ne seront pas réécrites. Par exemple, dans le cas de Ceilometer, si Falcon était choisi, la v1 continuerait à utiliser Flask, la v2 Pecan/WSME, la v3 utiliserait Falcon. Les versions 1 & 2 continueraient à être distribuées pendant un certain temps. ## OpenStack, Bazar et retours d'expériences Bref, OpenStack est un vrai projet Bazar. La publication par Rackspace de Falcon [a relancé le débat](http://lists.openstack.org/pipermail/openstack-dev/2013-April/007709.html). Un point extrêmement intéressant est [le retour d'expérience sur les différents frameworks WSGI dans des configurations massivement parallèles](https://etherpad.openstack.org/grizzly-common-wsgi-frameworks). ## Éléments requis Pour OpenStack, plusieurs critères comptent : * performance ; * listes de dépendances maitrisable; * prise en charge de Python 3 ; * possibilité de configurer les API sans trop de difficultés. ## Possibilités Falcon a été développé dans cette optique-là, la suite de benchmarks publiée montre qu'il bat à plate couture l'ensemble des frameworks existants (et ce, sans extensions natives). Il ne requiert que l'interpréteur Python et le package _six_ permettant la prise en charge de Python 2.7 & 3.3+ à l'aide d'une même base de code. Néanmoins, il a pour inconvénient d'être justement trop léger au niveau des fonctionnalités pour développer une API REST de manière confortable. Pecan est quant à lui un micro-framework WSGI encore peu connu, mais qui évolue très rapidement. Il a été créé pour faciliter le développement d'application RESTful sans fioritures. Il s'inspire ouvertement de CherryPy/TurboGears 1 et a le bon goût de s'appuyer sur WebOb qui pour le moment semble faire l'unanimité autour de lui (même l'exception SWOB s'en inspire ouvertement). Quant à WSME c'est une réimplémentation des contrôleurs REST de TurboGears 1 (un des points forts de ce vénérable framework) destinée à être intégrée à d'autres frameworks (Pecan, Flask, Bottle, Pyramid via l'excellente extension Cornice, etc.). Le combo est relativement jeune mais tire profit de plusieurs années de retour d'expérience. L'inconvénient est que c'est une solution relativement intrusive qui, de l'aveu de Doug Hellman, peut difficilement être réalisée de manière incrémentale, elle influencera également la manière dont sont conçues les API. L'apparition de Falcon a été également l'[occasion de redonner un coup de fouet à la quête de performances pour Pecan](http://lists.openstack.org/pipermail/openstack-dev/2013-April/007962.html). Ryan Petrello (DreamHost) a pu améliorer de 30% les résultats de Pecan par rapport aux benchmarks publiés par Falcon en quelques heures de travail. ## Tempête de cerveaux Pour le moment rien n'est décidé, le [débat continue encore sur la liste openstack-dev](http://lists.openstack.org/pipermail/openstack-dev/2013-May/008329.html) à propos de l'implémentation de la [nouvelle API de Nova](https://etherpad.openstack.org/grizzly-nova-api). Doug Hellman s'appuie sur les acquis du projet Ceilometer pour promouvoir l'utilisation de Pecan/WSME, et Kurt Griffiths a pour lui l'appui de Rackspace, fondateur du projet. Une affaire à suivre...

AltStyle によって変換されたページ (->オリジナル) /