15
Documentation technique

Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

Documentation technique

Page 2: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

Documentation techniqueDestinataires : Direction EIP Nom du fichier : 2011_TD1_FR_Symbiosys.odt

Promotion : 2011 (Epitech 5) Date de création : 10.04.2009

Chef de groupe : Manfred Touron Date de dernière modification : 19.01.2011

Membres du groupe : Vincent Auclair

Romain Bienvault

Gaëtan Ciquie

Alexandra Grasland

Joël Randrianandrasana

Version : 2.0

Langue : Français

Historique du documentNuméro de Version Date Modifications

1.0 10.04.2010 - Première mise en page et plan

1.1 13.04.2010 - Ajout des schémas

1.2 15.04.2010 - Ajout des explications

1.3 12.05.2010 - Passage de la documentation sur eip.symbiosys.biz

1.4 13.05.2010 - Refonte du plan

1.5 14.05.2010 - Ajout de la page de garde

- Mise à jour du contenu

- Ajout des diagrammes

1.6 14.07.2010 - Ajout des modules réalisés avec les screenshots associés

2.0 19.01.2011 - Mise à jour de l'avancement du développement des modules

- Ajout d'illustrations pour les sections 2 et 3

2011_TD1_FR_Symbiosys.odt 2/15

Page 3: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

RésuméLes EIP à Epitech

Durant leurs deux dernières années d'études, les étudiants de l'Epitech doivent réaliser en groupe un projet innovateur.

Les étudiants sont encadrés dans toutes les étapes de leur EIP (Epitech innovative Project) par un laboratoire dédié, le Lab EIP.

Le projet Symbiosys

Symbiosys est une plateforme de création de sites internet orientée métiers.

Ce service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût.

Le projet prend en charge la réservation du nom de domaine, l'hébergement et le référencement.

De plus, il fournit à l'utilisateur tous les outils nécessaires à la gestion du site, en toute autonomie.

Documentation technique

Ce document décrit tous les aspects techniques du projet Symbiosys.

De l'architecture choisie au langage de programmation utilisé, tous les choix techniques sont expliqués et justifiés. Des schémas d'architecture viennent compléter l'ensemble, afin de fournir à un éventuel développeur toutes les informations nécéssaires à la reprise du projet.

2011_TD1_FR_Symbiosys.odt 3/15

Page 4: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

Table des matièresHistorique du document...................................................................................................................2Résumé.............................................................................................................................................3

1 Introduction à la documentation technique....................................................................................52 Les technologies utilisées....................................................................................................................5

2.1 Linux..........................................................................................................................................52.2 Nginx.........................................................................................................................................52.3 MySQL......................................................................................................................................52.4 Drupal........................................................................................................................................6

3 Diagramme applicatif..........................................................................................................................84 Organisation des modules...................................................................................................................95 Organisation des données et conception........................................................................................116 Modules réalisés.................................................................................................................................12

1 Module de geolocalisation : Feed2map......................................................................................132 Module d'édition de contenu : Wysiwyg....................................................................................143 Symbiosys manager....................................................................................................................154 Symbiosys Site............................................................................................................................15

2011_TD1_FR_Symbiosys.odt 4/15

Page 5: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

1 Introduction à la documentation techniqueCe document décrit le fonctionnement technique du projet Symbiosys.Notre solution utilise une base web classique. Elle est composée d’un système d’exploitation, un serveur HTTP et un serveur SQL. Symbiosys fonctionne avec toutes les combinaisons d’OS, serveurs HTTP et serveurs SQL. Nous ne vendons pas la solution mais seulement un service, nous allons décrire ici les choix d’applications utilisées pour la platforme de service.Nous utilisons Linux comme système d’exploitation, Nginx comme serveur HTTP et MySQL comme serveur SQL. Dans ce document nous allons tout d’abord expliquer la configuration des machines, puis nous expliquerons Drupal, les modules que nous utilisons et enfin le code que nous avons dû écrire.

2 Les technologies utilisées

2.1 LinuxNous utilisons Ubuntu server comme système d’exploitation pour sa stabilité et sa réactivité pour corriger les failles de sécurité. Le but de notre architecture est de pouvoir rajouter une machine dans le cluster, puis lui assigner un mode afin qu’elle soit automatiquement prise en compte.Pour cela, nous avons un dump général qui contient le code source déployé et une partition en NFS pour accéder aux données importées par les utilisateurs. Une fois la machine installée, nous choisissons si celle-ci est un serveur HTTP statique (pour les images, css, éléments pré-compressés), un esclave MySQL ou un cluster PHP.

2.2 NginxNginx est un serveur HTTP léger, rapide et sécurisé. Il est très facile de configurer Nginx pour qu’il fonctionne en mode cluster. Il y a deux types de serveur Nginx dans notre plateforme. Le premier type de serveur sert exclusivement aux contenus statiques pour améliorer les performances. L'autre type sert toutes les pages dynamiques en php. Celles-ci sont exécutées dans des processus FastCGI. Une liste de serveurs FastCGI est lancée et les serveurs Nginx les utilise en repartissant la charge. Le bytecode PHP est mis en cache pour accélérer les performances.

