Conception et développement d algorithmes distribués pour le moteur Baboukweb



Documents pareils
Architecture distribuée

Administration de systèmes

18 TCP Les protocoles de domaines d applications

Services Réseaux - Couche Application. TODARO Cédric

Sécurisation du réseau

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Rapport d activité. Mathieu Souchaud Juin 2007

Haka : un langage orienté réseaux et sécurité

Configuration Matérielle et Logicielle AGORA V2

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Competence Management System (Système de Gestion de Compétences)

ERP Service Negoce. Pré-requis CEGID Business version sur Plate-forme Windows. Mise à jour Novembre 2009

Fiche Technique. Cisco Security Agent

SÉCURISATION DES CONNEXIONS À DISTANCE SUR LES RÉSEAUX DE CONTRÔLE

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

RAPPORT DE CONCEPTION UML :

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Devenez un véritable développeur web en 3 mois!

Tarification comparative pour l'industrie des assurances

Adonya Sarl Organisme de Formation Professionnelle 75 Avenue Niel PARIS, France

Introduction. Adresses

DEMANDE D INFORMATION RFI (Request for information)

UserLock Quoi de neuf dans UserLock? Version 8.5

Serveurs de noms Protocoles HTTP et FTP

Introduction MOSS 2007

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

TASK Santé : Le protocole Pésit /TCP-IP

avast! EP: Installer avast! Small Office Administration

SSH, le shell sécurisé

MODALITES DE SUIVI DU PROJET ANNUEL DU MASTER 2 SOLUTIONS INFORMATIQUES LIBRES

L3 informatique Réseaux : Configuration d une interface réseau

Automatisation de l administration système

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Cisco Certified Network Associate

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

Logiciel de connexion sécurisée. M2Me_Secure. NOTICE D'UTILISATION Document référence :

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Serveur FTP. 20 décembre. Windows Server 2008R2

Fiche Technique Windows Azure

Organisation du parcours M2 IR Les unités d enseignements (UE) affichées dans la partie tronc commun sont toutes obligatoires, ainsi que le stage et

BES WEBDEVELOPER ACTIVITÉ RÔLE

NetCrunch 6. Superviser

Firewall IDS Architecture. Assurer le contrôle des connexions au. Sécurité 1

Programme des Obligations d épargne du Canada. Guide d utilisation du serveur FTPS. Version 2.4

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

«clustering» et «load balancing» avec Zope et ZEO

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

SECTION 5 BANQUE DE PROJETS

Fiche technique RDS 2012

Prototype de canal caché dans le DNS

Sécurité des réseaux Firewalls

Évaluation et implémentation des langages

IDEC. Windows Server. Installation, configuration, gestion et dépannage

GPC Computer Science

Guide d installation BiBOARD

CQP Développeur Nouvelles Technologies (DNT)

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

DSI - Pôle Infrastructures

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Standard. Manuel d installation

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Accéder à ZeCoffre via FTP

Réplication de données de classe entreprise pour environnements distribués et reprise sur sinistre

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

Manuel du client de bureau distant de KDE

BTS SIO option SISR Lycée Godefroy de Bouillon Clermont-Ferrand

Description des UE s du M2

Travailler à l'ensimag avec son matériel personnel

Définition. Caractéristiques. - Du partage des ressources : espace de stockage, imprimantes, lignes de communication.

ACQUISITION. Traitement de l image. Classement. Préparation. Ouverture. Performance

Microsoft Office system Février 2006

CQP ADMINISTRATEUR DE BASES DE DONNÉES (ABD)

Couche application. La couche application est la plus élevée du modèle de référence.

Gestion et sécurisation des échanges XcMon, PMPI 03.31/2004 PDB. Global Data Exchange System

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

OpenVPN Manager. Projet M2-ESECURE - Robin BUREL. Date 10 Janvier 2013 Tuteur : M. Richard

Déploiement d iphone et d ipad Gestion des appareils mobiles (MDM)

Espace de stockage intermédiaire. Compte de Messagerie. Communication «Asynchrone» «Compte de Messagerie»

Bien architecturer une application REST

Network musical jammin

Configuration du driver SIP dans ALERT. V2

Protocole SSH-2.0. Tuan-Tu, TRAN. Janvier 2009

W4 - Workflow La base des applications agiles

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Installation du transfert de fichier sécurisé sur le serveur orphanet

Tropimed Guide d'installation

Mettre en place un accès sécurisé à travers Internet

Cahier des charges (CDC)

SOMMAIRE 1. NOTRE AGENCE NOS PRESTATIONS NOTRE MÉTHODOLOGIE PROJET NOS OFFRES LES ATOUTS DE NOS OFFRES...

Fourniture d un outil de gestion du courrier électronique pour les sites internet de la Documentation Française

Service On Line : Gestion des Incidents

2 disques en Raid 0,5 ou 10 SAS

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

Transcription:

M2 I NFORMATIQUE D ÉPARTEMENT DE M ATHÉMATIQUES ET I NFORMATIQUE U NIVERSITÉ DE LA R ÉUNION R APPORT DE STAGE DE M ASTER M2 I NFORMATIQUE Conception et développement d algorithmes distribués pour le moteur Baboukweb Auteur : Jean-Christophe DALLEAU 31001664 Responsables : M. Anil C ASSAM -C HENAÏ M. Mickael F RANCOMME M. Pascal A NELLI 20 juin 2014

Remerciements : Avant de commencer, je souhaite remercier l ensemble des personnes qui m ont soutenu tout au long de cette période de stage. Dans un premier temps, je remercie M. Anil Cassam-Chenaï pour m avoir donné l occasion de réaliser mon stage au sein de sa société et pour avoir fait en sorte que tout se passe dans les meilleures conditions. En second lieu, je tiens à remercier mon tuteur, M. Mickael Francomme, pour m avoir suivi et encadré pendant ces six mois. Il a su prendre le temps de m épauler lorsque j étais en difficultés et m a fait bénéficier de ses connaissances et de son expérience. Enfin, je tiens également à remercier toute l équipe de logicells pour leur accueil et pour m avoir aidé à m intégrer au sein de la société. Plus particulièrement, je remercie Julien Boyer, Anthony Legros, Mathieu Bouvret et Imrane Sidat pour leurs conseils et pour leur bonne humeur qui a permis d instaurer un environnement de travail agréable.

