Développement d'une forge logicielle avec OSGi

Post on 18-Dec-2014

883 views 3 download

description

NovaForge(TM) est une forge open-source permettant d'intégrer des outils visant à faciliter le développement de projets et de logiciels.Chaque outil est défini comme un fournisseur de services qui vient enrichir la liste des services disponibles de la forge. Pour appréhender les contraintes de modularité et de dynamisme, une plate-forme OSGI a été envisagée dès les premiers pas de la V3. Une autre des volontés de l'équipe a été de se baser principalement sur des standards J2EE (EJB3, JPA2, JMS) et des outils open-source bénéficiant d'une communauté importante (CAMEL, SHIRO, Shindig, OpenAuth...) pour bénéficier de l'experience acquise et faciliter les contributions externes. Nous allons vous présenter comment l'équipe a pu résoudre l'équation OSGI-J2EE en utilisant le travail effectué sur JOnAS et EasyBeans et l'implémentation IPojo. Guillaume Lamirand et Stéphane Benoist, Bull SAS

Transcript of Développement d'une forge logicielle avec OSGi

NovaForge ™, une forge logicielle OSGi

Stéphane Benoist

Guillaume Lamirand

2 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Plan

-Qu'est ce que NovaForge ™ ?

- Le produit

- Fonctionnalités

- Démonstration

-Architecture technique

- Retour d'expérience sur la version précédente

- Vue globale de la nouvelle version

-Retour d'expérience

-Pour le futur ...

3 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Qu'est ce que NovaForge ™ ?

- Forge de développement collaborative et d'entreprise

- Mutualisation des moyens de développements

- Amélioration de la productivité des équipes

- Optimisation de la communication inter-équipe

- Stratégie open-source

- Intégration d'outils open-source

- Gestion des faits techniques – Mantis

- Gestion électronique de documents – Alfresco

- Gestion des sources – SVN

- ...

Le produit

4 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Qu'est ce que NovaForge ™ ?

- Version 1 extension de GForge

- Forge interne à Bull France

- Version 2 basée sur le portail ExoPlatform

- Forge interne à Bull France: 50 projets avec 500 utilisateurs

- Bull Brésil et Espagne

- CETE, Schneider

- Version 3 avec un portail spécifique GWT

- Projet safr@n : Ministère de la défense

• Équipe répartie sur deux sites : 20 personnes

- Forge interne à Bull

• Migration

L'évolution du produit

5 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Qu'est ce que NovaForge ™ ?

Données métiers

6 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Qu'est ce que NovaForge ?

- Gestion des données métiers

- Choix des outils pour un projet

- Authentification unique

- Propagation des données vers les outils

Fonctionnalités

Fonctionnalités avancées

- Interaction entre les outils

- Agrégation de données – tableaux de bord

- Gestion de projet public ou privé

- Hiérarchie de forges

7 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Démonstration

-Création d'un utilisateur

-Création d'un projet

-Validation du projet par l'administrateur

-Création d'un rôle

-Association des deux autres utilisateurs aux projets

-Ajout d'une application

Démonstration fonctionnelle

8 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Plan

-Qu'est ce que NovaForge ™ ?

- Le projet et l'équipe

- Fonctionnalités

- Démonstration

-Architecture technique

- Retour d'expérience sur la version précédente

- Vue globale de la nouvelle version

-Retour d'expérience

-Pour le futur ...

9 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Retour d'expériences sur la version précédente

-Interruption de service suite à maintenance

- Maintenance à chaud

• Mise à jour des services de la forge

• Ajout, suppression et mise à jour d'un outil

-Complexité de construire une forge à la carte

- À l'installation

- À l'utilisation

- Déployer à chaud des versions différentes d'un même

outil

-Besoin de modularité et de dynamisme

- Cloisonnement en terme de responsabilités

- Mise en place de services dégradés

10 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Lexique

-Connecteur

- interface entre la forge et un outil

-« Plugin »

- Définie l'ensemble connecteur et outil

- Associé à la forge via un service spécifique

- un « plugin » ne peut pas venir étendre un autre « plugin »

11 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

12 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

13 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

14 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

15 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie « cœur »

Composition

16 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie « coeur »

- Proxy

- Contextuel

- Gère les permissions d'accès

• Développement d'un handler iPOJO

Structure

@Override

public Application addApplication(

@ResourceAuthorization(actions = { PermissionAction.CREATE }, resource = Application.class) final String pProjectId,

final String pApplicationLabel,

final UUID pPluginUUID,

final Map<String, String> pRolesMapping)

throws NodeServiceException

