Retours d'expériences : outils pour bien démarrer un projet Symfony3

Vous êtes un entrepreneur, une société ou un développeur à la recherche des bons outils de developpement pour travailler confortablement et plus efficacement ? Voici une compilation des solutions que nous conseillons pour bien démarrer un projet web.

Attention, cet article date de plus de 2 ans maintenant... Il est possible que les infos publiées ne soient plus correctes aujourd'hui...

Dans cet article, nous nous adressons à ceux qui souhaitent assainir ou améliorer leurs conditions de travail. Nous proposons une liste non exhaustive d'outils, de solutions et de processus que nous apprécions en milieu professionnel, et pas seulement en projet Symfony ! Nous vous invitons à la compléter en commentaires, et tous vos retours d'expériences seront fortement appréciés !

Développer avec Symfony3 : une rigueur quasi-impérative

S'imposer une rigueur de développement ainsi qu'une structure saine pour ses projets est primordial pour la vie et l'évolution de ceux-ci. Pour bien commencer le développement d'une application web avec le framework Symfony 3, nous recommandons de suivre quelques principes.

Des outils pour bien démarrer avec Symfony3

Le versionning de vos projets

Conservez l'historique de tous vos développements, gardez un œil sur les travaux de vos coéquipiers. Le versionning est désormais un indispensable du développement web. Encore plus lorsqu'un projet est développé à plusieurs. Chez Wanadev, nous apprécions (comme beaucoup) Git.

GitLab permet d'installer un Github like directement chez vous (sur votre serveur), vos repositories (vos développements) pourront alors être privés. Il existe aujourd'hui plusieurs alternatives pour gérer vos versionning : gitlab.com, Github, bitbucket, gogs... Chez Wanadev, nous avons notre propre serveur Gitlab.

Le déploiement de vos projets

Développer en local, c'est bien. Rendre accessibles vos développements sur des serveurs de tests et bien sûr de production, c'est mieux. Ainsi, vous devrez roder vos processus de déploiement.

Pour joindre sécurité et efficacité, il est nécessaire de mettre en place un ou des scripts de déploiement complets : gestion des dépendances, migration du code, préparation des assets (images, css, js...) et enfin (et même surtout), préparer des rollbacks rapides en cas de mauvaise livraison.

Chez Wanadev, nous sommes familiers avec Gitlab CI ainsi qu'avec Jenkins. Nous avons intégré une logique d'intégration continue ainsi que des tests.

Capistrano peut être utilisé pour déployer facilement des projets. Notre ami Baptiste a développé sa propre solution : BipbipJS que nous utilisons désormais sur nos projets.

La gestion de projet

Une bonne gestion de projet est important pour le succès de vos œuvres, évidemment. Nous recommandons l'utilisation d'un outil de ticketing pour gérer et traiter les retours de vos clients / utilisateurs. Chez Wanadev, nous utilisons tous l'outil Redmine. Il est un peu austère mais très pratique et très complet.

Etudes des logs

Étudier les retours d'erreurs de vos plateformes est très importants. Sentry est une solution qui s'occupe de récupérer les logs levés par vos projets. Il permet d’agréger ces données sur une interface claire et évite de se connecter au serveur directement pour consulter les logs d'erreurs. Vous avez une vision globale ainsi que des informations sur les erreurs rencontrées par vos utilisateurs, comme des erreurs 500, par exemple.

Communication interne

Ne mentez pas : même si vous êtes plusieurs dans le même bureau, vous dialoguez avec vos partenaires par réseaux sociaux, skype, ou autres moyens numériques... Chez Wanadev, nous avons mis en place Mattermost, un outil open source auto-hébergé permettant de nombreuses animations au sein d'une équipe.

Outre les salons de discussions, Mattermost permet d'intégrer directement des services externes, et même des gifs animés ;-) !

Le choix de l'IDE

L'IDE, c'est votre éditeur de code. Il en existe un grand nombre. Chez wanadev, nous sommes adeptes de Sublime Text 3 par sa rapidité ainsi que de PHP Storm pour son interface complète. Si vous souhaitez une alternative, essayez Atom.

Se préparer un environnement de développement fonctionnel

Nous allons voir ensemble la mise en place d'un environnement de développement classique pour une application Symfony.

