symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
1. symfony
Un Framework Open-Source
pour les Entreprises
Fabien Potencier
http://www.symfony-project.com/
http://www.sensiolabs.com/
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
2. Sensio Labs
• Sensio
Sensio
– Agence Interactive Agence Interactive
– Créée en 1998 Webmarketing
Technologies
Internet
– Groupe de 150 personnes
– 45 personnes dédiées à Internet
• Spécialiste du monde Open-Source Créateur
– Un pôle R&D dédié à l’Open-Source Framework symfony
• Des clients Grands Comptes et Institutionnels
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
3. symfony
• Framework Web PHP
• Basé sur
– 9 ans d’expérience Sensio
– Projets Open-Source existants
• Conçu pour gérer :
– Sites professionnels
– Problématiques complexes
– Environnements exigeants
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
4. Framework
« Quelque soit l’application, un framework est conçu pour faciliter
les développements en prenant en charge les tâches récurrentes,
fastidieuses et répétitives à la place du développeur. »
• Composants logiciels génériques
– Préfabriqués
– Intégrés
– Répondent aux problématiques Web
• Professionnalisation des développements
– Structuration
– Standardisation
– Industrialisation
– Pérennité
« Cadre de travail »
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
5. CMS - Content Management System
• CMS traditionnel
– Fonctionnalités standards
– Outil de contribution standard
– Le site s’adapte au CMS
• CMS basé sur symfony
– Briques logicielles CMS
– Extensibilité pour des application métiers
– Le CMS s’adapte au site
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
6. Les Buts de symfony
• Ne pas réinventer la roue en intégrant les Bonnes
Pratiques
• Développer plus vite
• Devenir le Framework PHP des Entreprises
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
7. Mieux Développer
• Kent Beck (basé sur Yourdon et Constantine)
Chaque ligne de code a un coût initial
Coûtinitial = Coûtdéveloppement + Coûttests
… et un coût pour la maintenir
Coûtmaintenance >> Coûtinitial
Coûtmaintenance = Coûtcompréhension + Coûtchangement + Coûttests + Coûtdéploiement
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
8. Et Développer plus Vite
• Ecrire moins de code
moins de code
moins de complexité
moins de bugs
gain de productivité
gain de temps
• Plus de temps pour les règles métiers, cas limites, …
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
9. Devenir le Framework PHP
des Entreprises
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
10. Java, .Net … et PHP
• Les grandes entreprises françaises basent leurs
développements Web sur 3 technologies
– Java
– .Net
– PHP
• PHP était généralement utilisé pour les
applications non transactionnelles, temporaires
et non stratégiques
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
11. PHP dans les entreprises
• Les avantages du langage PHP
– Développer rapidement un produit qui fonctionne
– Héberger facilement et à moindre coût
• Inconvénients du PHP 4
– Un langage non Orienté Objet
– 1 développeur = 1 framework
> Des sites non maintenables
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
12. Ce qui change
• PHP 5 : Un langage mature
– Un langage réellement orienté objet
– Des frameworks performants basés sur les bonnes
pratiques issues du monde Java et .Net
– Des développeurs plus matures
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
13. PHP 5 dans les entreprises
• De plus en plus d’entreprises basculent des sites
complexes en PHP 5
– L’agilité et les performances d’un langage de script
– La maturité et des outils comparables au monde Java
et .Net
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
14. Les Principaux Atouts
• symfony… au-delà du code, c’est également…
– Un Framework Open-Source
– Une Documentation Open-Source
– Une Communauté Active et Internationale
– Une Version “Entreprise”
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
15. Un Framework Open-Source
• Licence MIT
« Elle donne à toute personne recevant le logiciel le
droit illimité de l'utiliser, le copier, le modifier, le
fusionner, le publier, le distribuer, le vendre et de
changer sa licence. La seule obligation est de mettre
le nom des auteurs avec la notice de copyright. »
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
16. Une Documentation Abondante
• Open-Source Documentation
– The book (450 pages - GFDL)
– Askeet Tutorial (250 pages)
• Traductions en 12 langues
– (Chinese) – Polski
– Deutsch – Português
– Español – Russian
– Français – Ukrainian
– Italiano – Če⌃tina
– (Japanese) – Nederlands
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
18. Une Communauté Active
• 200 plugins disponibles
• 300 000 visiteurs par mois sur le site officiel
www.symfony-project.org
• Une conférence dédiée : symfonyCamp
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
19. Une version « Entreprise »
• La version 1.0 a été publiée début 2007
– ~1 mise à jour par mois (1.0.11 actuellement)
• corrections bugs, sécurité, compatibilité nouvelles versions
de PHP
• pas de nouvelles fonctionnalités
• mise à jour simple et sûre
– Support Commercial
– Documentation stable
– Formations
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
20. Des Fonctionnalités Entreprises
• Sécurité
• Gestion des environnements et des déploiements
• Tests unitaires et fonctionnels
• Configurabilité et extensibilité
• Modèle / Vue / Controleur
• Admin Generator
• Outils pour le développeur
• Gestion du cache
• URL propres
• Internationalisation
• Support avancé des formulaires
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
21. Sécurité
• symfony est immunisé contre les principales
attaques par défaut
– XSS
– CSRF
– SQL Injection
• Pourquoi ?
– Les attaques XSS sont très facilement exploitables
– Les audits sont facilités
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
22. Gestion des Environnements
et des Déploiements
• symfony gère la différence entre les
environnements de développement, de recette et
d’exploitation
symfony project:deploy production --go
• Pourquoi ?
– Le développeur doit pouvoir diagnostiquer les
problèmes rapidement (erreurs dans le navigateur,
pas de cache, …)
– Le site en exploitation doit activer le cache et ne doit
pas révéler d’informations sensibles en cas de
problème
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
23. Tests Unitaires et Fonctionnels
• symfony automatise les tests des applications via
la simulation d’un navigateur
• Pourquoi ?
– Les tests manuels des clients ne sont pas fiables… et
généralement pas réalisés
– Une application testée contient moins de bugs et
devient maintenable
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
24. Configurabilité et Extensibilité
• symfony est entièrement configurable et
facilement extensible grâce à un système de
plugins
• Pourquoi ?
– Le Web évolue très vite
– Certains clients ont des demandes spécifiques
– Le framework ne doit/peut pas tout gérer
– Ouverture pour les contributions externes
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
25. Modèle / Vue / Contrôleur
• Séparation des couches applicatives
– Règles métiers (Modèle)
– Templates navigateur (Vue)
• Structuration des fichiers et des arborescences
• Conventions
• Pourquoi ?
– Ne pas réinventer la roue
– Maintenabilité
– Evolutivité
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
26. Création du Back-Office
• Création automatique d’une Console
d’Administration de Production
– Listes – Filtres
– Pagination – Validation
– Tri – CRUD
• Pourquoi ?
– Tous les sites ont le même besoin
– Fastidieux à développer et à tester
– Sans valeur ajoutée
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
27. Outils pour le Développeur
• symfony fourni les outils de débuggage au
développeur
• Pourquoi ?
– Augmenter la productivité du développeur
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
28. Gestion du Cache
• symfony gère de façon très fine le cache des
applications
• Pourquoi ?
– Les applications développées doivent pouvoir « monter
en charge »
– Rajouter des serveurs coûte cher
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
29. URLs Propres
• symfony gère les URLs de façon bi-directionnel
/blog.php?section=symfony&article_id=18475
/blog/2008-01-30/symfony-bonne-annee
• Pourquoi ?
– Les URLs représentent l’interface d’un site Web
– Elles sont indexées par les moteurs, copiées/collées dans des
e-mails, bookmarkées par les utilisateurs
– Elles sont indépendantes de l’implémentation technique
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
30. Internationalisation
• symfony gère l’internationalisation et la
localisation des applications
• Pourquoi ?
– Ne pas réinventer la roue (la liste des pays ne change
pas tous les jours)
– Les règles de localisation sont complexes et
normalisées
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
31. Support avancé des Formulaires
• symfony a une gestion des formulaires très
avancée et très modulaire (modèle MVC)
• Pourquoi ?
– Toutes les applications ont des formulaires
– La définition des formulaires et de leurs cycles de vie
est long et sans valeur ajoutée
– La gestion de la validation « à la main » est fastidieuse
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
32. Un Framework pour les Professionnels
• Issue de l’expérience
• 1.0 stable, maintenue et support commercial
• Communauté large et compétente
• Extensibilité
• Stabilité de l’API
• Documentation Open-Source
Une vision du Web
Professionnelle
Pragmatique
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com
34. Des Références Significatives
• Des milliers de sites ont été développés avec
symfony
• Yahoo!
– Yahoo! Bookmarks
– Yahoo! Answers
– del.icio.us
Solutions Linux 2008 www.symfony-project.com fabien.potencier@sensio.com www.sensiolabs.com