{

String username = this.authentificationService.getCurrentUser();

return nodeManager.addApplication(pProjectId, pParentNodeUri, pApplicationLabel, pPluginUUID,

pRolesMapping, username);

}

17 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie « coeur »

- Manager

- Contrôle de surface

- Contient les règles métiers

• Création d'un utilisateur

• Ajout de l’utilisateur au projet central

• Envoi d'un e-mail

- Session façade

- Composition de DAO

- Data Access Object

- Actions de persistance

Structure

@OSGiResource

private ProjectNodeSessionFacadeRemote projectNodeSessionFacadeRemote;

18 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Eléments externes

- Apache Shiro

- Gestion des éléments de sécurité

• Authentification

• Permissions

- Intégré à OSGi au niveau package

• Développement d'un service spécifique

- Hibernate

- Gestion de la persistence

- Implémentation de JPA 2.0

- Intégré à JOnAS

19 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Eléments externes

- OAuth

- Gestion du Single Sign-On

- Intégré dans le framework Shindig

- Non OSGi

- CXF - DOSGI

- Exposition de services OSGi en web services<property name="service.exported.interfaces" type="java.lang.String"

value="*" mandatory="true" />

<property name="service.exported.configs" type="java.lang.String"

value="org.apache.cxf.ws" mandatory="true" />

<property name="org.apache.cxf.ws.httpservice.context" type="java.lang.String"

value="/mantisService" />

20 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie «plugins»

Description

- Connecteur + outil

- Implémente une interface PluginService

- Détection de ce service par la forge

• Utilisation du WhiteBoard Pattern

- Gestion d'un cycle de vie spécifique

• Utilisation d'un annuaire interne

- Isolé grâce au Composite iPOJO

- Générique

- Services génériques pour la propagation

- Facilité d'intégration d'outils

21 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie «plugins»

Cycle de vie

22 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie «plugins»

Structure

23 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Plan

-Qu'est ce que NovaForge ?

- Le projet et l'équipe

- Fonctionnalités

- Démonstration

-Architecture technique

- Retour d'expérience sur la version précédente

- Vue globale de la nouvelle version

-Retour d'expérience

-Pour le futur ...

24 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Points positifs

- OSGi – iPOJO

- Gestion de versions

- Masque la complexité OSGi

- Facilite l'utilisation des patterns OSGi (Extender, WhiteBoard)

- Propose d'autres patterns (Composite)

- Concentration sur le code métier

- J2EE - Easybeans

- Mise en place d'un pont J2EE ↔ OSGi

- ESB – Camel Jonas

- Routage dynamique

- Utilisation de services OSGi

Facilité de développement

25 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Points positifs

- Intégration d'un nouveau membre à l'équipe

- Utilisation d'un panel de services disponibles

- Intégration d'IHM sans compétence OSGi

- Contributions externes

- Équipe projet décentralisée

• Échange de services

Facilité de contribution

26 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Points positifs

- OSGi

- Console Felix

- Introspection des bundles

- iPOJO

- Handler Architecture

- Introspection de l'état d'un POJO

- File install

- Configuration dynamique

Facilité de maintenance et de configuration

27 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Points négatifs

- Cycle de dépendances

- A > B > C > D > A

- « Granularité de la modularité »

- Où s’arrêter ?

- Manager, Session Façade et DAO

Composition de services

Utilisation J2EE ↔ OSGi

- Cloisonnement des classloaders avec J2EE

- JNDI, JavaMail

ClassLoader theGoodOne = getClass().getClassLoader();ClassLoader theOldOne = Thread.currentThread().getContextClassLoader();Thread.currentThread().setContextClassLoader(theGoodOne);

Context initalContext = new InitialContext();

Thread.currentThread().setContextClassLoader(theOldOne);

28 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Points négatifs

Utilisation J2EE ↔ OSGi

- Disponibilité en tant que bundle

Mise en place d'environnements distribués

- Utilisation de DOSGi avec Zookeeper

- Problème de synchronisation entre les services distants et

l'annuaire local

29 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Plan

-Qu'est ce que NovaForge ?

- Le projet et l'équipe

- Fonctionnalités

- Démonstration

-Architecture technique

- Retour d'expérience sur la version précédente

- Vue globale de la nouvelle version

- Retour d'expérience

-Pour le futur...

30 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Pour le futur ...

Améliorations

- Distribution et répartition

- Dynamisme avancé des IHMs et uniformisation

- Gestion de la sécurité

- Accès aux services centraux

- Cloisonnement > OSGi 4.3

Nouveautés

- Mutualisation d'outils entre forge

- Intégration d'un module LDAP

- Gestion de la migration et mise à jour

- Passage à l'échelle

- Solution de supervision > JASMINe