Résumé : logicells est une société d éditions de solutions informatiques. Cette société possède un projet interne du nom de mobilité. Le but de ce projet est de faire intervenir au sein d un réseau, des noeuds mobiles. Ces noeuds mobiles peuvent cependant avoir des problèmes pour communiquer avec un serveur en fonction de l endroit où il se trouve et de l état de la couverture réseau. La société logicells voit dans les architectures distribuées une solution pertinente aux aléas précédemment cités. Cependant, afin de mettre en place cette solution, logicells à besoin d algorithmes prenant en compte le caractère distribuée de son architecture. L objectif de ce stage est donc de concevoir et de développer des algorithmes distribués pour le moteur BaboukWeb. Ces algorithmes devront gérer les transferts de données au sein de l architecture distribuée de l entreprise. Ils devront également pouvoir rendre applicable aux architectures distribués, des méthodes provenant d architectures classiques, comme la synchronisation des données. Ce document présente la gestion de projet mise en place afin de réaliser cet objectif. Il expose également les différentes étapes préliminaires nécessaires pour la réalisation de l objectif, ainsi que les différentes tâches annexes. Mots-Clés : Architecture distribuée, algorithme distribué, multiplateforme, BaboukWeb Abstract : logicells is a company who publishes IT solutions. This company has an internal project called mobility. The purpose of this project is to involve mobile nodes in a network. However, these mobile nodes can have some problems to communicate with a server, according to where they are and the quality of the network coverage. logicells think that distributed architecture is an appropriate solution to the issues previously mentioned. However, in order to implement this solution, logicells needs algorithm that take into account the distributed nature of its architecture. The main purpose of this internship is to design and develop distributed algorithms for the BaboukWeb engine. These algorithms have to manage data transfers in the distributed architecture of the company. They will also be able to make methods from classic architectures applicable to distributed architectures, such as data synchronization. This document presents the process of project management for the main purpose of the internship. It also shows the tasks performed in order to achieve the main purpose, as well as auxiliary tasks. Mots-Clés : distributed architecture, distributed algorithm, cross-platform, BaboukWeb

Table des matières Introduction 9 I L entreprise 10 1 Présentation de l entreprise 11 1.1 Le contexte............................... 11 1.2 L objectif................................ 11 1.3 Les activités de l entreprise....................... 12 1.4 L équipe................................. 12 2 Outils utilisés 13 2.1 Outil de communication........................ 13 2.2 Outil de contrôle à distance....................... 14 2.3 Outil de versionning.......................... 15 2.4 Outil de partage d information..................... 15 2.5 Outil de développement......................... 16 2.5.1 Embarcadero Delphi...................... 16 2.5.2 Lazarus............................. 16 2.5.3 L intérêt de ces deux outils................... 17 2.5.3.1 La méthode RAD.................. 17 2.5.3.2 Les outils de RAD.................. 17 3 Les projets réalisés par logicells 19 3.1 Projet Monétique............................ 19 3.2 Projet CERP............................... 19 II Les Missions et projets réalisés 21 4 La mission principale 22 4.1 Présentation générale du projet..................... 22 4.1.1 Le contexte........................... 22 4.1.2 Les besoins de l entreprise................... 23 5

4.1.3 Les objectifs du stage...................... 23 4.1.4 Étude de l existant....................... 23 4.1.4.1 Framework logicells................ 23 4.1.4.2 Travaux sur le distribué............... 24 4.2 Gestion de projet............................ 24 4.2.1 Le livrable prévisionnel.................... 24 4.2.2 L équipe projet......................... 25 4.2.3 Suivi du projet......................... 25 4.2.4 Diagramme de suivi du projet................. 25 4.2.4.1 Tâches prévisionnelles................ 26 4.2.4.2 Tâches réalisées................... 26 4.2.4.3 Bilan......................... 26 4.2.5 Analyse détaillée du projet................... 27 4.2.5.1 Stabilisation du module de distribution....... 27 4.2.5.2 Couches réseaux distribuées............. 28 4.2.6 Difficultés rencontrées..................... 29 4.2.7 Livrable effectif......................... 29 5 Les missions secondaires 30 5.1 Ns-3................................... 30 5.1.1 Présentation générale...................... 30 5.1.2 Modélisation d un réseau local................. 30 5.1.3 Conclusion........................... 31 5.2 Absraction des couches réseaux.................... 31 5.2.1 Présentation générale...................... 31 5.2.2 Les librairies.......................... 31 5.2.2.1 Synapse....................... 31 5.2.3 Implémentation d un serveur HTTP.............. 31 5.3 Test de montée en charge........................ 32 III Approfondissement 33 6 Implémentation d un serveur HTTP en utilisant la librairie Synapse 34 6.1 La librairie............................... 34 6.2 Le moteur de Pool Thread....................... 34 6.3 Les classes............................... 36 6.4 Gestion des événements......................... 36 6.5 Chaîne de traitement des requêtes................... 37 6.5.1 Exemple d utilisation du serveur................ 38 6

Conclusion générale 40 7.6 Le bilan des travaux........................... 40 7.7 Perspectives............................... 40 7.8 Compétences acquises......................... 40 7.8.1 La gestion de projet....................... 40 7.8.2 Le travail en équipe....................... 40 7.8.3 Le distribué........................... 41 7.9 Compétence utilisées en rapport avec la formation........... 41 7

Abréviations et acronymes utilisés : UDP IP TCP HTTP SSL TLS SSH RFC SVN API EDI RAD VCL LCL FPC BBW LXC User Datagram Protocol Internet Protocol Transmission Control Protocol Hypertext Transfer Protocol Secure Sockets Layer Transport Layer Security Secure Shell Request for Comments Subversion Application Programming Interface Environnement de développement intégré Rapid Application Development Visual Component Library Lazarus Component Library Free Pascal Compiler BaboukWeb Linux Containers 8

Introduction Dans le cadre du Master 2 Informatique de l Université de la Réunion, les étudiants ont l obligation de réaliser un stage de fin d études en entreprise afin d acquérir une expérience professionnelle et valider leur diplôme. Ce stage, d une durée de six mois, a pour but de mettre en pratique les connaissances acquises durant ces cinq années universitaires. Une société locale du nom de logicells m a donnée la possibilité de pouvoir réaliser ce stage. J ai pu ainsi bénéficier de l encadrement de M. Anil CASSAM-CHENAÏ et M. Mickael FRANCOMME. Au niveau universitaire, ce stage a été suivi par M. Frederic MESNARD. Pendant ces six mois, j ai travaillé sur un projet de création d algorithmes distribués pour le moteur BaboukWeb. Ce projet s inscrit dans la volonté de l entreprise de mettre en place sa propre architecture distribuée. Il a nécessité, dans un premier temps, de comprendre le fonctionnement des algorithmes distribués, ainsi qu un travail préliminaire sur certains modules du moteur BaboukWeb. Ce document est organisé en trois parties. La première présente d une manière générale l entreprise d accueil. La seconde partie expose l ensemble des travaux réalisés durant la période de stage et permet une compréhension de mon projet. Enfin, la troisième partie porte sur une des tâches réalisées et s attache à la décrire de manière approfondie. 9

Première partie L entreprise 10

