Cet article est le second de la série d’articles à propos du développement d’Ellas War. Nous allons voir les différents outils que j’utilise et comment est-ce qu’ils m’aident à optimiser le développement du jeu.
Amélioration du code
ESLint
EsLint est un analyseur de code statique pour JavaScript. Il s’intègre très bien dans la plupart des IDE (Integrated Development Environment, Environnement de Développement Intégré) et possède de nombreuses options.
$ npx eslint . --ext ts
[...]
✖ 4 problems (3 errors, 1 warnings)
J’y travaille, malheureusement certaines erreurs sont difficiles à corriger. J’ai un problème avec une librairie qui n’utilise pas encore Typescript (pour Redis).
Jasmine
Jasmine est un Framework utilisé pour tester le code JavaScript. Après avoir compilé le code et effectué tous les tests, un rapport est généré. Celui-ici peut alors être importé dans SonarQube.
SonarQube
SonarQube est une plateforme couvrant la qualité du code, la sécurité et la détection de bugs. Il fournit aussi des tableaux de bord et de l’aide pour corriger les problèmes.
La règle la plus difficile à suivre est celle de la complexité du code qui doit être de maximum 15. Chaque condition dans une fonction, ajoute un ou plusieurs points suivant sa complexité et sa place dans le code.
Déploiement sur le server
Ansible
Ansible est un gestionnaire de configuration, il utilise le langage YAML pour définir des règles qui seront ensuite appliquées sur la cible. Je l’apprécie beaucoup, pour sa simplicité d’utilisation mais il est assez lent lors des déploiements.
Docker
Qui ne connait pas les conteneurs Docker ?
Grâce à eux, je peux choisir ma version de NodeJS, faire tourner plusieurs fois le jeu sur le même serveur et ajouter un peu de sécurité. J’ai préféré utiliser directement Docker (avec compose) plutôt que Kubernetes pour économiser des ressources. Dans le futur il est possible que je passe à Docker Swarm afin de profiter des benefices d’un orchestrateur.
Monitoring
Grafana
Grafana est un outil de visualisation très puissant, j’utilise des tableaux de bord fournis avec les plugins et des maison. Mes principaux :
- Ellas War, j’appelle une API afin d’afficher les métriques du jeu
- Redis, information sur l’instance Redis utilisée par le jeu
Dozzle
Dozzle me permet de visualiser les logs des conteneurs Docker. Il est léger, simple à utiliser et disponible depuis une interface web.
Conclusion
J’essaye d’utiliser des outils simple, afin de réserver les ressources de mon serveur pour le jeu. Malheureusement je ne peux pas faire tourner tous ces services en local our sur mon serveur, cela prendrai trop de ressources. Dans mon prochain article, je parlerai des outils externes au jeu que j’utilise.