Il nous faut PHP, MySQL et Nginx. Si votre projet est plus complexe, il peut être nécessaire d'installer des technologies différentes (Postgres, Redis, ElasticSearch...).

Nous recommandons de développer sous Linux, car votre serveur de production aura aussi une base UNIX et qu'il est préférable d'avoir des systèmes similaires pour éviter des problèmes de configuration ou d'incompatibilité.

De plus, la plupart des technologies sont nativement sous Linux. Les faire fonctionner sur Windows peut vous compliquer les développements sur le long terme (mise à jour, tweak de configuration...). Toute la Stack que nous vous proposons est OpenSource et c'est une véritable force.

Pour les utilisateurs de Linux :

  • Git, pour pouvoir travailler sereinement dans le cadre d'un développement en équipe, et ainsi éviter les accidents. Git est utilisé par beaucoup de développeurs. Comme vu précédemment, Git est OpenSource, Git est utilisé pour stocker son travail ainsi que son historique.
  • Composer, pour installer rapidement toutes les dépendances que Symfony aura besoin. Comme vous le savez sûrement, Symfony est en fait une stack de plusieurs bundles aidant au développement.
  • MailDev, un micro serveur SMTP qui vous permet de tester facilement les envois emails de votre projet grâce à une interface de consultation embarquée.
  • Nginx, qui servira de serveur web. Nous utilisons Nginx plutôt qu'Apache pour la simple raison que la configuration à mettre en place pour un serveur Nginx est plus simple, plus compréhensible, et que les performances sont meilleures.
  • PHP5-FPM / PHP7, pour interpréter le code PHP du framework. Il existe d'autre interpréteurs PHP, tels que HHVM (développé par Facebook), mais certaines fonctionnalités comme l'authentification dans Symfony ne sont pas totalement prises en charge par HHVM.
  • MySQL, qui sera là pour persister l’essentiel de vos données. Un autre serveur de base de données est à votre disposition dans les dépôts Linux tels que MariaDB (projet provenant de MySQL et développé par le créateur de MySQL)
  • Docker, pour les plus barbu(e)s d'entre vous, l'utilisation de Docker permet de lancer un environnement propre à votre projet. Je vous invite a suivre les très bons articles sur docker de Baptiste Donaux.
  • GULP/GRUNT , pour la gestion de vos assets (voir notre retour d'atelier sur Gulp)

Pour Windows/Mac :

  • L'utilisation de Boot2Docker. C'est avec Docker que vous trouverez de bonnes solutions d'environnements de développement.
  • L'installation des logiciels MAMP (pour Mac), ou WAMP (pour Windows) avec par défaut Apache, MySQL et PHP installés.

Un projet Symfony3 propre et sain

Les différents points abordés précédemment sont des ingrédients recommandés pour que votre projet Symfony se déroule correctement. Pour vos lignes de codes, rien ne vaut la bonne vieille documentation officielle.

Toutes ces pratiques sont celles que nous instaurons lors de nos travaux professionnels. Nous remettons cependant en cause régulièrement ces processus et outils pour toujours être adaptés à nos besoins. Il est probable qu'un partie des recommandations précédentes ne soient plus valables dans quelques années (mois?).

Symfony est une pièce maîtresse de nos réalisations, c'est pourquoi nous avons pris pour exemple ce framework dans cet article. Cependant, toutes ces préconisations sont des bonnes pratiques dans un projet, quelle que soit la techno adoptée ;-) !

Commentaires

Martin

Il y a 2 ans Répondre

Je vous remercie pour cette initiative. Très bon à savoir. J'apprécie sincèrement vos retours d'expérience.

Cordialement.

Il y a 2 ans Répondre

Merci Martin, j'apprécie votre retour :)

Sabadam

Il y a 2 ans Répondre

Merci pour  l' article.

Cordialement.

Il y a 2 ans Répondre

De rien, avec plaisir ! :)

Cédric

Il y a 1 an Répondre

Article très intéressant.

Auriez-vous également une liste de package que vous utilisez sur Sublime Text 3 facilitant le développement.

J'utilise déjà pour ma part :

  • BracketHighLighter
  • DockBlockr
  • PHP CodeSniffer
  • AlignTab

Articles liés