Download - Développement d'une forge logicielle avec OSGi

Transcript
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