Web Services pour la gestion de comptes utilisateurs Benjamin Dexheimer benjamin.dexheimer@inria.fr INRIA Nancy Grand-Est Service d Expérimentation et de Développement (SED) 4ème rencontres DevelopR6 Vandoeuvre-Les-Nancy B.Dexheimer (INRIA) User Management System 16 Juin 2011 1 / 34
Plan Grid 5000 : le contexte 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 2 / 34
Plan Grid 5000 : le contexte La plateforme 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 3 / 34
Grid 5000 : le contexte La plateforme Des machines et des hommes Les machines 11 sites : Bordeaux, Grenoble, Lille, Luxembourg, Lyon, Nancy, Orsay, Reims, Rennes, Sophia, Toulouse 25 clusters, 1528 machines, 7468 cores Interconnexions inter-sites a 10Gbps + re seaux rapides (Myrinet, Infiniband) B.Dexheimer (INRIA) User Management System 16 Juin 2011 4 / 34
Grid 5000 : le contexte La plateforme Les hommes 1800+ comptes utilisateurs Un staff technique de 11 ingénieurs Réunion physique bi-annuelle. Un comité de direction Un comité exécutif Une communauté active : Mailing-lists d échange et entraide Salons jabber Ecole de Printemps annuelle https://www.grid5000.fr/mediawiki/index.php/grid5000: School2011 Dépôt de code communautaire sur la Forge INRIA https://gforge.inria.fr/projects/grid5000-code Un Wiki extensif organisé en 3 portails : public, user, admin https://www.grid5000.fr/mediawiki/index.php/grid5000:home Nombreux contributeurs actifs et power users. B.Dexheimer (INRIA) User Management System 16 Juin 2011 5 / 34
Plan Grid 5000 : le contexte un Système de Gestion des Utilisateurs (UMS) 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 6 / 34
Grid 5000 : le contexte un Système de Gestion des Utilisateurs (UMS) Cahier des charges fonctionnel Centraliser la source d informations de référence pour un utilisateur de Grid 5000. Conserver l historique des utilisateurs (affiliations successives au cours du temps). Dériver les bases annexes (authentification LDAP) de cette base centrale. Gérer la délégation de responsabilité par une arborescence de privilèges : observer < user < account-manager < site-manager / top-manager < admin Gérer les workflows de gestion des comptes avec des notifications aux intervenants. Gérer des scripts périodiques de maintenance (crons). B.Dexheimer (INRIA) User Management System 16 Juin 2011 7 / 34
Contexte technique Grid 5000 : le contexte un Système de Gestion des Utilisateurs (UMS) https://api.grid5000.fr/version/grid5000/resource S insérer dans la continuité architecturale et technologique des API Grid 5000 existantes B.Dexheimer (INRIA) User Management System 16 Juin 2011 8 / 34
Plan Les interfaces d UMS 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 9 / 34
Plan Les interfaces d UMS Architecture globale 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 10 / 34
Différents composants Les interfaces d UMS Architecture globale Un ensemble de web services servis par un serveur d application. Réalisent les opérations de gestion des comptes Gèrent les accès transactionnels à la base centrale S exposent à travers une API REST couvrant toutes les opérations (Users API) Une interface utilisateur Web Interaction en Ajax avec la Users API Une série de crons (scripts périodiques) Purge des comptes expirés Création des entrées dans les bases annexes (LDAP, MySQL) Création des homedirs... B.Dexheimer (INRIA) User Management System 16 Juin 2011 11 / 34
Plan Les interfaces d UMS Interface programmatique 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 12 / 34
Les interfaces d UMS Interface programmatique REST : Representational State Transfer Principes pragmatiques Un web service RESTful définit au minimum: l URI de base : https://api.grid5000.fr/sid/grid5000/users Le format des données échangées (Content-Type:, Accept:) Les opérations HTTP supportées pour chaque classe de ressources: GET, POST, PUT, DELETE B.Dexheimer (INRIA) User Management System 16 Juin 2011 13 / 34
Les interfaces d UMS Interface programmatique REST : Representational State Transfer Un Web service RESTful : Manipule une ressource ou une collection de ressources Utilise les URIs pour désigner chaque ressource (collection ou individuelle) Utilise des messages auto-suffisants : opérations autorisées, MIME type, cacheability Représente les ressources avec un Internet Media-Type valide (généralement XML, JSON, YAML) Utilise les liens hypermedias pour naviguer d une ressource à l autre B.Dexheimer (INRIA) User Management System 16 Juin 2011 14 / 34
Les interfaces d UMS Interface programmatique Technologies logicielles utilisées Langage Ruby 1.8 http://www.ruby-doc.org Sinatra DSL pour la description de routes route = Méthode HTTP + URL put /users/:uid do uid [...] end http://www.sinatrarb.com ActiveLDAP ORM pour les objets LDAP http://ruby-activeldap.rubyforge.org/ B.Dexheimer (INRIA) User Management System 16 Juin 2011 15 / 34
Les interfaces d UMS Interface programmatique Technologies logicielles utilisées Sequel : gestion de la base de données DSL de construction de requêtes SQL Couche ORM entre Ruby et les bases de données Gestion des migrations http://sequel.rubyforge.org/ user = Grid5000::User.find(:uid => uid) RSpec 1 : tests unitaires http://rspec.info/ Mocks, Stubs, Expectations,... B.Dexheimer (INRIA) User Management System 16 Juin 2011 16 / 34
Les interfaces d UMS Interface programmatique Technologies logicielles utilisées Thin+Rack : composante serveur de l API Serveur Web + Interface Application-serveur web Thin : http://code.macournoyer.com/thin/ Rack : http://rack.rubyforge.org/ Rakefile : la glue entre les composantes du projet Makefile version Ruby http://rake.rubyforge.org/ rake start RACK ENV=development B.Dexheimer (INRIA) User Management System 16 Juin 2011 17 / 34
Les interfaces d UMS Interface programmatique Technologies logicielles utilisées Bundler : packaging Définition et construction de l environnement de l application Définir les Gems utilisées et leurs versions autorisées Gestion des dépendances inter-gems S assurer d avoir un environnement identique entre la machine de dev et celle(s) de production Aide au packaging de l application http://gembundler.com/deploying.html B.Dexheimer (INRIA) User Management System 16 Juin 2011 18 / 34
Les interfaces d UMS Interface programmatique Technologies logicielles utilisées Capistrano : Déploiement DSL pour formaliser le déploiement d une application sur son/ses serveur(s) de production machines POSIX, avec shell par défaut sh connexions SSH par clef publique https://github.com/capistrano/capistrano/wiki/ B.Dexheimer (INRIA) User Management System 16 Juin 2011 19 / 34
Plan Les interfaces d UMS 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 20 / 34
Création et utilisation d un objet : var p = new Profile(attributes); [...] B.Dexheimer (INRIA) User Management System 16 Juin 2011 21 / 34 Les langages utilisés Les interfaces d UMS L interface web est bâtie sur les langages classiques du web : XHTML 1.0 : squelette de la page CSS 2 : mise en forme + design Javascript Parties dynamiques de la page Développement POO en utilisant les prototypes
Les interfaces d UMS jquery (http://jquery.com/) Un framework très complet Propose une solution de codage élégante pour tous les champs d action de Javascript. Quelques exemples : Parcours du DOM et des éléments HTML avec les sélecteurs : Code plus compact et efficace Syntaxe cohérente avec la CSS B.Dexheimer (INRIA) User Management System 16 Juin 2011 22 / 34
Les interfaces d UMS Quelques exemples jquery Gestion des évenements : <selector>.live(event, handler) : attache un handler à l évènement qui surviendra aux éléments sélectionnés <selector>.trigger(event, data) : lance l exécution de tous les handlers attachés au sélecteur pour cet évènement. Gestion aisée des appels Ajax : jquery.ajax() Fournitures de handlers pré/post requête, sur échec, sur completion B.Dexheimer (INRIA) User Management System 16 Juin 2011 23 / 34
jquery UI Les interfaces d UMS Le complément IHM à jquery Efficace pour le développement d IHM Mise en oeuvre rapide et simple Thémable à volonté B.Dexheimer (INRIA) User Management System 16 Juin 2011 24 / 34
Les interfaces d UMS jquery UI : utilisation dans le projet Utilisation de widgets : Onglets : Les onglets sont générés au préalable par du code HTML <ul><li>...</ul> Zones de sélection : Les objets selectionnables sont générés au préalable par du code HTML <ul><li>...</ul> Boutons... : button() B.Dexheimer (INRIA) User Management System 16 Juin 2011 25 / 34
Les interfaces d UMS jquery UI : utilisation dans le projet Utilisation de widgets : Fenêtres de dialogue modale B.Dexheimer (INRIA) User Management System 16 Juin 2011 26 / 34
Les interfaces d UMS jquery UI : utilisation dans le projet Utilisation des classes CSS pré-définies par jquery Création de boites et éléments d interfaces qui récupèrent le design global ui-button ui-widget ui-state-default ui-corner-all ui-text-only ui-state-highlight ui-state-error Ces classes sont à utiliser sur des éléments HTML standards : <div>, <a> B.Dexheimer (INRIA) User Management System 16 Juin 2011 27 / 34
Les interfaces d UMS un plugin jquery : datatables Très efficace et complet pour afficher des tableaux de données dynamiques. Fonctions de tri par colonne, de recherche... Fournitures de hooks pour des traitements différenciés par ligne Peut intégrer plusieurs types de sources des données : DOM (post-analyse d un tableau HTML statique) Tableau Javascript Requête Ajax Script côté serveur Graphiquement avancé : Effet de dépliement de lignes Controles de pagination Thémable par JQuery B.Dexheimer (INRIA) User Management System 16 Juin 2011 28 / 34
Les interfaces d UMS datatables : un exemple de mise en oeuvre 2 datatables imbriquées B.Dexheimer (INRIA) User Management System 16 Juin 2011 29 / 34
Plan Conclusion 1 Grid 5000 : le contexte La plateforme un Système de Gestion des Utilisateurs (UMS) 2 Les interfaces d UMS Architecture globale Interface programmatique Généralités JQuery jquery UI datatables 3 Conclusion B.Dexheimer (INRIA) User Management System 16 Juin 2011 30 / 34
Conclusion Conclusion Les points vitaux Couverture du code en tests unitaires Prévient les régressions Aide au développement ( TDD) Le debugger Firebug Git Organiser facilement le workflow de développement multi-branches, multi-développeurs Redmine Planifier le développement : demandes de correctifs et fonctionnalités Garder la trace de l activité de développement Organiser la communication entre développeurs et utilisateurs B.Dexheimer (INRIA) User Management System 16 Juin 2011 31 / 34
Conclusion Conclusion (suite) Les points positifs Ruby et son écosystème jquery Gain de productivité Les points négatifs La documentations des gems Ruby L évolutivité des versions de Gems Nécessité de fixer les versions dans un intervalle pour stabiliser le projet (Gemfile) B.Dexheimer (INRIA) User Management System 16 Juin 2011 32 / 34
Conclusion Conclusion (fin) Et si c était à refaire... Rails 3? Rspec 2 Utilisation d un IDE Ruby plus intégré (Aptana)? B.Dexheimer (INRIA) User Management System 16 Juin 2011 33 / 34
... Conclusion Questions? B.Dexheimer (INRIA) User Management System 16 Juin 2011 34 / 34