Dans un contexte de multi-projets, nos postes de travail doivent être capables de s’adapter à différents environnements de travail.
Node Version Manager, SDKMAN! et Docker vont être d’un grand secours pour rendre agile nos machines.
Node Version Manager (aka nvm) est un manager de version pour NodeJS, conçue pour être installé par utilisateur et invoqué par shell.
Pour installer ou mettre à jour nvm, il suffit de lancer le script d’installation en exécutant la commande ci-dessous :
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Pour télécharger, compiler et installer la dernière LTS de NodeJS :
$ nvm install --lts$ nvm use --lts
Pour installer et utiliser une LTS spécifique :
$ nvm install lts/erbium$ nvm use lts/erbium
Pour supprimer une version :
$ nvm uninstall lts/erbium
SDKMAN! est un outil pour gérer des versions parallèles de multiples JDK et SDK. C’est le nvm du monde Java.
Tout comme nvm, il suffit d’exécuter la commande ci-dessous pour installer SDKMAN!.
$ curl -s "https://get.sdkman.io" | bash
Pour mettre à jour :
$ sdk selfupdate
De temps en temps, SDKMAN! nécessite une mise à jour pour récupérer (ou retirer) les candidats. SDMAN! vous informera du moment où il juge nécessaire ce refresh. Lorsque cela arrive, il suffit de lancer cette commande :
WARNING: SDKMAN is out-of-date and requires an update.$ sdk updateAdding new candidates(s): kotlin
Vous pouvez lister les versions disponibles de Java :
$ sdk list java
L’installation d’un SDK particulier peut-être fait via cette commande :
$ sdk install java 17.0.4-tem
Vous pouvez bien entendu désinstaller une version installée :
$ sdk uninstall java 17.0.4-tem
Pour connaître la version en cours d’un candidat :
$ sdk current javaUsing java version 17.0.4-tem
Pour changer de version :
$ sdk use java 17.0.4-tem
Docker est un outil permettant de créer, déployer et lancer des applications utilisant des containers facilement. Un container est une unité standard de logiciel qui peut être utilisé pour packager des applications et toutes ses dépendances dans un unique package. Ces containers peuvent être ensuite exécutés sur n’importe quelle plateforme sans se préoccuper de l’OS ou du hardware.
Nous allons utiliser Docker pour faire tourner une instance de MongoDB. Cela va nous permettre d’avoir sur notre machine plusieurs versions d’une base de données sans que cela ne crée aucun conflit. Un MongoDB containerisé fonctionne exactement comme un non-containerisé sans avoir à s’occuper de la configuration sous-jacente.
En installant Docker Desktop, vous allez mettre en place :
Pour installer Docker Desktop, rendez-vous sur la page produit de Docker Desktop et téléchargez l’installateur pour Mac. Faites attention à bien choisir l’installateur en fonction de votre type de processeur.
Une fois Docker Desktop installé et lancé, vous retrouverez une icône Docker. Dès que les containers ont arrêté de clignoter, Docker est prêt à fonctionner.
Nous commençons par récupérer le container de MongoDB souhaité :
$ docker pull mongo:5.0.10
Puis nous lançons le container :
$ docker run --name mongodb.5.0.10 -p 27017:27017 mongo:5.0.10
--name
permet de nommer l’instance de votre container.
-p
permet de rediriger le port 27017 de MongoDB vers le port 27017 de votre machine.
Vous pouvez ensuite vous connecter à l’instance de MongoDB soit en cliquant sur l’icône dans l’interface de Docker Desktop.
Soit en ligne de commande :
$ docker exec -it mongodb.5.0.10 bash$ mongo
Vous devriez avoir une sortie semblable à celle ci-dessous :
MongoDB shell version v5.0.10connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit session: session { "id" : UUID("9316d0d6-4ddb-4646-9dd9-b3885ea1d68b") }MongoDB server version: 5.0.10================Warning: the "mongo" shell has been superseded by "mongosh", which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in an upcoming release.For installation instructions, see https://docs.mongodb.com/mongodb-shell/install/================---The server generated these startup warnings when booting:2022-08-17T11:49:32.564+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem2022-08-17T11:49:33.380+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted------Enable MongoDB's free cloud-based monitoring service, which will then receive and display metrics about your deployment (disk utilization, CPU, operation statistics, etc).The monitoring data will be available on a MongoDB website with a unique URL accessible to you and anyone you share the URL with. MongoDB may use this information to make product improvements and to suggest MongoDB products and deployment options to you.To enable free monitoring, run the following command: db.enableFreeMonitoring()To permanently disable this reminder, run the following command: db.disableFreeMonitoring()---
Une fois connecté à la base de données, vous pouvez lancer des commandes :
$ show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB
Nous avons vu comment rendre nos postes plus agiles en suivant toujours le même pattern : nous avons intercalé à chaque fois un soft pour ensuite pouvoir facilement piloter la version installée sur le poste.
Demain, nous nous dirigeons plutôt vers des postes complètement déportés dans le cloud où nous lancerons à partir de nos ordinateurs un IDE léger qui s’y connectera. Cela permettra de configurer directement l’environnement de travail des collaborateurs dans le cloud et facilitera considérablement l’onboarding de ces derniers.
Ayant procédé à l’onboarding de nombreux développeurs au cours de ma carrière, j’ai été confronté à ces problématiques.
N’hésitez pas à me contacter pour que nous trouvions ensemble le meilleur workflow à mettre en place.