2.3 MySQLNous utilisons un cluster MySQL pour la plateforme. Celui-ci est composée d’un proxy, d’un master et d’esclaves. Toutes les requêtes passent par le proxy qui distribue les requêtes d'écriture vers le master et réparti le reste vers les esclaves.

2011_TD1_FR_Symbiosys.odt 5/15

Page 6: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

2.4 DrupalNous utilisons la version de drupal 6 qui à l’écriture de cette documentation était la 6.20.Voulant conserver tous les avantages de drupal, nous n’avons pas effectué une seule modification dans le coeur ou les modules de ce dernier. Nous avons cependant ajouter une vingtaine de modules d’extensions dont les views et CCK. Grâce à ceci nous pouvons mettre à jour le CMS rapidement et facilement.

La communauté drupal est très active et développe beaucoup de modules. Ceux-ci sont souvent mis à disposition sur le site de drupal. L'utilisations de modules déjà développés nous permet de nous concentrer sur des développements internes. Ayant déjà une grande expérience de développement avec drupal, nous connaissons déjà une grande partie des modules que l’on peut utiliser pour accélérer le déploiement de nos services. Nous avons donc créé une interface d’administration pour la plateforme. Nous pouvons administrer tous les sites ainsi qu’en créer des nouveaux depuis cette interface. Nous nous somme inspiré de la manière dont OVH fonctionne. Un site peut avoir jusqu'à trois contact. Un propriétaire, un débiteur et un administrateur. Un site peut aussi avoir plusieurs adresses DNS et avoir diverses méthodes de facturation. Cette interface ne sera pas exposée aux clients, elle est destinée aux administrateurs de la plateforme.

Pour chaque nouveau corps-de-métier que nous proposons, nous devons développer un portail, qui servira d'annuaire vers les sites des clients, proposera une démonstration à un utilisateur et lui proposera de s'inscrire au service.

Un site « démo » sera accessible pour tout le monde avec certaines fonctionnalités désactivées (comme le changement de mot de passe) et contiendra des données fictives d'exemple. Le site sera netoyé régulièrement et netoyable à la demande.

2011_TD1_FR_Symbiosys.odt 6/15

Page 7: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

Un site de développement sera utile au groupe de l'EIP pour tester les modifications sans risque. Un hook sur le SVN nous permettra de mettre à jour le code du site au moment du commit. Un module nous permettra de générer du contenu aléatoire en grande quantité et pouvoir tester facilement nos modules.

Toujours pour les développeurs, un site de test sera crée à la demande et permettra de lancer une série de tests unitaires afin de s'assurer que les fonctionnalités ne soient pas corrompues par des modifications.

Une documentation est géneré à partir des commentaires dans le code source. Cela permet d'automatiser la maintenance de celle ci et de simplifier sa créations car nous sommes plusieurs développeur à travailler simultannément dessus.

