CodeGym /Cours /JAVA 25 SELF /Modèle de produit informatique

Modèle de produit informatique

JAVA 25 SELF
Niveau 9, Leçon 6
Disponible

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 data center cloud (appelés aussi centres de traitement des données) où il est déployé.

Beaucoup de produits modernes (voire tous) fonctionnent selon la paradigme Client–Serveur. Cela signifie que sur votre appareil (téléphone, ordinateur portable, ordinateur) se trouve un programme qui gère la communication avec l’utilisateur (vous), tandis que la fonctionnalité critique se trouve sur un serveur dédié, là où se passe tout l’essentiel ➡️🖥️

Parfois, votre client peut communiquer avec plusieurs serveurs indépendants, ou bien le serveur d’un produit peut s’adresser au serveur d’un autre produit. On obtient ainsi un réseau mondial de clients et de serveurs, qui interagissent tous les uns avec les autres.

C’est pourquoi le modèle applicatif moderne est peut-être mieux décrit par la paradigme Client–Internet–Serveur. Il y a désormais énormément de communications complexes. Il existe même ce que l’on appelle des « canaux de communication intelligents », qui décident eux-mêmes à qui et quand envoyer votre requête.🛰️📡

2. Clients

On peut répartir les programmes clients en 4 catégories :

  • 🖥️ Client desktop — programme fonctionnant sur un ordinateur.
  • 📲 Client mobile — application pour iOS ou Android.
  • 🌐 Client web — site/application web fonctionnant dans un navigateur.
  • 🌍 Client serveur — application exécutée sur un autre serveur.

Et chacune d’elles peut à son tour être décomposée. Par exemple, un client web, c’est un site ou une application web, ce qui signifie qu’il se compose du Navigateur et du Site qui y est chargé. Tous les navigateurs ne sont pas identiques et peuvent se comporter différemment.

Mais même si l’on prend le navigateur le plus répandu, il reste le site qui y est chargé. Un site se compose généralement de trois éléments :

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

« Rien de plus simple », direz‑vous. Sauf qu’aujourd’hui, personne n’écrit de sites simplement en HTML et JavaScript. Pour développer des sites, on n’utilise plus seulement des bibliothèques, mais de vrais frameworks, tels que React, Angular ou Vue ⚛️. Et d’ailleurs, ce ne sont plus des « sites », mais de véritables applications web avec leurs propres builds, tests et paradigmes.

Plus personne n’utilise non plus du CSS « pur ». Il existe déjà des préprocesseurs CSS qui aident à le générer, ainsi que des frameworks CSS complets. Et même pour les e‑mails, il existe des frameworks CSS dédiés, afin que votre message soit joli aussi bien dans le navigateur que dans la plupart des clients de messagerie 💌.

Peu de gens écrivent encore en JavaScript « pur » — toutes les grandes applications web sont créées en TypeScript, qui est ensuite compilé en JavaScript. Vous voyez l’idée...

3. Internet et infrastructure

La communication client–serveur — quoi de plus simple ? Mais même dans leurs relations, tout a déjà changé.

Votre produit sera très probablement hébergé dans l’un des data centers modernes. De nombreuses entreprises dans le monde proposent des services d’hébergement pour vos produits, que ce soit sur leurs serveurs ou sur vos propres serveurs physiques. Tout est possible, tant que vous payez.

Centre de données

Le serveur physique n’est plus vraiment physique. Tous les data centers modernes proposent la location de serveurs virtuels. Un serveur virtuel est une sorte d’ordinateur virtuel, et il peut y en avoir des dizaines sur un seul serveur physique. En revanche, c’est pratique pour la mise à niveau du serveur. Si vous avez besoin de plus de mémoire, vous pouvez l’ajouter à votre serveur virtuel en quelques minutes ⏱️.

Mais même cette approche devient dépassée : la tendance est au passage vers le cloud — lorsque votre produit n’est pas simplement déployé sur un serveur virtuel dans un data center, mais utilise activement un large éventail d’infrastructures et de services fournis par ces data centers.

