Dans cet article j’aimerais vous présenter mon environnement de développement pour le web. Ce n’est pas ma spécialité mais ça fait partie de mes débuts de développeur. Actuellement je travaille plus sur des clients lourd (WPF, UWP, Xamarin, Android) mais il m’arrive d’intervenir sur des projets web. Je me positionne plus côté back même si cela peut m’arriver d’intervenir sur du front.
127.0.0.1
Pour commencer, le serveur. Alors il
y a (à ma connaissance) deux méthodes. Ceux qui travaillent en local avec les
outils tel que WAMP/MAMP/LAMP, EasyPhp, etc. et ceux qui travaillent
avec des machines virtuelles (Hyper-V, VirtualBox, VMware) ou encore avec la
containerisation (Docker).
Je préfère utiliser une machine virtuelle. J’ai commencé avec VirtualBox,
maintenant Hyper-V et je m’intéresse de plus en plus à Docker.
Le but d’utiliser une machine virtuelle est de se rapprocher au plus du serveur de production. C’est pour cela que je prends le temps de configurer mes machines.
Pour le système d’exploitation, j’utilise CentOS. Je trouve que c’est l’OS le mieux adapté pour du serveur, il est léger et par défaut assez bien configuré. Il est sécurisé et très rependue en entreprise pour des serveurs de production, notamment avec RedHat. Par exemple, le firewall ferme toutes les connexions entrantes et autorise les connexions sortantes. Donc si vous installez un serveur web (Apache/Ngnix) il faudra penser à ouvrir le port 80 ou 443.
Je ferai un tutoriel sur la configuration et la mise en place du serveur.
Avantages
– Travailler avec des URL
(mon-domaine.local).
– S’habituer à la méthode de mise en production en travaillant avec les protocoles SSH, SFTP. (Pourquoi pas de l’IC/DC)
– Ne pas charger son OS principal des technologies nécessaire au
développement du site. Ainsi ces derniers sont installés uniquement sur le
serveur.
Cela permet de mieux préparer le serveur de production donc d’avoir un environnement de développement conforme à la production.
Inconvénients
– Il faut un minimum de connaissance en administration système/DevOps/réseau et passer du temps à la configuration de l’environnement contrairement aux outils comme WAMP/EasyPhp.
– Préparer son serveur (fichier host client/serveur, installation des
technologies, …) avant de débuter la programmation.
– Il faut jongler avec le terminal pour les connexions SSH et un client SFTP si l’IDE ne l’intègre pas.
Ansible peut être une solution de gagne temps et d’optimisation de ces inconvénients. Je pense que c’est un outil auquel je m’intéresserai.
L’OS
Je ne rentre pas dans la guerre des OS. Mais actuellement Windows, OSX et Linux sont très bien pour le développement web. Surtout Linux qui est déjà le système d’exploitation le plus utilisé pour les serveurs web et qu’il suffit la plupart du temps d’utiliser le gestionnaire de paquets pour installer son environnement. Alors que sur Windows il faut souvent aller sur le site de l’éditeur, télécharger le logiciel et l’installer ou alors passer par des gestionnaires de paquets comme npm ou gem. J’ai une petite préférence quand même pour Linux mais j’utilise beaucoup les technologies Microsoft (WPF/UWP) donc je reste sur Windows. Même avec .NET Core, je ne peux pas me passer de Visual Studio 😊.
Les IDE
Pour la partie back-end, j’utilise Microsoft Visual Studio, pour le
front-end JetBrains Rider ou Microsoft Visual Studio Code.
Visual Studio me permet de développer mes API, il reste mon IDE préféré mais malheureusement pour le web, ce n’est pas le meilleur. Il est assez lourd. Il faut pas mal de configuration et installer des extensions pour avoir un environnement opérationnel.
Rider est excellent, en soit IntelliJ avec les bons plugins fait l’affaire
aussi. L’éditeur Jetbrains produit juste des outils fabuleux.
Visual Studio Code est pour moi l’éditeur de texte indispensable et le meilleur. Il est rapide, léger et c’est Microsoft. 😊 Il gère très bien les technologies basées sur JavaScript, notamment Typescript. Les fonctionnalités comme le remote SSH (pour coder directement sur la prod’ 😁 – non à ne JAMAIS faire !) et LiveShare sont très appréciables.
Le terminal
Ha le terminal, ce qui nous permet de croire que l’on n’est dans la matrice
et qui nous fait passer (les développeurs) pour des hackers russes auprès des
moldus…
– Sous Windows, j’utilise Terminal, le
terminal open-source de Microsoft et le bash Debian du WSL (Sous-système Linux
sous Windows).
– Sous OSX, j’utilise iTerm avec un le thème Argonaut de
http://iterm2colorschemes.com/ avec l’outil Fish Shell pour une meilleure
auto-complétion
– Sous Linux le terminal Terminator avec le même thème que sous OSX et le même outil
Base de données
J’utilisais MySQL. Beaucoup utilisent PhpMyAdmin pour administrer leur BDD. Mais par souci de sécurité et de fainéantise, je ne préfère pas l’utiliser. MySQL met à disposition un client afin d’administrer sa BDD de manière graphique donc autant l’utiliser. MySQL Workbench offre les mêmes possibilités que PhpMyAdmin.
Comme je travaille beaucoup avec les technologies Microsoft, je mets de plus en plus en place SQL Server sous Docker avec comme client SQL Server Management Studio (SSMS pour les intimes). Il s’intègre mieux à l’environnement Microsoft et permet le minimum de paquet Nuget pour le connecter à l’ORM EntityFramework.
Client SFTP
J’utilise en complément de Rider qui intégrer cette fonctionnalité, FileZilla. L’interface au niveau design en est au même point que NotePad++ mais il fait le taffe et reste simple d’utilisation.
Design
Malgré ma volonté de trouver un logiciel cross-plateforme pour remplacer Adobe Photoshop, je suis resté sur Adobe Photoshop… J’ai essayé Gimp, mais le feeling ne passe pas. Malgré un bon début avec Affinity Designer qui tourne sous OSX et Windows mais toujours pas sur Linux… J’utilise aussi Adobe XD pour maquetter mes sites ou applications.
Gestionnaire de version
Là c’est incontestable, mon outil est Git ! Il est puissant et je le trouve intuitif (peut-être que c’est une question d’habitude). J’héberge mon code sur GitHub et sur mon serveur Gogs qui est légé et proche de GitHub par rapport à son GUI. GitLab est très intéressant mais il prend toutes les ressources du serveur. Comme client j’utilise Git Extension.
N’hésitez pas à laisser un commentaire, à partager votre workflow. 😉