Modèle de produit IT
1. Produits modernes
On n'appelle plus les produits modernes des «programmes». Un produit moderne peut inclure des dizaines de programmes, des centaines de services internet et de nombreuses API, fournis par un centre de données cloud (on les appelle aussi centres de traitement des données), où il est déployé.
Beaucoup de produits modernes (si ce n'est tous) fonctionnent selon la paradigme Client-Serveur. C'est quand sur votre appareil (téléphone, portable, ordinateur) se trouve un programme responsable de la communication avec l'utilisateur (vous), et la fonctionnalité critique réside sur un serveur distant, où tout l'essentiel se passe ➡️🖥️
Parfois votre client peut communiquer avec plusieurs serveurs indépendants, ou le serveur d'un produit peut appeler le serveur d'un autre produit. On obtient une sorte de réseau global de clients et de serveurs, et tous interagissent entre eux.
Ainsi, il vaut peut-être mieux décrire le modèle d'applications moderne par la paradigme Client‑Internet‑Serveur. Il y a désormais tellement de communications complexes. Il est même apparu des soi‑disant «canaux intelligents de communication» qui décident eux‑mêmes à qui et quand envoyer votre requête.🛰️📡
2. Clients
On peut conditionnellement diviser les programmes clients en 4 catégories :
- 🖥️ Client desktop — un programme qui tourne sur un ordinateur.
- 📲 Client mobile — une application pour iOS ou Android.
- 🌐 Client web — site/application web qui s'exécutent dans un navigateur.
- 🌍 Client serveur — une application qui est lancée sur un autre serveur.
Chacun d'eux peut à son tour être détaillé en parties. Par exemple, le client web est un site ou une application web, donc il est composé d'un Navigateur et du Site qui s'y charge. Les navigateurs ne sont pas tous identiques et peuvent fonctionner différemment.
Mais même si l'on prend le navigateur le plus répandu, il reste le site qui s'y charge. Un site se compose généralement de trois éléments :
- 📄 HTML
- 🎨 CSS
- ⚡ JavaScript
«Rien de plus simple», direz‑vous. Pourtant aujourd'hui personne n'écrit des sites simplement en HTML et JavaScript. Pour développer des sites on n'utilise plus seulement des bibliothèques, mais des frameworks complets, comme React, Angular ou Vue ⚛️. Et ce ne sont plus des sites, mais de véritables applications web avec leurs builds, leurs tests et leurs paradigmes.
Le CSS pur n'est plus non plus largement utilisé. Il existe déjà des préprocesseurs CSS qui aident à le générer, et de véritables frameworks CSS. Pour les emails il existe même des frameworks CSS spéciaux pour que votre message apparaisse correctement dans les navigateurs et dans la plupart des clients mail 💌.
On écrit aussi de moins en moins en JavaScript pur — la plupart des grandes applications web sont créées en TypeScript, qui est ensuite compilé en JavaScript. Bon, vous avez saisi l'idée...
3. Internet et infrastructure
La communication entre client et serveur — quoi de plus simple ? Mais même dans leur relation tout a déjà changé.
Votre produit sera très probablement hébergé dans l'un des centres de données modernes. De nombreuses entreprises dans le monde proposent divers services d'hébergement pour vos produits, que ce soit sur leurs serveurs ou sur vos propres serveurs physiques. Tous les caprices sont laisables à vos dépenses.
Un serveur physique est de moins en moins «physique». Tous les centres de données modernes proposent la location de serveurs virtuels. Un serveur virtuel est un ordinateur virtuel, et il peut y avoir des dizaines de ces serveurs virtuels sur une seule machine physique. C'est pratique pour les montées en charge. Si vous avez besoin de plus de mémoire, vous pouvez l'ajouter à votre serveur virtuel en quelques minutes ⏱️.
Mais cette approche devient elle aussi obsolète : la tendance est la migration vers le cloud — c'est lorsque votre produit n'est pas seulement déployé sur un serveur virtuel dans un centre de données, mais utilise activement un grand ensemble d'infrastructures et de services de ces centres.
Vous avez besoin d'un serveur pour stocker des backups ? Il existe des infrastructures cloud pratiques pour cela. Vous voulez une base de données avec une fiabilité de 99,9999999 % ? C'est disponible aussi. Kafka, RabbitMQ, NoSQL ? Tout est déjà là et facilement configurable. Il suffit de payer.
Ces centres de données et les clouds deviennent une partie de votre produit. Par exemple, Amazon possède de nombreux centres de données dans le monde, donc ils proposent un service CDN : votre contenu public sera mis en cache sur tous les centres d'Amazon, et vos utilisateurs partout dans le monde l'obtiendront plus rapidement 🛰️.
Ou bien les requêtes à l'API de votre application peuvent transiter par un service Amazon Gateway API, qui permet de configurer très précisément l'interaction avec vos services. On peut répartir la charge entre différents services, atténuer des attaques DDoS, automatiser le téléversement de fichiers, configurer un cache intelligent, et bien d'autres choses encore 🛡️.
Ainsi, entre l'application cliente et vos services apparaissent de nombreuses «communications intelligentes» qu'il faut et qu'on peut configurer. Même si vous ne vous en occuperez jamais vous‑même, vous devez savoir qu'elles existent et qu'elles peuvent affecter fortement le fonctionnement de votre programme.
Et nous n'avons pas encore abordé des sujets comme les routeurs, les antennes 5G, les satellites et les câbles sous‑marins. Vous envoyez un flux vidéo de votre serveur vers votre client, et il plante parce que la connexion du client est mauvaise et se coupe sans cesse. Devinez qui devra résoudre ce problème ? Vous 😅
4. Serveur
Le mot «serveur» peut recouvrir des notions très différentes. Il sera utile de connaître les types les plus répandus.
🖥️ Serveur physique
Un serveur physique est du matériel, un ordinateur séparé avec des ressources (processeur, mémoire, stockage), utilisé pour le traitement des données et pour faire fonctionner diverses applications logicielles. Ces serveurs sont installés dans des centres de données, où ils fournissent la capacité d'hébergement de sites web, d'applications, de bases de données et d'autres services.
🪐 Serveur virtuel
Un serveur virtuel est un serveur émulé par logiciel qui fonctionne dans l'environnement d'un serveur physique. Grâce aux technologies de virtualisation, un serveur physique peut être divisé en plusieurs serveurs virtuels isolés, chacun ayant son propre système d'exploitation et pouvant être redémarré et configuré indépendamment.
🕹️ Logiciel‑serveur (par ex. Nginx)
Un logiciel‑serveur, comme Nginx, est un logiciel serveur utilisé pour traiter les requêtes vers des ressources web. Nginx est largement connu comme serveur web, et peut aussi remplir les rôles de proxy mail, proxy inverse dans des architectures microservices, ainsi que celui d'équilibreur de charge.
💾 Serveur de base de données
Un serveur de base de données est un serveur spécialisé utilisé pour la gestion des bases de données et le traitement des requêtes les concernant. Il assure le stockage centralisé des données et leur traitement, fournissant l'accès via le réseau. Les serveurs de bases de données prennent en charge les transactions, les recherches et les modifications de données, tout en garantissant la fiabilité et la sécurité du stockage. Parmi les exemples de serveurs de bases de données figurent MySQL, PostgreSQL, Oracle Database et Microsoft SQL Server.
Ainsi, quelque part dans un centre de données, sur l'un des serveurs virtuels, votre projet en C++ 23 et STL sera en cours d'exécution. Il travaillera avec une base de données, recevra des requêtes via Nginx, Apache HTTP Server ou un équilibreur de charge dans AWS Elastic Load Balancing ou Google Cloud Load Balancer, et enverra ses logs à des systèmes de surveillance tels que Prometheus + Grafana, Elastic Stack ou Splunk 📈.
Mais c'est grâce à votre code que des millions d'utilisateurs seront satisfaits de votre produit. Ils utiliseront le service, paieront pour lui, et au final le propriétaire du produit sera content. Le cours des actions de l'entreprise augmentera, vous recevrez des bonus en actions — et vous serez heureux 💸. Le véritable cercle du bonheur dans l'industrie :)
GO TO FULL VERSION