Eve
La logique propriétaire fait partie de l’historique de Diatem et remonte aux origines de la société, il y a plus de 10 ans. Ce choix nous garantissait un niveau de performance et de sécurité élevé, adapté aux ambitions grandissantes de Diatem. Nous avions alors déployé notre CMS « maison », .EDIT, qui accompagna nos développements et nos clients pendant près de 7 ans.
L’offre technologique évoluant au fil des années nous avons su faire évoluer parallèlement notre « mix produit » pour proposer une réponse à de nouveaux besoins en adoptant nombre de solutions OpenSource. C’est ainsi que nous avons étoffé notre offre de développement en multipliant nos compétences sur les CMS OpenSource WordPress, Joomla, Prestashop, SPIP et Drupal.
De nouvelles problématiques
Une problématique s’est alors faite jour : comment acquérir rapidement un niveau de compétence suffisant sur l’ensemble des solutions pour conserver notre valeur d’expertise ? L’enjeu est de taille. Il garantit notre pérennité et notre crédibilité dans le créneau que nous nous sommes fixé : l’apport de solutions ad-hoc à des besoins clients pouvant être entièrement spécifiques et nécessitant la mise en oeuvre de solutions techniques variées et complexes.
Apporter une réponse à cette problématique s’avère un casse-tête lorsqu’on dispose d’une équipe de développement réduite. La diversification entraîne la nécessaire multiplication des compétences. Celle-ci entraîne de facto l’accroissement de l’investissement nécessaire. Investissement qui peut être humain ou formatif, avec le risque cependant de ne plus permettre la spécialisation spécifique requise aux développements lourds de nos clients.
Verticalité et horizontalité
Cette problématique part d’une représentation verticale du problème. Cette vision est centrée sur les compétences uniques nécessaires à la maîtrise de chaque solution. le postulat du principe d’une hétérogénéité des API de développement – et orientant les efforts de formation des équipes de développements dans une optique de multi-spécialisation.
Le framework Jin a pour ambition de répondre à la problématique en adoptant une représentation transversale du problème. Repartons de la base : que sont finalement Spip, WordPress, Joomla ou Drupal ? Rien de moins que des CMS, c’est à dire des logiciels permettant d’éditer et d’afficher du contenu destiné à Internet. Il n’est donc pas interdit de penser que les tâches et problématiques que nous aurons à prendre en considération seront globalement identiques. C’est le CMS qui induit une différenciation dans son implémentation. Adoptons donc une vision globale et identifions les tâches récurrentes (affichage d’interface dans le backOffice, connexion en base de données, outils de développement…), puis confions ces tâches à une solution unique, quel que soit le CMS employé. Nous conservons ainsi les spécificités et les qualités intrinsèques de chaque CMS tout en utilisant une base unique permettant d’accélérer les développements et les procédures de corrections de dysfonctionnements.
Le problème est ainsi retourné, la faiblesse identifiée transformée en force. On note ainsi :
- Une rationalisation des processus de développement
- Le lissage des efforts de développements sur un nombre de projets plus élevés
- Une diminution des dysfonctionnements. (Plus une solution est employée, moins les dysfonctionnements sont présents)
- Une réduction des efforts nécessaires en R&D appliquée aux CMS
Une histoire de roue
Une question peut alors se poser. Pourquoi choisir de développer un framework « maison » quand des solutions performantes existent déjà ? Après tout, pourquoi réinventer la roue ? Nous n’avons pas la prétention de faire mieux, ou d’apporter une révolutions aux frameworks existant déjà. En revanche nous nous devons de répondre à notre problématique client quotidienne : répondre à des besoins métier spécifiques.
Pour cela nous avons pour philosophie chez Diatem de tendre à la maîtrise complète des solutions que nous déployons chez nos clients. Cette philosophie se traduit à tous les maillons de la chaîne. Notre qualité d’hébergeur nous laisse libre des choix technologiques que nous effectuons en matière de technologie serveur. Ceci nous permet de garantir un niveau de réactivité et de disponibilité haut de gamme mais aussi d’installer éventuellement de nouveaux services serveur adaptés aux besoins. Le choix d’un framework « maison » nous permet de maîtriser l’intégralité du processus de développement, de faciliter et d’accélérer notre réponse face à des éventuels dysfonctionnements mais aussi et surtout de nous adapter rapidement à de nouveaux besoins. Il est un gage d’évolutivité et d’adaptabilité face aux requis technologiques et fonctionnels de nos clients. Contrairement aux choix historiques de Diatem, nous avons souhaité que notre framework Jin soit open-source. Pourquoi, parce que nous avons souhaité garantir à nos clients l’usage de solutions open source du début à la fin de la chaîne.
Anatomie d’une solution
Alors finalement qu’est ce que Jin ?
Jin n’est pas un moteur d’affichage de page. Il n’en a pas la vocation puisqu’il a pour but de se greffer à différents CMS, laissant donc ces tâches au logiciel natif. Jin est en revanche une boite à outils permettant d’accélérer certains aspects des développements. A l’heure actuelle quelles sont les possibilités offertes ?
- Base de données
- Connexion BDD (MySql, PostgreSQL et connecteurs spécifiques CMS) (jin/db/*)
- Requêtage simplifié en bases de données (jin/query/Query)
- Effectuer des requêtes de requêtes (jin/query/QueryOfQuery)
- Faciliter le traitement de résultats de requêtes. (jin/query/QueryResult)
- Communication
- Déploiement et appel de services REST sécurisés (jin/com/rest/*)
- Déploiement et appel de Webservices (jin/com/webservice/*)
- Travail facilité avec Curl (jin/com/Curl)
- Connexion boite mail IMAP (jin/mail/MailConnector)
- SSO (Authentification unifiée, via l’usage d’un serveur CAS) (jin/external/jasig/*)
- Communication facilitée avec ElasticSearch. (Construction de requêtes de recherche complexes) (jin/external/diatem/sherlock/*)
- Optimisation du développement
- Gestion des logs (jin/log/Log)
- Système de debug avancé (jin/log/Debug)
- Analyse des performances (jin/log/PerfAnalyser)
- Etendre PHP
- Travail facilité avec le système de fichiers (jin/filesystem/*)
- Classes facilitant le travail avec les listes, les tableaux, les numéraires, les chaînes et les objets temporels (jin/lang/*)
- Travail facilité avec Json (jin/dataformat/JSon)
- Accélérer et faciliter les développements front-end
- Composants d’affichage (jin/output/components/*)
- Gestion de formulaires (jin/output/form/*)
- Détection du contexte (Navigateur et Device) (jin/context/*)
- Envoi de mails avancés (jin/mail/MailSender)
- Gestion des traductions (jin/language/*)
- Mise en cache de données. (Support du cache fichier et Memcache) (jin/cache/*)
Let’s start !
Vous pourrez trouver des informations, ressources et exemples sur le site Diatem sur Github :
http://diatem-net.github.io/jinframework/
Les fichiers source sont eux disponibles sur leur espace Github :
https://github.com/diatem-net/jinframework
Une documentation des classes est disponible à la consultation :
http://supportweb.diatem.net/documentation/projet/7/documentation/
ou au téléchargement :
http://supportweb.diatem.net/documentation/projet/7/documentation.zip