31
NovaForge ™, une forge logicielle OSGi Stéphane Benoist Guillaume Lamirand

Développement d'une forge logicielle avec OSGi

Embed Size (px)

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

Citation preview

Page 1: Développement d'une forge logicielle avec OSGi

NovaForge ™, une forge logicielle OSGi

Stéphane Benoist

Guillaume Lamirand

Page 2: Développement d'une forge logicielle avec OSGi

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 ...

Page 3: Développement d'une forge logicielle avec OSGi

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

Page 4: Développement d'une forge logicielle avec OSGi

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

Page 5: Développement d'une forge logicielle avec OSGi

5 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Qu'est ce que NovaForge ™ ?

Données métiers

Page 6: Développement d'une forge logicielle avec OSGi

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

Page 7: Développement d'une forge logicielle avec OSGi

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

Page 8: Développement d'une forge logicielle avec OSGi

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 ...

Page 9: Développement d'une forge logicielle avec OSGi

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

Page 10: Développement d'une forge logicielle avec OSGi

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 »

Page 11: Développement d'une forge logicielle avec OSGi

11 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

Page 12: Développement d'une forge logicielle avec OSGi

12 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

Page 13: Développement d'une forge logicielle avec OSGi

13 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

Page 14: Développement d'une forge logicielle avec OSGi

14 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Vue globale

Page 15: Développement d'une forge logicielle avec OSGi

15 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie « cœur »

Composition

Page 16: Développement d'une forge logicielle avec OSGi

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);

}

Page 17: Développement d'une forge logicielle avec OSGi

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;

Page 18: Développement d'une forge logicielle avec OSGi

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

Page 19: Développement d'une forge logicielle avec OSGi

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" />

Page 20: Développement d'une forge logicielle avec OSGi

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

Page 21: Développement d'une forge logicielle avec OSGi

21 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie «plugins»

Cycle de vie

Page 22: Développement d'une forge logicielle avec OSGi

22 ©Bull, 2011 Novaforge, une forge logicielle OSGi

Focus sur la partie «plugins»

Structure

Page 23: Développement d'une forge logicielle avec OSGi

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 ...

Page 24: Développement d'une forge logicielle avec OSGi

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

Page 25: Développement d'une forge logicielle avec OSGi

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

Page 26: Développement d'une forge logicielle avec OSGi

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

Page 27: Développement d'une forge logicielle avec OSGi

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);

Page 28: Développement d'une forge logicielle avec OSGi

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

Page 29: Développement d'une forge logicielle avec OSGi

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...

Page 30: Développement d'une forge logicielle avec OSGi

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

Page 31: Développement d'une forge logicielle avec OSGi