Quand on démarre un projet, qu’on soit en solo ou en équipe, vient toujours le moment de décider des technos à utiliser ; de choisir la stack technique.
Ces choix ne sont évidemment pas à prendre à la légère, tout le projet va reposer sur ces technos. Il serait dommage de choisir la mauvaise techno dès le début, non ?
À travers cet article et de l’exemple d’un projet web, nous allons voir quelles sont les pistes à suivre pour ne pas se tromper lors de son choix.
Une stack technique, c’est quoi ?
Mais, déjà, qu’est-ce qu’une stack technique ? Une stack, c’est littéralement une pile, en anglais. Une stack technique n’est donc rien de plus qu’une pile, un empilement, des technos qu’on va utiliser pour un projet.
Combien d’étages compte cette pile ? Cela dépend de vous ou de votre équipe, et du découpage technique que vous faites.
De manière simpliste, pour prendre l’exemple d’un projet web, on aurait classiquement la pile suivante :
Néanmoins, si on veut être précis, complet, un projet web, c’est aussi :
- Des frameworks, en plus des langages ;
- Une infrastructure de gestion de code et de déploiement (Git, Docker, AWS, etc.) ;
- Des outils de gestion (Jira, Trello, Slack, etc.) ;
- Voire – même si on sort de la technique – des méthodologies de gestion de projet, type Scrum.
Il est donc possible de découper une stack très finement, et de se retrouver avec des dizaines de technos/méthodos empilées.
4 conseils pour bien choisir sa stack technique
Maintenant qu’on a posé les bases, voyons les points-clés à prendre en compte lorsqu’on veut définir une stack pour un projet web.
Il y a beaucoup de critères possibles, voyons ici les quatre principaux.
1) La maturité des technos
Qu’on parle d’un langage, d’un framework ou d’outils, il faut s’orienter vers une techno mature. Certaines technos sont prometteuses, certes, mais cela ne veut pas dire qu’elles vont prendre l’ascendant sur les autres.
Pour essayer de jauger de la maturité d’une techno, il est bon de se référer à son pourcentage d’utilisation, mais aussi à sa communauté, et à l’évolution de l’outil. Par exemple, regarder la fréquence de mise à jour de la techno est une bonne idée. De même que voir le nombre de personnes qui y participent (s’il s’agit d’open source) ou la suivent (nombre d’étoiles sut GitHub), sont des choses à faire.
Attention toutefois à ne pas trop rester dans sa zone de confort en choisissant une techno vieillissante. Ce qui nous amène au conseil suivant :
2) Penser obsolescence
Et oui, choisir une techno mature, c’est bien, mais il ne faut pas non plus rester sur ses acquis et se baser sur une qui est sur le déclin.
Il convient donc de faire de la veille techno efficace, pour miser sur des langages ou frameworks plus récents et prometteurs, pour profiter de ce qu’ils peuvent apporter : meilleurs performances, développement plus rapide, etc.
La difficulté est ici de trouver le juste milieu entre une techno mature mais qui ne soit pas sur le déclin, et une techno prometteuse qui a des chances de s’imposer.
3) En fonction des compétences de chacun
Qui dit développement web dit – la plupart du temps – équipe de développement. À moins d’être seul sur un projet (et donc d’être full stack), un projet web est développé par au moins deux personnes : un développeur front end, et un développeur back end.
Dans ce cas là, et c’est encore plus vrai si l’équipe est plus grosse, il convient de prendre en compte les capacités et les attentes de tous.
Si un développeur back-end connait PHP et Symfony sur le bout des doigts, est-ce vraiment utile de choisir une autre techno serveur ?
Si le développeur front-end est un expert de React, doit-on lui demander d’apprendre Vue.js ?
Cela dépend évidemment de chacun – peut-être ont-il envie d’apprendre ces technos – mais aussi du projet.
4) Le projet en lui-même
En effet, la stack technique doit aussi dépendre du projet en lui-même. Par exemple, s’il s’agit de développer un back-office très lourd, choisiriez-vous les mêmes technos que pour un site vitrine ? Probablement pas.
Voici quelques points à prendre en compte pour vous aider à décider d’une stack en fonction d’un projet :
- Le type de développement : un simple POC, MVP ou projet complet ;
- La complexité du projet, pour trouver les technos les plus adaptées ;
- Le besoin en performances.
Le choix d’une stack technique par l’exemple : le projet web
Maintenant qu’on a tous les éléments en main pour choisir sa stack technique, rentrons dans le vif du sujet : les technos à choisir.
Comme on l’a dit, la définition d’une stack technique peut rester simple comme être découpée en une dizaine d’éléments.
Pour l’exemple du projet web, nous allons rester dans le classique et parler du triptyque :
- Front end ;
- Back end ;
- Base données.
Dans chacun de ses éléments, les technos se sont largement multipliées depuis une dizaine d’années, ce qui donne assez d’éléments pour s’y perdre.
Faisons le point.
Les technos front-end
Pour le front-end, le choix du langage est assez limité, en effet, il est difficile de se passer JavaScript. Mais ce n’est pas parce qu’on un seul langage que le choix de la stack est facile pour autant… Non seulement il existe de multiples frameworks et outils JavaScript, mais il faut aussi prendre en compte les autres éléments du frontend : CSS, templating, etc.
Les frameworks JavaScript
Si vous êtes développeur web, vous connaissez sûrement les trois géants que sont Angular, React et Vue.js.
Nous n’allons pas ici détailler ces frameworks (non pas qu’ils soient équivalents, mais la comparaison mériterait un article complet), mais nous pouvons toutefois parler des outils et librairies qui gravitent autour :
- Avec Angular, on retrouve par exemple RxJS ;
- Pour React, on a les classiques Redux et Next ;
- Et pour Vue, on retrouve Nuxt.
Le CSS
Comment parler front end sans mentionner le CSS ? Car si JavaScript gère toute la partie logique du développement d’une interface, il ne faut pas oublier pour autant le CSS, là pour habiller cette interface.
Et là aussi, il existe de multiples possibilités pour choisir l’outil CSS qui rejoindra votre stack technique.
En plus de l’utilisation de SASS, par exemple, on a la possibilité d’utiliser des frameworks CSS. On retrouve parmi ces derniers, entre autres :
- Bootstrap ;
- Tailwind ;
- Bulma ;
- Semantic UI.
Nous avons écrit un article complet sur les frameworks CSS, pour savoir lequel choisir et quand les utiliser.
Les technos back-end
Si JavaScript règne en maitre côté frontend, le choix côté back-end est légèrement plus complexe… Non seulement on a de multiples frameworks de développement, mais on a également un (large) choix de langages !
Pour cet exemple, nous allons nous contenter de PHP, Java, Python et Node. Mais sachez qu’on peut aussi faire du backend avec du Ruby ou du Go.
Sachez aussi que, si on veut s’extirper du développement complet d’un backend, on peut alors se tourner vers le serverless, avec Firebase, AWS ou Microsoft Azure.
PHP
PHP est le langage backend le plus utilisé, mais c’est en grande partie grâce aux CMS (Content Management System) tels que WordPress ou PrestaShop, tous deux utilisant ce langage en tant que techno back.
Mais il est tout de même beaucoup apprécié des développeurs back-end, qui l’utilisent généralement associé à un de ses principaux frameworks :
- Symfony ;
- Laravel ;
- CakePHP ;
- Zend.
Java
Java, bien qu’en perte de vitesse de manière générale, est toujours très utilisé lorsqu’on parle de techno back-end. Et pour cause, c’est un langage stable et très mature.
Parmi les plus gros frameworks de développement Java, on retrouve Spring, Struts ou Hibernate.
Python
Une autre techno back end, dont l’utilisation est plus récente, c’est le Python. Ce langage, qui s’est récemment hissé numéro un des langages les plus utilisés au monde, se fait aussi sa place dans le monde du développement web.
Au niveau des outils qui se basent sur Python, on se doit de citer évidemment Django.
Node.js
Terminons cette section en parlant d’un outil permettant de faire du développement backend grâce à une techno JavaScript : Node.js.
En effet, on a aujourd’hui la possibilité de faire du développement serveur avec du JavaScript, et cette techno est de plus en plus utilisée. Elle a l’avantage de permettre à des développeurs front de se mettre plus facile à du back, en restant sur le même langage.
Au niveau des frameworks Node, s’il a des concurrents, comme Koa, c’est très souvent Express qui est choisi pour ce type de développement.
La base de données
On a fait le tour des technos front et back, mais il nous reste à parler de la gestion de nos données.
Ici, deux grands mondes s’opposent : la gestion de données relationnelles (dit SQL), versus les SGBD non relationnels (dits NoSQL).
Le SQL, plus ancien, compte dans ses rangs des technos comme MySQL ou Oracle. NoSQL, le dernier arrivé mais avec une adoption rapide, est notamment connu grâce à MongoDB, qui gère les données sous forme de documents.
Pour pouvoir faire votre choix entre ces deux technos, nous avons écrit un article complet sur les différences entre ces deux géants de la donnée.
Un exemple concret de stack technique : MEAN
Peut-être avez-vous déjà entendu parlé de la stack MEAN.
Il s’agit d’un pattern de stack, un modèle, que vous pouvez utiliser tel quel, sans avoir à décider unitairement de chaque techno et de chaque bibliothèque. C’est pratique si vous vous sentez un peu perdu au milieu de tous ces langages et frameworks, et si vous ne voulez pas passer des heures à décider de ce qui serait mieux pour un projet.
Pour tout savoir sur cette stack, nous avons là aussi un article complet dédié à MEAN.
Voilà pour ce mini guide au sujet des stacks techniques, en espérant qu’il vous ait aidé !
Dites-nous en commentaire quelle est votre stack technique préférée !