Chapitre 1 Présentation de l entreprise Le but de cette partie est de présenter l entreprise d accueil à travers plusieurs de ses aspects, à savoir son contexte, ses objectifs, ses activités et son équipe. 1.1 Le contexte Créée en 2010, la société logicells est un projet issu de l Incubateur Régional de La Réunion. Cette société s investit à fournir des solutions informatiques aux entreprises souhaitant posséder des outils améliorant la gestion de leurs activités. Dans le but de rester compétitif sur ce marché, logicells a développé son propre framework 1. Celui-ci intègre de nombreuses fonctionnalités destiné à la gestion des entreprises. 1.2 L objectif L objectif de logicells est d ajouter d autres fonctionnalités à son framework afin de le rendre plus riche. Ce dernier étant à la base des projets de la société, il est important de le mettre continuellement à jour et de le faire évoluer afin de fournir aux développeurs des moyens de développement toujours plus efficace et permettant de répondre précisément aux besoins des clients. Posséder un framework riche, performant et permettant de satisfaire avec précision les besoins d un client est un atout majeur, car il permet de faire la différence entre les produits logicells et les produits concurrents. Ainsi, l évolution du framework est essentiel pour logicells. 1. Support de développement logiciel fournissant un ensemble de fonctionnalités dans le but de faciliter et accélérer la création d applications 11

1.3 Les activités de l entreprise Les activités de logicells sont centrées sur son serveur d application Web 3.0 sémantique. Ce serveur d application est basé sur le moteur BaboukWeb. logicells réalise la conception et de développement de solutions informatiques. Ces solutions sont réalisées sur mesure afin d être en adéquation avec les besoins des professionnels. Les produits logicells sont développés grâce au framework du même nom et sont basés sur le moteur BaboukWeb. Celui-ci apporte des outils d informatique décisionnelle et sémantique. Ainsi, les produits logicells permettent de faciliter la prise de décision en fournissant une gestion simplifiée des activités d une entreprise dans différents domaines (ressources humaines, économique,...) Les produits logicells vise en particulier les décideurs et les dirigeants des PME/PMI 2. 1.4 L équipe L équipe logicells est constituée essentiellement de jeunes ingénieurs, issus en priorité du secteur régional. Chaque membre de l équipe dispose d un niveau d expertise dans certains domaines. Ainsi, les groupes de travail chez logicells se forment en fonction des besoins des projets. L équipe est constituée de chefs de projets, chargés de la conception de nouveaux systèmes en fonction des besoins. Ces systèmes sont ensuite implémentés par l autre composante de l équipe, les ingénieurs. logicells prend régulièrement des stagiaires pour épauler ses activités. Ces stagiaires sont encadrés par des développeurs, ce qui leur permet une acquisition de compétences ciblée et optimisée. 2. Petites et moyennes entreprises / Petites et moyennes industries 12

Chapitre 2 Outils utilisés L entreprise utilise un certain nombre d outils au quotidien pour travailler et communiquer. Afin de pouvoir moi aussi utiliser ces outils, j ai du dans un premier temps me familiariser avec ceux qui m étaient inconnus. 2.1 Outil de communication Le principal outil de communication au sein de logicells est Skype. Il a été choisi, en dépit d autres solutions comme AIM ou Google Hangouts, grâce à sa popularité. En effet, la majorité des employés de l entreprise connaissent et utilisent déjà Skype, et sont donc à l aise avec lui. Cependant, ils n ont pas forcément entendu parler des autres outils et ne les ont potentiellement jamais utilisés. Le choix de Skype permet donc aux employés d utiliser un outil familier et évite les problèmes liés à un manque de connaissance de l application. La société logicells disposant de locaux sur Saint-Denis et sur Saint-Pierre, Skype permet de s affranchir des problématiques de travail à distance. C est un outil gratuit et multiplateforme qui permet, grâce à sa communication orale, d organiser des sessions de débogage sur des problèmes que nous pouvons rencontrer. Il est également possible d avoir des conversations en visioconférence, utile lors des réunions internes en entreprise. Enfin, Skype permet de partager des fichiers simplement et rapidement, et son système d archivage offre la possibilité de garder une trace des conversations, afin de retrouver facilement une discussion en particulier. La sécurité des données étant un élément très important, surtout pour une entreprise, Skype offre certaines garanties à ce sujet. Sur Skype, un certificat numérique 1 est assigné à chaque utilisateur. Ainsi, il est possible d authentifier un interlocuteur par son certificat afin de s assurer de son identité. Toutes les conversations Skype sont également cryptées à l aide d algorithmes de chiffrement, afin d assurer la confidentialité des utilisateurs ainsi que l intégrité des données échangées. 1. Peut être vu comme une carte d identité numérique 13

Dans mon cas, Skype a été mon principal moyen de communication avec mon tuteur. En effet, étant sur Saint-Denis et lui sur Saint-Pierre, Skype nous a permis d avoir des communications orales en dépit de la distance, que ce soit pour obtenir des solutions ou pour discuter de l avancement du stage. 2.2 Outil de contrôle à distance Les prises de contrôle de machine à distance au sein de logicells se font par l intermédiaire de l application TeamViewer. De par sa simplicité d utilisation, cet outil a été préféré à d autres comme l outil de connexion de bureau à distance de Windows. Ce dernier est utilisé essentiellement pour des interventions sur les serveurs de la société. TeamViewer fonctionne grâce à un système d identifiant et de mot de passe. Au lancement de l application, un identifiant unique est généré, ainsi qu un mot de passe temporaire. Ce sont ces informations que l on doit partager avec la personne souhaitant démarrer une prise de contrôle à distance sur notre poste. FIGURE 2.1 Extrait de l interface de TeamViewer Afin d utiliser TeamViewer, il n est donc pas nécessaire de connaître son adresse Ip. De même, il n y a aucune modification à effectuer au niveau du pare-feu, car aucune ouverture de ports n est requise. Enfin, toutes les connexions TeamViewer sont cryptées afin de les protéger de tout accès par des tiers. Couplé à un outil de communication comme Skype, ce logiciel permet d organiser des sessions de débogage poussées avec une personne distante, cette dernière ayant les erreurs sous les yeux. Teamviewer a permis à mon tuteur d intervenir directement sur certaines de mes erreurs nécessitant ses connaissances. 14

