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
Top Related