Le site « cdn » contient tous les fichiers statiques. Il est optimisé pour délivrer rapidement les fichiers (peu d'accès disques) et peut compresser les fichiers si le navigateur supporte la compression.

Le site « manager » est un panel d'administration réservé au clients, dans lequel ils pourront payer les services, commander des noms de domaine, voir le détail des factures, communiquer avec l'assistance technique et d'autre utilisateurs.

Drupal nous permet de facilement administrer le multi-site et de n'avoir en tout et pour tout que deux sources de Drupal installées. L'une d'entre elles sera reservé pour le site de gestio, des tests ainsi que les profils de développement. L'autre, plus stable, sera utilisé pour tous les sites en production.

Grâce à cette infrastructur, nous pouvons tester des mo0difications uniquement sur ce qui est en developpement sans que cela impact les services en productions.

2011_TD1_FR_Symbiosys.odt 7/15

Page 8: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

3 Diagramme applicatif

2011_TD1_FR_Symbiosys.odt 8/15

Page 9: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

4 Organisation des modules

2011_TD1_FR_Symbiosys.odt 9/15

Page 10: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

Jaune: modules déjà existantsViolet: modules à développer

C.A.S.O (Central Admin Sign-On): Permet de s'identifier en tant qu'administrateur sur un site client depuis le site d'administration.

Payment: Communication avec les API de paiement externes.

Community: Module principal de communication entre les clients et le staff; possibilité de poser une question et la rendre publique, proposer un sondage, etc.

Config: Module dashboard qui permet de configurer un site.

Dev: Permet de générer du contenu, afficher des informations de debug, la gestion des tickets.

Services symbiosys: Web-services spécifiques au moteur et accessible depuis des widgets.

Update: Mise-à-jour des sites de façon transparente et répartition de la charge.

Monitoring: Contient des routines ainsi que des tests qui permettent de tester l'intégrité d'un site web et prévenir les adminsitrateurs et utilisatuers dans le cas contraire.

Statistics: Permet de centraliser et d'accéder aux statistiques d'utilisation des sites.

Deployment: Création d'un nouveau site en quelques secondes: création du fichier de configuration sur le NFS, création de la base de donnée, dump du site. Possibilité de « dump » un site: copie d'un dump de base et appel des procédures qui vont permettre de créer le contenu de base non statique (contenu dépendant de la date du jour ou du nom de client).

Demo: Génération de contenu aléatoire et possibilité de créer un dump de la démonstration en cours pour s'en servir et créer un nouveau site identique à la version de démonstration.

2011_TD1_FR_Symbiosys.odt 10/15

Page 11: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

5 Organisation des données et conception

Nous avons jugé qu'il n'était pas intéressant de présenter la définition des tables MySQL du projet pour deux raisons: la première est que Drupal utilise 50 tables juste pour le cœur et les modules principaux; la deuxième est que Drupal est un Framework MVC et a sa propre définition de type de contenu qui n'est ni une classe, ni une table SQL, mais une définition de type de contenu et plusieurs tables SQL qui dépendent du type de champs qui définissent le type de contenu.En règle générale, nous ferons très peu de requêtes SQL à la main, mais quand nous le ferons, ce sera via la couche d'abstraction de Drupal (http://api.drupal.org/api/group/database/6) qui permet de faire des requêtes sécurisées, optimisées et compatibles avec beaucoup de systèmes de gestion de base de données.

La définition des types de données se fait grâce aux CCK (Content Creation Kit) qui permet de définir chaque champs que comporte un type de contenu ainsi que ses attributs. Un champ peut être un entier, un réel, une url, une relation vers un autre contenu ou vers un utilisateur, une image, une pièce jointe, une date, un Google Map, … Et chacun de ces champs peut être limité aux niveau des données, être obligatoire ou facultatif, avoir plusieurs valeurs, ...

Les fichiers seront organisés par « namespace » ainsi, les fichiers de cache javascript seront placés dans le sous dossier <type-de-site>/<nom-du-client>/files/js/<le-fichier>.js sur le serveur NFS.

Nous utiliserons memcache pour mettre en cache des données souvent utilisées identifiées par une clé (Memcache fonctionne sur le principe une base de donnée contenant simplement une paire clé/valeur). Nous utiliserons beaucoup le cache pour les parties où nous pouvons déterminer les actions qui les modifient.Exemple: nous pourrons mettre en cache le listing des utilisateurs; si un utilisateur modifie son compte ou une nouvelle inscription est faite, le cache est supprimé et donc régénéré au prochain besoin.Ici aussi nous utilisons un système de « namespace » pour trier les clés: pour le cache du listing des utilisateurs vu par un utilisateur connecté avec une langue en anglais, la clé sera 'users-list:connected:en'. Nous pourrons ensuite supprimé le cache ayant exactement cette clé, mais aussi tous les caches commençant par 'users-list:'.

2011_TD1_FR_Symbiosys.odt 11/15

Page 12: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

6 Modules réalisésNous avons développé divers modules drupal pour pouvoir administrer tous les sites facilement.

Les processus de traitement par lot ont étés mis en place et sont utilisés pour pouvoir exécuter diverses tâches simultanément sur une partie des sites ou tous. Cette partie est cruciale pour permettre de gérer des milliers de sites à la fois.

Nous avons créé plusieurs types de contenus

Demo: Génération de contenu aléatoire et possibilité de créer un dump de la démonstration en cours pour s'en servir et créer un nouveau site identique à la version de démonstration.ontenu permettant de stocker les informations relatives aux sites.

Nous avons une relation entre les domaines ainsi que le type de site.

Le formulaire de création de site a été réalisé. Nous sommes en mesure de sauvegarder et de restaurer des sites à partir de l’interface web ainsi qu’en tâches régulières (cron).

Il est important de ne pas décourager les futurs clients. C’est pour cela que nous demandons le minimum d’informations lors de la création d’un site. Si le client est satisfait, il pourra renseigner diverses informations supplémentaires et ainsi finaliser son site.

2011_TD1_FR_Symbiosys.odt 12/15

Page 13: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

1 Module de geolocalisation : Feed2mapCe module permet d'aggréger du contenu géolocalisé et de le localiser sur une carte interactive.

Ce module est compatible :

● Google maps

● Terminaux mobiles

● Twitter

2011_TD1_FR_Symbiosys.odt 13/15

Page 14: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

2 Module d'édition de contenu : WysiwygWysiwyg signifie « What you see is what you get », il s'agit d'un éditeur de texte riche. L'utilisateur rédige son contenu et le met en forme directement. Il peut voir immédiatement à quoi la future page web ressemblera.

2011_TD1_FR_Symbiosys.odt 14/15

Page 15: Documentation techniqueCe service est dédié aux professionnels souhaitant se composer un site internet sur-mesure à moindre coût. ... 1 Introduction à la documentation technique

3 Symbiosys managerCe module n'est pas encore fini.Il gère :

● Les clients● Les sites :

○ Création○ Maintenance○ Evolutions○ Types de sites○ Profils utilisateurs○ Les noms de domaine

● La facturation

4 Symbiosys SiteCe module n'est pas encore fini.Il est activé sur tous les sites, c'est lui qui s'occupe de l'interface entre le manager et le site.Il gère :

● les mises à jours● l'auto login à partir du manager● la gestion des modules activés

2011_TD1_FR_Symbiosys.odt 15/15