2.3 Outil de versionning Subversion (SVN) est un outil de versionning qui permet de gérer les différentes version d un logiciel sur un serveur centralisé, le dépôt. Fonctionnant sur le mode client-serveur, il offre la possibilité de garder sur une machine cliente une copie locale d un projet (update) et d envoyer sur le serveur les éventuelles modifications apportées (commit). C est donc un logiciel permettant de partager l information tout en «versionnant» les fichiers à chaque commit. TortoiseSVN, qui est un client SVN avec une interface graphique, est l outil de versionning utilisé par logicells. Les systèmes de versionning centralisés ont cependant un gros point faible : le serveur. En effet, si celui-ci est indisponible, il est impossible de récupérer des fichiers ou d enregistrer des modifications. Pire encore, si le disque dur du serveur se corrompt est qu il n y a aucune sauvegarde, c est tout le dépôt qui est perdu. La société logicells souhaite donc pouvoir évoluer vers un système de versionning distribué, où les machines clientes n extraient plus seulement la dernière version d un fichier mais dupliquent complètement le dépôt. Le choix du système serait en faveur de Git, qui considère les données d une manière différente des autres systèmes de versionning. Ces derniers considèrent l information qu ils gèrent comme une liste de fichiers ainsi que les modifications effectués sur chaque fichier dans le temps. Git pense ses données comme un instantané d un mini système de fichiers. En effet, à chaque sauvegarde de l état d un projet dans Git, ce dernier prend un instantané de l espace de travail et lui attribue une référence qu il enregistre. Ainsi avec Git, la majorité des opérations sont locales, car une copie du dépôt est disponible. Il est donc possible de pouvoir travailler sans connexion et de quand même pouvoir gérer ses versions. Un système centralisé comme SVN permet, sans connexion, d éditer les fichiers, mais il est impossible de soumettre les modifications au serveur et donc de gérer les versions. Git permet donc d apporter une souplesse particulière dans le travail. 2.4 Outil de partage d information Evernote est un logiciel permettant d enregistrer des informations textuelles et multimédias. Ces informations sont synchronisées avec un serveur afin de les rendre accessibles sur tous les appareils. Elles peuvent être partagées uniquement à des personnes ciblées, ou publiquement. Evernote est une application multiplateforme disponible aussi en tant que RIA 2. 2. Rich Internet Application 15

Evernote permet aux membres de l entreprise d enregistrer des informations sous forme de note pour un usage ultérieur, ou pour les partager avec d autres personnes. En version gratuite, l application est limitée à 60 Mo de synchronisation chaque mois. Cependant, cela est amplement suffisant pour les besoins de logicells. Le peu de restriction de la version gratuite d Evernote est justement l argument qui a justifié le choix de son utilisation. Par exemple, la version gratuite de l application concurrente OneNote, malgré le fait qu elle ne présente aucune restriction de débit, ne permet pas d enregistrer des fichiers au format PDF ou des vidéos. Notons également la présence de l application Google Keep, qui permet elle aussi de prendre des notes, mais sans pouvoir les partager. Evernote a permis, en notant chaque jour les travaux effectués, un suivi quotidien du stage par mon tuteur. Ce dernier était donc au courant de l avancement des tâches, mais aussi des divers problèmes rencontrés. 2.5 Outil de développement La société logicells utilise principalement deux outils de développement : Embarcadero Delphi Lazarus 2.5.1 Embarcadero Delphi Embarcadero Delphi, souvent abrégé en Delphi, est un EDI propriétaire fonctionnant sous Windows. Il implémente une version orientée objet du langage Pascal, le Pascal Objet, plus connu sous le nom «Langage de programmation Delphi». Delphi possède une bibliothèque de composants visuels et non visuels, appelée Visual Component Library (VCL). Elle permet de pouvoir rapidement concevoir une application graphique en masquant les appels aux API Windows, ces derniers pouvant s avérer complexes. Delphi est un EDI propriétaire. Il est nécessaire d acheter une licence afin de pouvoir l utiliser. Cette dernière est très onéreuse. Delphi est l outil principalement utilisé par logicells lors des travaux de développement d application Windows. 2.5.2 Lazarus Lazarus est l autre outil de développement utilisé chez logicells. En raison de la nature payante de Delphi, c est également l outil que j ai principalement utilisé pendant ma période de stage. 16

Egalement un EDI, Lazarus est développé en Free Pascal, un compilateur pour Pascal développé en tant que logiciel libre. Son objectif est de pouvoir offrir aux programmeurs Pascal Objet un environnement similaire à celui de Delphi. Ce dernier ne possède d ailleurs pas les possibilités multiplateforme de Lazarus. En effet, Free Pascal fonctionne sous Linux, Win32, OSX, BSD, etc. Lazarus dispose lui aussi d une bibliothèque de composants visuel et non visuels, la Lazarus Component Library (LCL), qui est conçue pour être multiplateforme. Elle est inspirée de la VCL de Delphi mais n est pas à 100 % compatible avec elle. Lazarus est utilisé par logicells pour les travaux multiplateforme. C est cet outil qui a permis le portage du framework BaboukWeb en multiplateforme. 2.5.3 L intérêt de ces deux outils Lazarus et Delphi sont ce qu on peut appeler des outils de Rapid Application Development (RAD). Il ne faut pas confondre les outils de RAD et la méthode RAD en elle-même. 2.5.3.1 La méthode RAD Le Rapid Application Development, ou développement rapide d applications, est une méthode de développement dites «agile». Les méthodes de développement agiles reposent sur un cycle de développement qualifié d itératif et d adaptatif. Ces méthodes permettent d impliquer au maximum le demandeur d un projet tout au long du cycle de développement en développant une version minimale du produit (un prototype), et en intégrant les fonctionnalités par un processus itératif basé sur ses tests et ses impressions. Il est ainsi possible d avoir une grande réactivité aux demandes du client. Le terme «agile» fait ainsi référence à la capacité d adaptation aux changements et aux modifications de spécifications intervenant pendant le processus de développement. La méthode RAD consiste en un cycle de développement court basé sur trois étapes systématiques : Le cadrage, qui permet de définir un espace d objectifs, de solutions et de moyens Le design, où l on modélise la solution La construction qui va permettre de réaliser un prototype actif 2.5.3.2 Les outils de RAD Les outils de RAD, comme Delphi et Lazarus, sont des logiciels utilisables dans le cadre de la méthode RAD. Grâce à leur interface graphique dotée de nombreux outils et de modules prêts à l emploi, ils permettent d obtenir très rapidement des prototypes. 17

FIGURE 2.2 Interface de Lazarus 18

Chapitre 3 Les projets réalisés par logicells Le but de cette partie est de présenter quelques exemples de projets réalisés par la société logicells. 3.1 Projet Monétique Monétique est un projet réalisé en collaboration avec la société RunCartes. Il consiste à mettre en place un système de cartes cadeaux pour les entreprises dont l activité gravite autour de la vente de produits. Ce système permet de proposer à sa clientèle des cartes cadeaux qui pourront êtres offertes. Le système de cartes cadeaux est décomposé en deux parties : Une partie Web service 1, qui permet de gérer toute la partie transactionnelle lors de l utilisation d une carte cadeau. Une partie Back office 2, qui englobe toutes les activités de contrôles, et d administrations relatives à l ensemble des cartes cadeaux en circulation et aux entreprises utilisant le système. 3.2 Projet CERP CERP est un projet réalisé grâce au framework logicells. Il consiste à réaliser un système de prise de commandes de produits pharmaceutiques. L application résultant du projet est destinée à être installée sur des ordinateurs mais aussi sur les tablettes des commerciaux. Les commandes sont donc prises à partir de terminaux mobiles. 1. Méthode de communication et d échange de données entre applications et systèmes hétérogènes dans des environnements distribués : internet ou intranet. 2. Ensemble des activités de supports, de contrôle, d administration d une entreprise. 19