Vous avez besoin d’un serveur pour stocker des sauvegardes — il existe une infrastructure cloud prête à l’emploi et pratique pour cela. Vous avez besoin d’une base de données avec une fiabilité de 99.9999999 % ? Cela existe aussi. Kafka, RabbitMQ, NoSQL ? Tout est déjà là et facile à configurer. Il suffit de payer.

Et ces data centers et ces clouds deviennent partie intégrante de votre produit. Par exemple, Amazon dispose d’une multitude de data centers dans le monde entier, c’est pourquoi ils proposent un service CDN : votre contenu public sera mis en cache dans tous les data centers d’Amazon, et vos utilisateurs du monde entier le recevront plus rapidement 🛰️.

Ou bien les appels à l’API de votre application peuvent passer par le service Amazon API Gateway, qui permet de configurer de manière très flexible le travail avec vos services. Vous pouvez répartir la charge entre différents services, contrer les attaques DDoS, automatiser le téléversement de fichiers, configurer une mise en cache intelligente, et bien plus encore 🛡️.

Ainsi, entre l’application cliente et vos services, apparaissent de nombreuses « communications intelligentes » qu’il est possible et nécessaire de paramétrer. Même si vous ne le ferez jamais vous‑même, vous devez savoir qu’elles existent et peuvent fortement influencer le fonctionnement de votre programme.

Et nous n’avons même pas abordé des sujets comme les routeurs, les antennes 5G, les satellites et les câbles Internet au fond de l’océan. Vous envoyez un flux vidéo de votre serveur vers votre client, et il dysfonctionne, car le client a une mauvaise connexion et la liaison se coupe sans cesse. Devinez qui va résoudre ce problème ? Vous 😅

4. Serveur

Sous le terme « serveur » peuvent se cacher des notions très différentes. Il vous sera utile de connaître les plus courantes.

  • 🖥️ Serveur physique
    Un serveur physique est un équipement représentant un ordinateur distinct doté de ressources (processeur, mémoire, stockage), utilisé pour traiter des données et assurer le fonctionnement de diverses applications logicielles. Ces serveurs sont installés dans des centres de traitement des données, où ils fournissent la puissance nécessaire pour héberger des sites web, des applications, des 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.
  • 🕹️ Programme‑serveur (par exemple, Nginx)
    Un programme‑serveur, tel que Nginx, est un logiciel côté serveur utilisé pour traiter les requêtes vers des ressources web. Nginx est largement connu comme serveur web, et peut également assurer les fonctions de proxy de messagerie et de reverse proxy dans des architectures à microservices, ainsi que de répartiteur de charge.
  • 💾 Serveur de base de données
    Un serveur de base de données est un serveur spécialisé utilisé pour gérer des bases de données et traiter les requêtes qui leur sont adressées. Il assure le stockage centralisé des données et leur traitement, en fournissant un accès aux données via le réseau. Les serveurs de bases de données prennent en charge le traitement des transactions, la recherche et la modification des données, tout en garantissant la fiabilité et la sécurité du stockage des informations. Des exemples de serveurs de bases de données incluent MySQL, PostgreSQL, Oracle Database et Microsoft SQL Server.

Et quelque part dans un data center, sur l’un des serveurs virtuels, tournera votre projet en C# et ASP.NET Core. Il travaillera avec une base de données, recevra des requêtes via Nginx ou Azure Application Gateway, et enverra les journaux de ses actions vers des systèmes de monitoring comme Azure Monitor ou Splunk 📈.

Mais c’est précisément grâce à votre code que des millions d’utilisateurs de votre produit seront satisfaits. Ils utiliseront le service, paieront pour celui‑ci, et au final le propriétaire du produit sera satisfait lui aussi. Le cours de l’entreprise grimpera, vous recevrez des primes en actions — et vous serez heureux 💸. Le véritable cycle du bonheur dans l’industrie :)

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION