Par thématique

<- Retour
Entreprises
->
Collectifs & freelances
->
Inside collective.work
->

10 juin 2022

5 min

Product & Tech

Première version de votre app web : quelle stack choisir ?

Vous avez un profil business et souhaitez lancer une application web ? Il est fort probable que vous vous sentiez perdu dans l’océan de choix techniques possibles.

Si vous souhaitez pouvoir discuter de ces sujets avec votre CTO, vos prestataires et vos freelances, vous êtes au bon endroit !

Qu’est ce qu’une stack technique ? Quels sont les critères à prendre en compte ? Comment choisir une stack adaptée à votre projet et à ses contraintes ? Comment s’assurer que les décisions d’aujourd’hui permettront d’aller vite, sans pour autant créer de la dette technique ? Ce sont les sujets que nous vulgarisons dans cet article !

Quelle stack choisir selon le style de projet ?

Une stack technique, c’est quoi ?

Commençons tout d’abord par les fondamentaux en définissant ce qu’est une stack technique. Il s’agit d’un ensemble de technologies utilisées pour construire une application web ou mobile.

Les langages de programmation (front-end et back-end), les frameworks (qui fournissent une structure et des composants logiciels pour faciliter le développement), et les librairies (des fonctions et classes déjà codées) représentent ce que l’on pourrait appeler le “socle” de la stack.

Les langages front-end comprennent HTML, le langage standard du web, CSS, qui permet de mettre en page HTML, et enfin JavaScript qui permet de rendre HTML et CSS interactifs. Les frameworks et librairies front-end JavaScript incluent notamment React, Angular et Vue.js. 

Les langages back-end sont eux nombreux. On peut citer par exemple JavaScript à nouveau, Python, Ruby, PHP, Go et Rust. Les frameworks et environnements de développement les plus populaires pour les accompagner sont entre autres Node.js, Express, Django, Rails et Symfony.

 

La stack comprend également d’autres éléments qui vont structurer l’architecture de l’application : les serveurs, les bases de données, les systèmes d’exploitation (ensemble des programmes faisant le lien entre le hardware, les applications de l’ordinateur et l’utilisateur), les solutions cloud d’hébergement, les outils de monitoring (suivi des performances et des éventuels incidents)…

Enfin, des choix additionnels d’outils pourront venir compléter la stack tels que les design patterns qui constituent des bonnes pratiques de conception et d’architecture, la CI/CD permettant d’intégrer, distribuer et déployer du code en continu, les outils de gestion de projet, les IDE (éditeur de code) et les outils de versioning.

Les 4 points à garder en tête lors du choix de la stack technique

La maturité des technologies

Dan McKinley, Principal Engineer de plusieurs start-ups à succès dont Etsy et Mailchimp, et désormais VP of Data au sein de Mozilla, conseille de ne pas trop réfléchir et de choisir la stack la moins fun et la plus traditionnelle possible

Son point principal : certaines nouvelles technologies peuvent être attirantes, mais ne sont pas encore suffisamment matures. Il y a certaines incertitudes quant à leur fonctionnement. Sur ces technologies, il y a un risque non négligeable de voir apparaître des problèmes difficiles à résoudre sur le long terme.

Son conseil actionnable : imaginez que vous disposez de trois “tokens d’innovation”. Vous avez le droit d’explorer 3 technologies peu matures (sur l’ensemble de la stack). Sur tout le reste, contentez vous de faire des choix traditionnels et éprouvés.

L’expertise de l’équipe en place

Utiliser des technologies déjà maîtrisées par l’équipe technique peut être un argument de poids dans le choix d’une stack technique. Cela permet en effet de développer plus rapidement l'application sans passer par une phase d’apprentissage. 

Notre conseil : veillez à ne pas vous disperser en essayant de répondre aux affinités de chaque membre de votre équipe, car une stack technique trop diversifiée peut rapidement devenir problématique en termes de recrutement et de maintenance.

Le recrutement

Un autre critère important dans le choix de la stack technique peut être la facilité de recrutement attendue. Quelle est la disponibilité des développeurs maîtrisant vos technologies ?

Et la réponse n’est pas si évidente! D'un côté, choisir des technologies traditionnelles vous assureront d’avoir des profils disponibles en nombre suffisant… Mais de l’autre, ces profils sont probablement davantage sollicités que ceux qui maîtrisent des technologies de niche.