Chaque tablette se synchronise à un serveur centralisé. Ainsi, les informations relatives à une commande passée sont partagées entre les différents commerciaux, selon des règles de filtrages. Chaque commande passée est également sauvegardée. De par l utilisation de terminaux mobiles, le projet CERP s inscrit dans un projet plus globale qui est interne à l entreprise : le projet mobilité. 20

Deuxième partie Les Missions et projets réalisés 21

Chapitre 4 La mission principale 4.1 Présentation générale du projet 4.1.1 Le contexte Comme énoncé à la partie 3.2 de la page n o 19, la société logicells possède un projet interne qu elle a nommée mobilité. Le projet mobilité vise à faire intervenir au sein d un réseau des noeuds sans aucunes contraintes physiques, appelés noeuds mobiles. Le déplacement de ces noeuds mobiles conduit à ajouter du dynamisme au sein du réseau. Cette mobilité apporte son lot de problématique. Dans un premier temps, on observe un problème de connectivité. Dans le cas d une architecture centralisée, la communication avec le serveur est primordiale. Avec un terminal mobile, la qualité de cette communication est dépendante de l environnement réseau de ce dernier (disponibilité, performance). Ainsi, avec une faible couverture réseau, la communication avec un serveur sera difficile, voir impossible (déconnexion fréquente, débit limité), et ne permettra pas de travailler correctement. L intérêt d un terminal mobile est de pouvoir travailler peu importe le lieu, sans se soucier des problèmes de connectivités. Dans ce contexte particulier, les architectures distribuées 1 apportent une solution pertinente vis-à-vis des aléas existants. En s appuyant sur cette étude, la société a décidé d incorporer au coeur de son moteur BaboukWeb les technologies de distribution que nous connaissons aujourd hui. Néanmoins, des différences notables existent entre les architectures classiques et les architectures distribuées. Le projet CERP fait état d un bon cas d école au travers de sa synchronisation des données : Dans une architecture centralisée, un noeud se synchronise à un serveur. C est ensuite ce serveur qui est chargé de fournir les données synchronisées aux autres 1. Une architecture est distribuée quand toutes les ressources ne se trouvent pas au même endroit. Ce concept s oppose à celui des architectures centralisées comme le client-serveur. 22

noeuds du réseau. Dans une architecture distribuée, tous les noeuds sont égaux. À qui se synchroniser? Un noeud ne peut pas transmettre ses données à tous les autres noeuds du réseau, car il risque de l inonder. Il faut donc posséder des algorithmes prenant en compte le côté distribuée de notre architecture. 4.1.2 Les besoins de l entreprise La société logicells éprouve donc le besoin de posséder des algorithmes distribuées afin d assurer le fonctionnement de son architecture. Elle souhaite également pouvoir valider et développer de nouvelles architectures validant l abstraction réseaux. Le but de cette abstraction est de rendre applicables aux architectures distribuées, des méthodes provenant des architectures centralisées et inveresement. 4.1.3 Les objectifs du stage Afin de pouvoir aider logicells à satisfaire ses besoins, mon objectif principal durant ce stage a été de concevoir et développer des algorithmes distribués pour le moteur BaboukWeb. 4.1.4 Étude de l existant Cette partie expose les différents travaux réalisés par l entreprise avant le début du stage. Elle me permet également de présenter le framework logicells. 4.1.4.1 Framework logicells Développé et enrichi au fil des années par la société, le framework logicells est au coeur des projets réalisés par l entreprise. Intégrant de nombreuses fonctionnalités métiers destinées à la gestion des entreprises, ainsi que des mécanismes de sémantiques, le framework permet à logicells de répondre aux besoins de ces clients en leur proposant un outil de gestion et d aide à la décision. Le framework dispose d un module lié au distribué, dont le but est de permettre la transmission des données au sein d une architecture distribuée. C est sur ce module que j ai travaillé pendant ma période de stage afin de pouvoir développer des algorithmes distribués. BaboukWeb étant un framework multiplateforme, il faudra s assurer que les algorithmes conçus disposeront aussi de cette caractéristique. 23

FIGURE 4.1 Caractéristiques du framework logicells 4.1.4.2 Travaux sur le distribué Lors de mon arrivée dans l entreprise, des travaux avait déjà été réalisés afin de mettre en place une architecture distribuée. Ces travaux permettaient la communication entre les noeuds de l architecture en suivant les recommandations du protocole de routage PASTRY. Des nouveaux éléments ont également fait leur apparition au sein de l architecture distribuée : les moniteurs. Leur but est de pouvoir récupérer des informations au niveau du système hôte d un noeud, comme par exemple : Le taux d utilisation du processeur La quantité de mémoire utilisée... Toutes ces informations nous permettront, en les analysant, de prendre des décisions sur les stratégies distribuées à appliquer. 4.2 Gestion de projet 4.2.1 Le livrable prévisionnel Le produit attendu par logicells au terme de cette période de stage est un ensemble d algorithmes distribués multiplateformes. 24

Un algorithme distribué décrit la manière de faire transiter des informations de noeuds en noeuds au sein d une architecture distribuée. Il peut être semblable à un protocole. 4.2.2 L équipe projet Afin de mener à terme ce projet, j ai pu bénéficier du soutien et de l encadrement d une équipe. Pour commencer, ce projet a été supervisé par M. Anil CASSAM-CHENAÏ. Le suivi et l avancement de ce projet ont été assurés par M. Mickael FRANCOMME. J ai pu ainsi profiter de son encadrement technique et méthodologique. En effet, il m a apporté les briques de connaissances requises à la réalisation de ce projet. De plus, il a su me conseiller et m aiguiller lorsque je rencontrais des difficultés. J ai aussi pu bénéficier de son expérience concernant la rédaction et l amélioration de ce mémoire. Enfin, M. Julien BOYER a participé à ce projet en m apportant un encadrement méthodologique. Il a également contribué à la rédaction et à l amélioration de ce document, mais j ai surtout pu bénéficier de ses conseils en matière de gestion de projet. 4.2.3 Suivi du projet Nous avons choisi de mettre en place une méthodologie issue des méthodes agiles pour la gestion de ce projet. En effet, le temps passé dans l entreprise étant limité par la période de stage, il est impératif d avancer le plus rapidement possible. De plus, les ressources attribuées au développement de l architecture et des algorithmes distribués étant limitées, il a fallu être capable de s adapter rapidement aux changements de besoins de l entreprise. Le choix des méthodes agiles prend ici tout son sens. Nous avons utilisé un modèle en spirale pour le développement du projet. Cependant, nous avons opté pour une architecture de livraison par fonction. En effet, plutôt que de livrer un prototype à la fin de chaque itération d un cycle, nous fournissons une fonction qui viendra compléter notre produit. 4.2.4 Diagramme de suivi du projet Les plannings sont conçues, dans le cas des méthodes agiles, en se basant sur les fonctionnalités prioritaires émises par le client. Dans mon cas, le planning était établi au début de chaque mois en fonction des projets sur lequels j était affecté et des travaux que j allais me voir confier par mon tuteur de stage. Dans cette section, je présente dans un premier temps un tableau des tâches prévisionnelles pour la conception et le développement des algorithmes distribués. Dans un deuxième temps, j expose un tableau listant l ensemble des tâches 25

