Qu'est ce qu'une stack technique ?

Les développeurs ne peuvent pas gérer une stack technique sans avoir une idée globale de ce qu'il se passe, c'est pourquoi il est important d'avoir dans sa stack une plateforme analytique telle que Mixpanel. Chaque outil de votre stack génère, analyse ou utilise des données. Toutes ces sources de données doivent pouvoir communiquer entre elles, afin d’assurer le meilleur fonctionnement possible.

À quoi sert une stack technique ?

Une stack technique, en anglais « technology stack », également appelée  « tech stack », « pile de technologies » ou « écosystème de données », est une liste de tous les outils technologiques utilisés pour développer et faire fonctionner un programme. Le site de Facebook, par exemple, est construit à partir d’une combinaison de frameworks de codes et de langages tels que JavaScript, HTML, CSS, PHP, et ReactJS. C’est la « stack technique » de Facebook. 

Les développeurs parlent de stacks techniques car elles rendent plus simple l’échange d’un large volume d’informations sur la façon dont une application est construite. Le terme est parfois appliqué aux services de marketing (martech stacks) ou aux services commerciaux (stacks de vente), mais il a été créé à l’origine par les développeurs de logiciels. 

Une stack technique résume de façon limpide les langages de programmation, les frameworks et les outils dont un développeur aura besoin pour interagir avec une application. 

La plupart des langages de programmation ayant des qualités et des limites bien connues, la stack technique permet de donner une idée des forces et des faiblesses d’un programme dans sa globalité. Si un programmeur sait qu’un logiciel est construit en PHP, par exemple, il sait que sa base de code est probablement large et difficile à déboguer. PHP est un langage de programmation à l’inefficacité tristement célèbre, et il est pourtant utilisé dans la plupart des applications web populaires. Si un programmeur sait qu’une application a été construite avec Ruby on Rails, il sait qu’il va devoir apprendre le langage de programmation Ruby s’il veut y apporter des modifications. 

Les stacks techniques sont particulièrement utiles dans le processus de recrutement de développeurs. « Si un candidat n’est pas familier avec les frameworks et les langages de la stack technique, ou s’il n’a pas la volonté de s’y familiariser, il n’est probablement pas le candidat que nous cherchons », a déclaré John Debs, un ingénieur logiciel full-stack, à la plateforme de messagerie Lua. Les entreprises qui tentent de recruter des développeurs incluent souvent leur stack technique dans les descriptions d’offres d’emploi.

Mixpanel Engineering job postings

Le département ingénierie de Mixpanel recrute en fonction du niveau d’expérience avec la stack technique.

Que contient une stack technique ?

Les stacks techniques sont toutes différentes. Les équipes décident des technologies qu’elles veulent utiliser et construisent ensuite à partir d’un langage de base, puis ajoutent d’autres outils et services au fur et à mesure du développement. 

« Quand vous avez un produit à l’esprit, vous commencez en général par le front-end, la partie que voit le client, et vous décidez ensuite de quel outil back-end vous avez besoin pour faire tourner le tout », a déclaré Lira Skenderi, analyste de données et ingénieure chez l’hébergeur Digital Ocean. 

La sélection de technologies qui en découle est appelée une « stack » ou « pile », car chaque nouvel outil construit sur le précédent, permettant aux développeurs de personnaliser davantage l’application. 

Les développeurs travaillant sur une application visant à être utilisée par des millions de personnes chaque jour ont intérêt à choisir des langages de programmation adaptés aux opérations à haute lecture (high-read). Les opérations à haute lecture sont des opérations auxquelles de nombreux utilisateurs peuvent accéder simultanément. Si l’application est destinée à parcourir le web pour y recueillir des informations, les développeurs ont plutôt intérêt à opter pour des langages à haute écriture (high-write). 

Toutes les stacks techniques sont divisées entre la partie « back-end » et la partie « front-end ». On peut également parler de « côté serveur » ou de « côté client ». Si une stack technique était un ordinateur portable, le back-end serait les composants internes le faisant fonctionner. Le côté client, lui, serait l’écran, la coque et le clavier, qui permettent à l’utilisateur d’interagir avec l’ordinateur. Lorsqu’une offre d’emploi exige un ingénieur ayant une expérience back-end, front-end ou full-stack, elle fait référence à la partie de la stack technique dans laquelle le candidat, idéalement, est spécialisé.

Technology stack overview of a simple application

Dans les technologies back-end, on retrouve des frameworks web, des langages de programmation, des serveurs et des systèmes d’exploitation. La LAMP, par exemple, est une stack technique de développement web particulièrement populaire. Elle est l’abréviation de « Linux operating system, Apache HTTP server, MySQL relational database management system,  PHP ». 