Notre conseil : privilégiez des technologies éprouvées mais qui bénéficient également d’une communauté grandissante de développeurs. En 2022, cela reviendrait, à besoin égal, à considérer TypeScript, Python ou Go plutôt que PHP comme langage back-end.

La taille de la communauté

Naturellement, la taille de la communauté a également son importance. Plus la communauté d’une technologie est grande, plus vous serez en mesure d’obtenir facilement de l’aide sur les forums ou au travers d’articles publiés sur des blogs tech.

Notre conseil : en dehors de vos 3 “tokens d’innovation”, assurez vous que la technologie que vous choisissez est dans le top 5 des communautés les plus actives de sa catégorie (via GitHub ou Stack Overflow).

Les stack techniques à privilégier 

Si vous êtes une start-up 

Si votre critère principal est de sortir une application web rapidement, on vous conseille de vous tourner vers des technologies reconnues, bien documentées, faciles d’utilisation et qui permettent de mettre  rapidement des applications en production. 

La stack MEAN est par exemple particulièrement adaptée à ce cas d’usage. Elle inclut MongoDB pour la base de données, Express pour le framework côté back-end, Angular pour le framework côté front-end et Node.js comme environnement d’exécution back-end pour JavaScript. Ce sont toutes des technologies éprouvées disposant de documentations détaillées, et Node.js permet de conserver le même langage pour le front-end et le back-end (JavaScript) ce qui simplifie grandement le développement des applications. Cet environnement d'exécution fonctionne par ailleurs sur le moteur V8 de Google, ce qui le rend très rapide.

D’autres langages back-end comme Ruby ou Python sont également reconnus pour permettre de développer des applications rapidement et peuvent être également considérés.

Voici 2 exemples de stack utilisées par des start-ups et scale-ups :

Aircall (une des licornes française) utilise les technologies suivantes :

Langages de programmation : JavaScript, Python, Node.js, Go, TypeScript, Ruby, Go, Swift, Kotlin

Frameworks/librairies : React, Rails, Electron

Bases de données : MySQL, Redis, Amazon RDS

Cloud : Amazon S3, Amazon EC2, Amazon ElastiCache, Amazon EBS

Data : Airflow

Big data : Amazon Redshift

Monitoring : Sentry, Datadog, Rollbar

Autres outils : GitHub, Git, Docker, Terraform, Jest, SonarQube, Cucumber

La jeune start-up Dotfile issue du studio eFounders et qui propose un service pour permettre aux entreprises d’onboarder plus facilement leurs clients et fournisseurs, utilise les technologies suivantes :

Langages de programmation : JavaScript, Node.js, TypeScript

Frameworks/librairies : React, NestJS

Bases de données : PostgreSQL, Amazon RDS

Monitoring : Datadog

Autres outils : Amazon SQS, Git, GitLab, Docker, Terraform, Kubernetes, Jest, GitLab CI, Webpack, ESLint, Cypress

Si vous êtes une entreprise plus mature

Dans le cas d’applications incluant plus de fonctionnalités , vous devrez probablement aller vers des technologies qui réduisent la complexité

La stack LAMP peut constituer un bon choix dans cette situation: même si elle n’utilise pas les technologies dernier cri, elle est fiable, solide et convient parfaitement aux applications web dynamiques complexes. Son architecture sécurisée et ses pratiques de chiffrement ne sont par ailleurs plus à prouver. Elle comprend Linux comme système d’exploitation, Apache comme serveur web, MySQL comme base de données et PHP comme langage de programmation back-end.

La stack MERN peut quant à elle convenir pour les applications web orientées vers la performance. La librarie front-end React qui est utilisée possède en effet un haut niveau de flexibilité et de réactivité, notamment grâce au DOM virtuel

L’entreprise Airbnb utilise ainsi la stack suivante :

Langages de programmation : JavaScript, Ruby, Java

Frameworks/librairies : React, Rails

Bases de données : MySQL, Redis, Hadoop, Amazon RDS

Cloud : Amazon S3, Amazon EC2, Amazon ElastiCache, Amazon EBS

Data : Airflow

Big data : Presto, Druid

Serveur : NGINX

Monitoring : New Relic, Kibana, Sentry, Datadog, Amazon CloudWatch