réalisées durant la période de stage. Enfin, grâce à ces deux tableaux, je réalise un bilan en comparant les tâches prévues au début du stage et les tâches effectives à la fin de ce dernier. 4.2.4.1 Tâches prévisionnelles Le tableau ci-dessous représente l ensemble des tâches initialement prévues au début du stage. FIGURE 4.2 Tableau des tâches prévisionnelles 4.2.4.2 Tâches réalisées Nous avons vu dans la partie précédente le tableau des tâches prévisionnelles au début du stage. Le tableau ci-dessous liste les tâches réalisées durant toute la période de stage. 4.2.4.3 Bilan FIGURE 4.3 Tableau des tâches réalisées Cette partie a pour but de comparer et de commenter les différences entre les deux tableaux présentés plus haut. 26

En observant les deux tableaux, on peut remarquer que plusieurs tâches qui étaient prévues au début du stage n ont pas était réalisées au cours de ce dernier. À l inverse, certaines tâches réalisées n étaient tout simplement pas prévues au préalable. Lors de la réalisation de l objectif principal, j ai été confronté à divers problèmes. Ces problèmes, non pris en compte lors de la réalisation du planning prévisionnel, ont dû être traités. Il a donc fallu monter en charge sur des tâches imprévues, ce qui a eu pour effet de décaler le planning, provoquant un retard au niveau de la réalisation de la mission principale. En informatique et dans les autres domaines, les projets accusent souvent un retard lors de leur livraison. La principale cause de ce retard est justement la nécessité de s occuper de tâches non prises en compte lors de la conception du planning. Ainsi, il est nécessaire d avoir une gestion de projet solide afin de pouvoir livrer un projet avec le minimum de retard possible. Une autre raison pouvant expliquer cette différence entre les tâches prévues et effectives, et que le stage réalisé est dit «exploratif». Il pousse le stagiaire à explorer un ensemble de solutions. Lorsqu une solution se révèle inappropriée, une autre piste doit être étudiée. 4.2.5 Analyse détaillée du projet Au sein de cette partie, je présente en détails les différentes étapes sur lesquelles l équipe projet a dû travailler afin de mener à bien la mission principale. 4.2.5.1 Stabilisation du module de distribution Comme on peut le voir sur la figure 4.1 de la page n o 24, une des principales caractéristiques du framework logicells est d être multiplateforme. Ainsi, afin de respecter cette caractéristique et avant de pouvoir entamer le développement des algorithmes distribués, nous nous sommes occupés de notre module de distribution. En effet, opérationnel sous Windows, celui-ci ne fonctionnait pas correctement sous les systèmes de type Linux et OS X. Il a donc fallu réaliser une phase de stabilisation afin de rendre ce module disponible, peut importe la plateforme. Cette tâche a été effectuée en collaboration avec mon tuteur. Pour ma part, je me suis concentré sur de la stabilisation pour les systèmes Linux. La première étape a été de mettre en place l architecture. Pour ce faire, j ai participé avec mon tuteur à la mise en place de l architecture au niveau conceptuel. Je me suis ensuite intéressé au multithreading 2 3, qui n est pas géré de la même manière sous Windows et sous les environnements UNIX. Il était alors nécessaire d ef- 2. Un thread, ou fil d exécution, représente l exécution d un ensemble d instructions. 3. On parle de multithreading lorsqu un programme est capable d être exécuter par plusieurs threads simultanément. 27

fectuer des recherches sur ce sujet. Mes recherches, portant sur l environnement multithreading multiplateforme sous Pascal, m ont permis de lister les différentes pratiques à mettre en place lors d un développement multithreading avec FreePascal 4. 4.2.5.2 Couches réseaux distribuées Après avoir terminé la stabilisation de notre moteur de distribution, nous nous sommes attelés à la dernière étape préliminaire pour le développement de nos algorithmes. Cette étape consiste à tester nos couches réseaux distribuées. Elle a été réalisée en collaboration avec mon tuteur. Cependant, en abordant cette tâche, nous avons rencontrés des difficultés. Nous avons en effet constaté certains problèmes sous OS X. Ces problèmes concernent l utilisation de plusieurs sessions utilisateurs au sein de notre serveur. En effet, nous avons pu remarquer des erreurs lors de la récupération de la session d un utilisateur ou encore des mélanges de données entre deux sessions. Globalement, le problème semblait être lié aux sessions et en particulier à l apparition d un thread. Nous avons donc vérifié par nous-même et avons découvert que les sockets mises à disposition par notre librairie n était pas thread-safe 5. A ce stade, nous avons dû prendre une décision : retravailler la librairie et la stabiliser en fonction de nos besoins ou développer notre propre solution. Afin de stabiliser la librairie, il est nécessaire d étudier sa documentation. Cependant, la documentation fournie est principalement destinée aux développeurs voulant utiliser la librairie et aucune documentation concernant son architecture n est disponible. Ainsi, la solution restante est d étudier le code afin de se renseigner sur l architecture. La librairie étant très volumineuse, cela demanderait énormément de temps pour l étudier en vue d une stabilisation. De plus, les tests implémentés au sein de la librairie nécessitent eux aussi une stabilisation. D une part, ils sont basés sur une ancienne version de la librairie, ce qui implique des potentiels problèmes de versioning. Ensuite, ces tests portent sur les fonctions principales de la librairie, mais ils ne traitent pas la totalité des cas possibles. Enfin, le site officiel de la librairie annonce un fonctionnement intégral avec Linux et Windows, mais pas OS X. Le stage étant à dominante multiplateforme, il nous faudrait donc prendre en compte le développement des couches adjacentes pour ce travail. Toutes ces raisons nous ont donc poussé à réaliser notre propre abstraction des couches réseaux. Cette abstraction nous permettra une certaine modularité en rendant abstraite toute notre couche d interface réseaux. Elle sera donc facilement utilisable avec le framework BaboukWeb. 4. compilateur pour le langage Pascal, développé en tant que logiciel libre 5. Un programme est thread-safe lorsqu il est capable de fonctionner correctement lors d une exécution simultanée par plusieurs threads. 28