Les technologies front-end constituent l’interface visuelle, telles que les sites web et les applications. Elles sont les éléments visuels pour lesquels la plupart des applications sont connues, et elles fournissent aux utilisateurs les fonctions dont ils ont besoin pour faire ce qu’ils ont à faire. Les langages front-end sont généralement beaucoup plus simples que les langages back-end. La plupart des interfaces d’application web sont développées avec le langage de programmation Javascript et les frameworks Angular JS, Backbone.JS, et ReactJS. Les technologies front-end pour les applications smartphone comprennent l’Objective-C et le SWIFT pour iOS, et Java pour Android.

Quelques conseils pour mettre au point une stack technique

Comme pour les fondation d’une maison, l’ordre dans lequel une stack est construite est important. Chaque nouvelle couche s’appuie sur la précédente et les couches enterrées sont très difficiles à déterrer. Voici quelques conseils de base pour la mise au point d’une stack technique :

Prévoyez l’avenir

Préparer une stack technique pour l’avenir peut être une épée à double tranchant. Si les développeurs n’intègrent pas dans leurs plans l’éventuelle croissance de leur application, ils pourraient se retrouver à devoir lui rajouter des technologies, ce qui la rendrait plus lourde et difficile à gérer. 

D’un autre côté, s’ils anticipent une croissance exponentielle et investissent trop, trop tôt dans des technologies coûteuses, ils risquent de manquer d’argent avant même que l’application n’atteigne le succès, si elle l’atteint. 

La meilleure stratégie consiste donc à créer des produits ayant un minimum de viabilité, comme des applications web, en utilisant des outils open source, afin de prouver un concept avant d’investir de l’argent dans celui-ci. Il faut également privilégier les technologies offrant la possibilité de communiquer des données aux autres outils de votre stack, même si ça ne semble pas toujours nécessaire au départ. En cas de doute, les développeurs devraient toujours se tourner, dans la mesure du possible, vers les technologies et les langages les plus évolués, car ils sont souvent plus fiables.

Appuyez-vous sur la communauté open source

Les développeurs du monde entier contribuent au développement d’outils open source, libres d’utilisation, et disponibles à toute personne connectée à internet. La portée de la communauté open source et la valeur qu’elle offre sont prodigieuses. 

« Les logiciels libres expliquent probablement la renaissance technologique de ces 10 à 20 dernières années », selon Debs. « N’importe qui peut se tenir sur les épaules de géants et développer des produits basés sur une technologie sous-jacente incroyablement compliquée, qu’ils n’auraient jamais pu créer eux-mêmes. On parle de milliards d’heures de temps, et de contributions d’experts dans tous les domaines. » 

Debs estime que la création des technologies qu’il utilise au quotidien ont nécessité un effort de millions d’heures de travail de la part d’autres personnes. Toute équipe d’ingénieurs envisageant de mettre au point une stack technique aura donc la tâche plus aisée, au moins en partie, en se basant sur des technologies open source.

Gardez à l’esprit le but du programme

Les développeurs ont tendance à préférer les langages qu’ils connaissent déjà. Cela est parfois approprié, mais pas toujours. Pour mettre au point la meilleure stack technique, il est de bon usage de prendre du recul et de se demander « quelle technologie servira au mieux l’objectif de ce programme ? ». 

Par exemple, le programme sera-t-il sur mobile ou desktop ? Dans le cas ou il serait sur mobile, avec quelles applis fonctionnera-t-il ? Et s’il est sur desktop, avec quels navigateurs fonctionnera-t-il ? S’agit-il d’un site médiatique qui recevra des millions de visiteurs chaque jour, ou d’une application bancaire mobile demandant une sécurité sans faille ? Chacune de ces fins nécessitera des langages, des outils et des stacks techniques spécifiques, et différents développeurs aux compétences adaptées à chaque objectif.

Utilisez les outils analytiques

Les développeurs ne peuvent pas gérer une stack technique sans avoir une idée globale de ce qu’il se passe, c’est pourquoi beaucoup font de l’analyse produit. Les plates-formes d’analyse relient entre elles les sources de données de toute la stack technique afin de permettre un suivi détaillé des utilisateurs. Cela permet aux développeurs d’identifier les problèmes que ceux-ci rencontrent avec leur application, de la déboguer et de corriger d’éventuelles erreurs.

Pensez à la maintenance

Les équipes doivent établir le prix total des technologies nécessaires à leur stack technique avant de la mettre au point. En cas de doute, le mieux est de surestimer le coût total et de ne pas oublier d’intégrer le prix fluctuant des ingénieurs compétents. 

Les développeurs sont souvent attirés par les langages innovants, car ils renforcent leurs compétences et leur CV. À cause de cela, et bien que les langages de programmation évolués puissent apporter une fiabilité accrue, ils peuvent également rendre plus difficile l’embauche des meilleurs éléments. Parfois donc, des technologies moins coûteuses peuvent au final coûter plus cher car elles rendent plus onéreuse le recrutement des personnes les plus compétentes.