Autres outils : GitHub, Logstash, Vagrant, Chef, Apache Mesos, Amazon CloudFront, Jest

Et voici la stack technique de Shopify :

Langages de programmation : JavaScript, Ruby, Python, Go, Lua

Frameworks/librairies : React, Rails, React Native

Bases de données : MySQL, Redis, Memcached, Hadoop, dbt

Big data : Apache Spark

Serveur : NGINX, OpenResty, Unicorn

Monitoring : New Relic, Datadog, Pingdom, StatsD

Autres outils : Kafka, Apache Beam, GitHub, Git, Docker, Kubernetes, Google Kubernetes Engine, Vagrant, Chef, Zookeeper, StatusPage.io, Buildkite, Percy

En fonction de votre domaine d’activité

Certaines technologies sont quelquefois plus utilisées dans certains domaines car leurs caractéristiques conviennent mieux aux problématiques du secteur en question. Il arrive même parfois que  des langages soient créés pour répondre à des problématiques spécifiques : le langage Erlang a ainsi été imaginé en collaboration avec l’entreprise de télécommunication Ericsson pour répondre aux enjeux de la téléphonie. Il est désormais utilisé par WhatsApp, entre autres.

Si vous lancez une Fintech, vous considérerez probablement l’utilisation de Python en back-end, comme le montre l’étude de l’entreprise HackerRank qui reprend les langages utilisés dans les tests de code par secteur. Ainsi, 100% des tests techniques réalisés par les Fintechs observées ont inclus du Python. Cela s’explique notamment par la syntaxe simple et propre de ce langage, et surtout par le  nombre conséquent de librairies disponibles pour simplifier la réalisation de calculs financiers complexes. Python permet également de faire tourner des algorithmes poussés, sans pénaliser la performance de l’application.

Le langage Java est quant à lui plébiscité par les entreprises de domaines très différents comme la santé et les réseaux sociaux. Toujours d’après cette étude, 100% des tests techniques proposés par les entreprises de ces secteurs incluaient du Java. Cela peut s’expliquer principalement par le choix de Google d’utiliser le langage pour sa plateforme Android ainsi que par le rôle dominant de Java dans l’écosystème du Big Data.

Les entreprises développant des applications liées à la sécurité sont généralement plus adeptes de C++ pour leur back-end. Un choix qui peut facilement se comprendre puisque ce langage de bas niveau est facilement auditable. Ainsi, 100% des tests techniques réalisés par les entreprises de ce secteur incluent ce langage d’après HackerRank.

En fonction du profil de développeurs recherché

Le salaire des ingénieurs que vous embaucherez pour travailler sur le projet ne sera pas le même selon les technologies utilisées. 

La dernière étude de Stack Overflow (2021) montre que le salaire médian d’un développeur qui maîtrise le framework React est de 58 128 dollars tandis qu’un développeur expert sur Angular sera payé aux alentours de 49 450 dollars.

A ces coûts salariaux s’ajoutent des coûts de licences si les technologies ne sont pas open source, et de maintenance pour les serveurs par exemple.

Attention cependant à ne pas trop accorder d’importance à ces études : le salaire d’un développeur dépendra davantage de son niveau de compétence que de sa stack de prédilection. Un bon ingénieur développeur doit pouvoir s’adapter à n’importe quelles technologies !

Conclusion

On espère vous avoir donné quelques pistes pour que vous puissiez vous impliquer dans le choix de la stack technique de votre prochaine application web ! En prenant en compte les différents critères que nous avons détaillés dans l’article comme la maturité des technologies, le recrutement, la taille des communautés, l’expertise de l’équipe ainsi que les spécificités de la structure dans laquelle vous évoluez, vous ne devriez pas faire d’erreur.

En complément, on vous conseille aussi vivement de consulter les prises de décisions sur le site StackShare qui pourront vous aider à comprendre pourquoi des CTOs et des développeurs ont choisi telle technologie plutôt qu’une autre, ou ont décidé d’en abandonner certaines. Gardez enfin en tête que la durée de vie des technologies est limitée et que le choix d’une stack technique n’est jamais définitif !

Anne-Laure Civeyrac

Rédactrice Web

Contenus

Première version de votre app web : quelle stack choisir ?

Ces articles pourraient vous intéresser