4.2.6 Difficultés rencontrées Tout au long du déroulement du projet, nous avons été confrontés à des difficultés. En apportant des solutions à ces difficultés, nous sommes montés en charge sur des tâches non prévues au niveau du planning prévisionnel. En décalant à chaque fois le planning, ces tâches imprévues ont engendrées du retard par rapport au projet principal. La principale difficulté rencontrée durant le projet concerne notre problème de librairie, qui est décrit au sein de la partie 4.2.5.2. En effet, nous étions dans l impossibilité de continuer le projet tant que ce problème n était pas résolu. Nous avons donc apporté une solution au problème en réalisant notre propre abstraction des couches réseaux. Cependant, le temps nécessaire à la réalisation de cette abstraction est très important. De ce fait, le projet d algorithmes distribués a dû être mis en pause et nous avons entamés la réalisation de l abstraction des couches réseaux. 4.2.7 Livrable effectif Le livrable effectif à la fin de la période de stage ne correspond pas au livrable prévisionnel. Cependant, de part le travail d exploration fourni et les solutions que nous avons apporté aux divers problèmes rencontrés, nous avons pu préparer le terrain et fournir les premières briques nécessaires à la conception et au développement d algorithmes distribués. 29

Chapitre 5 Les missions secondaires Tout au long de cette période de stage, mon projet s est enrichi de tâches secondaires qu il a fallu traiter. Cette partie expose quelques-unes de ces tâches. 5.1 Ns-3 Afin de pouvoir mettre en place un environnement de test, je me suis intéressé à un outil de simulation de réseau : Ns-3. 5.1.1 Présentation générale Ns-3 est un simulateur de réseau à évènement discret, utilisé principalement dans le domaine de la recherche et de l éducation. C est un outil libre qui a vu le jour en 2006. Une simulation à événements discrets est un type de modélisation où l état d un système est représenté par une séquence chronologique d événements discrets. Ce type de simulation s oppose à la simulation continue, où le temps est découpé en tranche égales, sans que l on puisse distinguer d événements. 5.1.2 Modélisation d un réseau local Après une période d apprentissage de l outil, je me suis attelé à la mise en place de mon environnement de test en modélisant un réseau. J ai choisi de créer un réseau local composé de quatre noeuds, chacun représentant un terminal de fin de ligne. Chacun de ces noeuds est relié à un switch central, chargé d assurer la commutation des paquets entre ces derniers. 30

5.1.3 Conclusion L outil Ns-3 m a permis de simulé un réseau local fonctionnel. De plus, il m a également été possible d envoyer au sein de ce réseau simulé des données réelles provenant de ma machine. Ns-3 nous permettra donc de bénéficier d une plateforme de test pour nos algorithmes distribués. 5.2 Absraction des couches réseaux Comme énoncé à la partie 4.2.5.2 de la page n o 28, la société logicells a décidé d implémenter l abstraction de ses couches réseaux. Cette abstraction concerne les protocoles HTTP, TCP et UDP. Nous nous sommes dans un premier temps concentré sur le protocole HTTP en mettant en place un serveur, puis un client. 5.2.1 Présentation générale Le projet s articule autour d une refonte sur les parties de communications. L objectif de ce travail est d abstraire des librairies afin d implémenter une interface unique de gestion des communications. 5.2.2 Les librairies Les librairies à abstraire seront choisis en fonction de leurs compatibilités avec la plateforme étudiée. 5.2.2.1 Synapse La première librairie étudiée est Synapse. Elle a été choisi, car elle est compatible avec Windows, Linux et OSX. Cependant, la librairie Synpase ne possède aucune implémentation de serveur. Nous nous sommes donc basés sur les sockets proposés par la librairie. 5.2.3 Implémentation d un serveur HTTP Nous avons réalisé une première version de notre abstraction. Cette première version implémente une gestion basique d un serveur HTTP. Afin que notre implémentation respecte les standards, nous nous sommes basés sur les RFC. Les Request For Comments (RFC) sont un ensemble de documents qui font référence auprès de la Communauté Internet. Ces documents décrivent, spécifient, standardisent et débattent de la majorité des normes, standards, technologies et protocoles 31

liés à Internet et aux réseaux en général. De ce fait, ces documents sont une aide non négligeable lors d une implémentation. En ce qui concerne l implémentation de notre serveur HTTP, nous nous sommes appuyés sur : La RFC 822 : Standard pour le formatage des messages textes ARPA La RFC 1123 : Prérequis pour les Hosts Internet - Application et support La RFC 2616 : Référence sur le protocole HTTP/1.1 La RFC 6265 : Mécanisme de gestion des états HTTP 5.3 Test de montée en charge Durant mon stage, j ai eu l occasion de participer à des tests de montée en charge d une application cliente. L objectif de ces tests était de vérifier la synchronisation des données de l application. Pour ce faire, une partie de la société s est connecté à l application afin de générer une quantité importante de traitements. Cela nous a permis d évaluer les capacités du système à gérer l ensemble des données, dans des conditions de fonctionnements inhabituelles et sévères. Grâce à ce test, qui s est avéré favorable, nous avons pu conclure que l application était apte à travailler en conditions réelles. Lors du développement d une application comportant des spécificités liées au réseau, il est important de pouvoir mettre en place ce type de test. En effet, ils permettent d avoir un avis sur les performances de l application et sur ses éventuelles limites. 32

Troisième partie Approfondissement 33

Chapitre 6 Implémentation d un serveur HTTP en utilisant la librairie Synapse Le but de cette partie est de présenter en détails et de manière technique un des travaux réalisés durant la période de stage. Je vous expose ici le déroulement de l implémentation d un serveur HTTP, basée sur la librairie Synapse. Cette implémentation a été réalisée en collaboration avec mon tuteur dans le cadre de l abstraction des couches réseaux. 6.1 La librairie Nous avons choisi pour cette abstraction de nous baser sur l implémentation de la librairie Synapse. Cette librairie, déjà présentée à la partie 5.2.2.1 de la page n o 31, permet une abstraction des sockets sur chaque plateforme. Pour l implémentation de notre serveur HTTP, nous utilisons la classe TTCPBlock- Socket de la librairie. Ce choix s explique par le fait que les communications dans le protocole HTTP s effectuent en TCP. Cette classe, en plus de supporter les protocoles IPV4 et IPV6, supporte également les connexions SSL/TLS et SSH. 6.2 Le moteur de Pool Thread La mise en place de notre serveur s appuie également sur un moteur de Thread Pool. Ce dernier nous permet de gérer implicitement la quantité de client sur le serveur et de les catégoriser. En effet, en ajustant le nombre de thread maximum en exécution sur notre moteur de Pool Thread, nous influons sur le nombre maximal de client supporté par le serveur. Au sein de notre implémentation, c est l objet TBBWThreadPoolHTTPServerDeamon qui se charge de gérer l exécution des threads. Il agit également en tant que contrôleur du Pool Thread et fournis une exécution effective du serveur. 34

