Organiser une plateforme de développement Web
Posted on Monday 05 May 2008, 10:05 - Veille techno - Permalink Tweet
- Article
- |
- Comments(0)
- |
- Attachments(0)
Expression du besoin
Dans le cadre du développement d'un site e-commerce, j'ai ressenti le besoin de sécuriser le développement. Il est nécessaire, pour créer et faire évoluer un site Internet, d'avoir la possibilité de :
- Développer indépendamment du serveur en production, seul ou en équipe.
- Tester la migration des évolutions apportées, ainsi que les évolutions elles-mêmes, toujours sans perturber la prod.
- Conserver un historique des modifications, de manière à Identifier les versions, et afin de pouvoir revenir en arrière en cas de problème.
1- Environnements requis
1.1 - Web server
L'installation du serveur web sur leopard est très simple : apache2 et php5
sont installés par défaut et nécessitent juste quelques modifications pour
fonctionner. Il restera à installer manuellement mysql et PEAR.
Sur mac, on pourra aussi tout simplement utiliser le package MAMP, qui répond à l'ensemble des
besoins en terme de serveur pour le développement web. Sur PC, easyphp
fera très bien l'affaire.
DEV : Serveur sur lequel sont réalisés les développements, synchronisé manuellement avec le CVS par les développeurs.
TEST : Serveur de test synchronisé automatiquement avec le CVS toutes les 24H et à la demande. Ce serveur regroupe donc les modifications validées en DEV par l’ensemble des développeurs.
PROD : Ce serveur est mis à jour à la demande, avec la dernière version validée en test, à partir du CVS (milestone).
1.2 – Base de données
DEV : Cette base est utilisée par le serveur web de DEV. Les développeurs réalisent leurs modifications directement sur celle-ci. En revanche, les modifications faites doivent prendre la forme de scripts, afin de permettre leur migration. Après validation, ces scripts sont enregistrés sur le serveur CVS, et seront exécutés dans cet ordre, sur la base cible :
- 1 - /database/create.sql
- 2 - /database/alter.sql
- 3 - /database/insert.sql
- 4 - /database/update.sql
TEST : Serveur mis à jour toutes les 24H et à la demande, à partir des scripts présents sur le CVS. Cette synchro est réalisée en même temps pour les éléments du serveur Web.
PROD : Cette base est mise à jour, suivant la même méthodologie que TEST, mais uniquement à la demande, pour l’application des versions validées.
1.3 - Source control
L’outil de source control peut être cvs ou svn. L’idéal étant d’utiliser un éditeur disposant d’un plugin cvs. Il est ainsi facile de réaliser les « checkout / checkin », sans utilisation de la ligne de commande.
L’éditeur Aptana ( Issu de Eclipse) dispose d’un tel plugin pour cvs.
L'outil cvs est inclus sur mac, dans les xcode tools. Ceux-ci sont livrés avec votre version de Macos ou peuvent être téléchargés depuis http://developer.apple.com.
Pour faire simple, un script de mise à jour automatique du cvs à partir de
l'environnement de dev a été mis en place.
2- Développement (local et distant)
Les développeurs travaillent directement dans la base de DEV, utilisant un répertoire partagé. Il leur faut simplement prendre la précaution de « locker » les fichiers en cours de modification, au niveau du CVS, afin d’éviter que plusieurs développeurs ne modifient le même élément. Ceci peut être fait automatiquement en utilisant un IDE doté d’un module de gestion de sources.
Après test et validation dans l’environnement de développement, le développeur peut enregistrer sa modification dans le CVS.
3- Processus de Migration et Tests
Un moyen simple d'assurer la migration des nouveaux développements au sein du serveur web et de la base de données :
Le code est rechargé depuis le cvs, après validation. Ceci peut être fait directement par cvs, ou encore par ftp de puis l'environnement source.
Les scripts sql décrits plus haut sont exécutés sur l'environnement cible. L'environnement de Test doit garantir que le passage en production se fera sans risque, l'idéal étant out de même de disposer d'un environnement de pré-production identique à la prod pour tester la migration.
4- Systèmes de Sauvegarde
Les possibilités de sauvegarde sont multiples, nous pourrons soit:
- Lancer une sauvegarde automatique par script, déposant une archive dans une (ou plusieurs) zone de dépôt.
- Utiliser le service Time Machine de leopard pour la sauvegarde du serveur et des clients.
4- Matériel nécessaire
Petite machine (virtuelle ?) ayant les fonctions suivantes : Serveur web, Serveur Mysql, NAT (iptables), CVS repository.
Sources :
http://stringfoo.com/2007/11/05/server_setup_on_leopard/http://developer.apple.com/internet/opensource/cvsoverview.html
A approfondir :
How to keep Test server in Sync with CVS Automatically
?
-> Simple cron to update cvs from dev tree.
diff tool capable of making paches for databases structure and data ?
-> SQLyog
http://www.databasejournal.com/features/mysql/article.php/1584401