Retour aux articles

L'agence

WanadevStudio

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.

@ 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 7 ans

Répondre

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

Cordialement.

Corentin Baur

Il y a 6 ans

Répondre

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

Sabadam

Il y a 6 ans

Répondre

Merci pour  l' article.

Cordialement.

Corentin Baur

Il y a 6 ans

Répondre

De rien, avec plaisir ! :)

Cédric

Il y a 5 ans

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
  • Tests automatiques fonctionnels d’applications 2D/3D

    Il y a 7 mois

    Comme nous le disions dans cet article, l’automatisation des tests dans le développement logiciel est indispensable : dès lors qu’une application commence à avoir un minimum d’importance, les tests automatiques permettront de gagner énormément de temps en évitant de reproduire ad vitam æternam les mêmes tests manuels, et éviteront beaucoup de régressions. Dans cet article, nous allons présenter différents types de tests automatiques dans le cadre plus spécifique d’applications 2D/3D, puisque c’est ce que nous faisons ! Cela va du test basique qui clique sur 3 boutons aux tests de plusieurs minutes reproduisant les actions comme un véritable utilisateur. Accrochez-vous, c’est parti !

  • Configurateur web à l'abonnement : forces et faiblesses

    Il y a 8 mois

    Aujourd’hui, si vous cherchez à mettre en place un configurateur sur votre site, deux grandes possibilités s'offrent à vous : les solutions par abonnement (du type SaaS) ou le développement sur mesure. Au premier abord, les solutions semblent proches, mais les enjeux sur le long terme eux, sont bien différents.

  • Les frameworks front, tous les mêmes !
    Méthodologie

    Il y a 9 mois

    C'est une phrase que j'ai osé sortir un jour dans la salle de pause de Wanadev. Je ne sais plus exactement avec quel collègue je discutais, j’essayais de le rassurer, il possédait déjà une certaine expérience avec React et allait devoir, en arrivant sur le projet sur lequel je travaille, se mettre à Vue.
    Il a malheureusement fallu qu'un autre collègue de passage nous entende pour ne pas trouver la conversation inintéressante et suggérer que j'en fasse un petit talk pour nos réu du lundi. Et, de fil en aiguille, me voilà en train d'en faire un article de blog. Comme quoi, note pour moi-même, il faut toujours se méfier des discussions dans les salles de pause.

  • [NOVEMBRE 2021] C'est la gazette de Wanadev !
    Méthodologie

    Il y a 12 mois

    Retrouvez ici les informations et actus du mois de novembre de l'Agence! Au programme de cette édition : découvrez le configurateur de fenêtre développé pour Caseo, recontrez François Deleglise, notre directeur communication et un nouvel espace de jeu pour les professionnels du loisir en VR. Bonne lecture !

  • Un peu d'ingérence dans votre infogérance ?
    Méthodologie

    Il y a 2 ans

    Même si les impacts sont difficiles à mesurer, on peut dire qu’il a eu un avant et un après incident OVH. Sans épiloguer sur l'incendie du 5 mars 2021 dernier, un petit vent de panique a soufflé sur les milliers de clients découvrant les problématiques de sécurisation des données. Les réactions à chaud d'une partie des utilisateurs (touchés ou non) montrent la méconnaissance et l'incompréhension qui existent dans les offres d'hébergement. Qui est responsable ? Qui fait quoi ? Comment vérifier mon offre ? Voici quelques clés de compréhension.

  • Améliorer la qualité avec les tests et la review

    Il y a 2 ans

    L’importance des tests et de la revue de code dans le cadre du développement logiciel est parfois négligée ou passée au second plan. Cet article a pour but de montrer que les tests logiciels constituent une étape cruciale qu’il faut considérer avec beaucoup de rigueur.