procedure TBBWThreadPoolHTTPServerDeamon. Manage ; var C l i e n t S o c k e t : TSocket ; ClientHTTP : TBBWSynapseHTTPThread ; proc : TBBWThreadProc ; begin with Sock do begin C r e a t e S o c k e t ; S e t L i n g e r ( True, 10) ; bind ( 0. 0. 0. 0, 8080 ) ; L i s t e n ; r epeat i f not OwnThread. InWork then break ; i f CanRead ( 5 0 0 ) then begin C l i e n t S o c k e t := Accept ; i f L a s t E r r o r =0 then begin ClientHTTP := TBBWSynapseHTTPThread. C r e a t e ( C l i e n t S o c k e t, S e r v e r ) ; proc := ClientHTTP. P r o c e s s ; FHTTPThreadManager. AddWorker ( proc ) ; end ; end ; u n t i l F a l s e ; end ; end ; Listing 6.1 Initialisation du socket de connexion du serveur La méthode présentée ci-dessus permet d initialiser le socket de connexion du serveur et permet de mettre en attente les clients, représenté ici par TBBWSynapseHTTP- Thread. Lorsqu un client est accepté, on ajoute un thread au contrôleur, qui représente un client en attente d une réponse du serveur. Chaque thread implémente une méthode «process»qui permet de traiter les requêtes envoyées au serveur et d implémenter les réponses associées. Les réponses du serveur doivent être envoyées dans un délai raisonnable. En cas de problème lors de l envoi des réponses, nous avons mis en places des mécanismes afin de nettoyer le contrôleur et éviter toute saturation. 35

6.3 Les classes La mise en place du serveur HTTP est articulée autour de plusieurs objets. En effet, ces derniers sont nécessaires à la réalisation du cycle de vie de traitement, référencé dans la RFC 2616. Nous avons donc dû les implémenter, en s appuyant justement sur les documents de types RFC. TBBWSynapseHTTPServer représente le serveur. Il joue le rôle d interface entre le développeur et la couche basse du serveur. C est cette classe que l on va utiliser pour le paramétrage du serveur. TBBWSynapseHTTPRequest est la représentation d une requête HTTP. Cet objet est créé lors de la réception d une requête cliente et est traité par la méthode «process» lié au thread du client. TBBWSynapseHTTPResponse est la représentation de la réponse HTTP envoyé par le serveur. Cet objet est créé lors de la réception d une requête cliente et est traité par la méthode «process» lié au thread du client. L objet TBBWSynapseHTTPHeaders regroupe tous les éléments présents dans les en-tête HTTP. La gestion des connexions se fait par l intermédiaire de l objet TBBWSynapse- Connection. Son rôle est de garder en mémoire les informations de connexion liées à un client. Un client engendre une session lorsqu il se connecte au serveur. L objet TBBW- SynapseHTPSessionList permet de manager et de stocker les sessions clientes. 6.4 Gestion des événements Les propriétés de notre objet TBBWSynapseHTTPServer font références aux RFC. Cependant, nous avons rajoutés des événements afin de pouvoir déclencher ou exécuter des actions spécifiques en fonction de l événement reçu. FOnCommandGet : TBBWCommandGetEvt ; FOnPostStream : TBBWCreatePostStreamEvt ; F O n S e s s i o n S t a r t : TBBWHTTPSessionStartEvent ; FOnSessionEnd : TBBWHTTPSessionEndEvent ; FOnCommandOther : TBBWCommandGetEvt ; FOnCommandPut : TBBWCommandPutEvt ; FOnConnect : TBBWConnectionEvent ; F O n C r e a t e S e s s i o n : TBBWCreateSessionEvt ; F O n I n v a l i d S e s s i o n : TBBWInvalidSessionEvt ; FOnHeaderAvailabe : TBBWHeaderAvailableEvt ; FOnHeaderBlocked : TBBWHeaderBlockedEvt ; FOnDoneWithPostStream : TBBWDoneWithPostStreamEvt ; FOnCommandPost : TBBWCommandPostEvt ; 36

Listing 6.2 Liste des événements de l objet TBBWSynapseHTTPServer 6.5 Chaîne de traitement des requêtes Lorsque le serveur reçoit une requête cliente, cette dernière passe dans une chaîne de traitement. Cette chaîne peut être vue comme une succession d étapes. Chaque étape vise à valider un élément de la requête en analysant les informations contenues dans son header. Cette succession d étapes forme un tracé à suivre, qui peut être différent en fonction du type de requête reçue par le serveur (GET, POST,...). Cette chaîne de traitement va déterminer, en fonction de la requête, la réponse que le serveur renverra au client. Une étape à deux sorties possibles : L élément de la requête vérifiée est validé. Dans ce cas, la requête continue son cheminement au sein du tracé et se rend à la prochaine étape. L élément de la requête vérifiée n est pas validé. Dans ce cas, la requête peut : Bifurquer dans le tracé vers une autre étape du tracé Renvoyer un code décrivant l erreur rencontrée lors de l analyse de la requête Si toutes les étapes sont validées par la requête et qu elle atteint le point de sortie finale, le serveur renverra au client une réponse ayant pour code 200. Ce code signifie littéralement «OK» et indique que la requête n a rencontré aucun problème pendant son traitement. La chaîne de traitement possède plusieurs points de sorties, en plus du point de sortie finale. Ces points de sorties sont pour la plupart atteint lorsqu une requête ne valide pas une étape. Chacun d eux renvoient un code spécifique servant à décrire la raison du refus de validation de la requête à l étape concernée. Nous avons donc du mettre en place cette chaîne de traitement afin que notre serveur puisse répondre correctement aux requêtes clientes reçues. Chaque étape a été implémentée sous la forme d une fonction dont le résultat est un booléen. f u n c t i o n S u p p o r t e d C o n t e n t ( ARequest : TBBWSynapseHTTPRequest ) : Boolean ; f u n c t i o n R e s o u r c e C r e a t e d ( AReply : TBBWSynapseHTTPResponse ) : Boolean ; f u n c t i o n E x i s t R e s o u r c e ( Request : TBBWSynapseHTTPRequest ) : Boolean ; f u n c t i o n R e d i r e c t : Boolean ; f u n c t i o n R e s o u r c e P r e v i o u s l y E x i s t e d ( ARequest : TBBWSynapseHTTPRequest ) : Boolean ; 37