Aller au contenu
Mon HumanInTechRecevoir les alertes emploi
HumanInTech
← Retour au blog
11 min de lecturepar HumanInTech

Claude Code et Codex peuvent-ils créer des applications pour des milliers d'utilisateurs simultanés ?

Oui, si la scalabilité est spécifiée et testée. Un guide pratique sur les exigences non fonctionnelles, de meilleures invites, les tests de charge et comment HIT peut vous aider.

Développement assisté par IAÉvolutivitéArchitecture logicielle

Claude Code et Codex peuvent-ils aider à créer des applications que des milliers de personnes utilisent en même temps ? Oui. Mais une démo fonctionnelle ne prouve pas qu'une application peut gérer le trafic de production.

Les outils de codage IA peuvent aider à implémenter, tester et améliorer les logiciels. La capacité de l'application finale dépend de son architecture, de sa base de données, de son infrastructure et de sa discipline opérationnelle. Ces qualités doivent faire partie du cahier des charges dès le début.

Commencez par définir ce que signifie réellement « des milliers d'utilisateurs »

Dix mille comptes enregistrés, dix mille sessions actives et dix mille requêtes simultanées sont des charges de travail très différentes. Un portail client affichant des pages en cache se comporte différemment d'un système de réservation où tout le monde essaie de réserver le même créneau.

Décrivez les parcours utilisateurs importants, l'activité de pointe, les volumes de données, la distribution géographique et le ratio lecture/écriture. Par exemple, 5 000 utilisateurs actifs effectuant une requête API toutes les dix secondes génèrent environ 500 requêtes par seconde en moyenne. Une page qui déclenche six appels API, une rafale de connexions synchronisées ou des nouvelles tentatives automatiques peuvent modifier considérablement ce tableau.

Spécifiez à la fois la charge de travail attendue et le scénario de surcharge. Décidez ce que l'application doit faire lorsque la demande dépasse la capacité : mettre le travail en file d'attente, rejeter clairement les requêtes excédentaires ou réduire temporairement les fonctionnalités optionnelles.

Transformez les exigences non fonctionnelles en critères d'acceptation

« Rendez-le rapide, sécurisé et scalable » laisse trop de place à l'agent pour deviner. Les exigences non fonctionnelles décrivent dans quelle mesure le système doit fonctionner et dans quelles conditions. Rendez-les mesurables et reliez chacune à des preuves.

  • Performance : définissez des objectifs de temps de réponse par parcours critique, y compris les 95e et 99e percentiles. Une moyenne peut masquer une expérience pénible pour de nombreux utilisateurs. Séparez l'expérience navigateur de la latence API.
  • Capacité : définissez les utilisateurs actifs, les requêtes par seconde, la durée des rafales, les tâches en arrière-plan et la taille réaliste de la base de données. Incluez les téléchargements de fichiers et les connexions de longue durée s'ils sont importants.
  • Fiabilité : convenez d'un objectif de disponibilité, de délais d'expiration, de limites de tentatives et de dégradation contrôlée du service. Définissez la perte de données acceptable et le temps de récupération, puis testez la restauration.
  • Sécurité et confidentialité : exigez une autorisation côté serveur, l'isolation des locataires, la validation des entrées, la gestion des secrets et une conservation appropriée des données. Incluez des tests négatifs : un utilisateur ne doit jamais accéder aux enregistrements d'un autre client.
  • Observabilité : exigez des métriques utiles, des journaux structurés et des traces sans charges utiles sensibles. Surveillez la latence, les erreurs, la saturation et l'âge de la file d'attente, avec des alertes dont quelqu'un est responsable.
  • Maintenabilité et accessibilité : exigez des modules compréhensibles, des vérifications automatisées, un déploiement et un rollback documentés, une navigation au clavier et des flux critiques accessibles.
  • Coût : fixez un budget opérationnel convenu et suivez le coût par transaction significative. Incluez les bases de données, le stockage, le trafic réseau, la surveillance et les services tiers.

Les objectifs sont des décisions commerciales, pas des valeurs par défaut universelles. Un portail de reporting et une plateforme de paiement nécessitent des compromis différents. Faites en sorte que le produit, l'ingénierie et les opérations s'accordent sur les exigences avant de demander à un agent de les mettre en œuvre.

Une invite qui rend les exigences concrètes

Ce qui suit est un point de départ illustratif pour un portail client, et non une revendication de capacité ou un benchmark atteint par l'un ou l'autre outil :

Créez un portail client pour 5 000 sessions actives simultanées. Modélisez 500 requêtes API par seconde soutenues pendant 30 minutes, avec un ratio lecture/écriture de 80/20 et une rafale de deux minutes à 1 000 requêtes par seconde. Utilisez des volumes de données réalistes et documentez les hypothèses derrière cette charge de travail.

Pour les principaux endpoints de lecture, visez un p95 inférieur à 300 ms et un p99 inférieur à 800 ms dans l'environnement de test convenu. Maintenez les échecs inattendus en dessous de 0,1 % à l'objectif soutenu. Signalez toutes les requêtes rejetées et expirées séparément, y compris la limitation de débit. Ne cachez jamais les échecs en les excluant du rapport.

Appliquez l'autorisation et l'isolation des locataires sur chaque opération côté serveur. Utilisez des pools de connexions de base de données bornés, la pagination et des index appropriés. Rendez les écritures réessayées idempotentes. Placez les exports lents dans une file d'attente durable avec des tentatives bornées et des états d'échec visibles.

Proposez un objectif de disponibilité mensuelle de 99,9 %, une récupération en une heure et pas plus de 15 minutes de perte de données, et identifiez quelle infrastructure et quelles procédures opérationnelles ces objectifs nécessitent. Un test de charge seul ne prouve pas ces objectifs.

Inspectez d'abord le système existant. Interrogez sur les contraintes manquantes, y compris l'hébergement, la résidence des données, la conservation et le budget. Proposez l'architecture la plus simple adaptée et expliquez les goulots d'étranglement, les modes de défaillance et les compromis avant de mettre en œuvre.

Livrez par petits changements révisables. Incluez des tests automatisés, un script de test de charge reproductible, des tableaux de bord, un exercice de sauvegarde et restauration et un runbook de déploiement/rollback. Signalez les résultats mesurés avec le commit, l'environnement et les limites de ressources. Distinguez clairement les vérifications réussies, les hypothèses et les vérifications qui n'ont pas pu être exécutées.

Conservez ces exigences dans la documentation du projet sous contrôle de version et référez-vous-y dans les tâches de suivi. Une longue invite d'ouverture ne protégera pas les exigences qui disparaissent du flux de travail de développement.

Choisissez une architecture que vous pouvez exploiter

Des milliers d'utilisateurs ne nécessitent pas automatiquement des microservices ou Kubernetes. Une application bien structurée avec une base de données gérée, des index sensés et un déploiement approprié peut être un point de départ pratique. Divisez les composants lorsque des goulots d'étranglement mesurés ou des besoins opérationnels justifient la complexité.

Gardez les instances d'application sans état dans la mesure du possible afin que le trafic puisse être distribué entre elles. Utilisez un stockage de session partagé si nécessaire. Servez les ressources statiques via un CDN. Mettez en cache avec soin, avec une invalidation explicite et une séparation correcte des données privées ou spécifiques au locataire.

Accordez une attention particulière à la base de données. Les requêtes non bornées, les index manquants et les requêtes répétées dans des boucles peuvent la submerger bien avant que le CPU de l'application ne soit épuisé. Ajouter des réplicas d'application peut aggraver les choses si chaque réplica ouvre un autre grand pool de connexions.

Déplacez le travail lent tel que les exports et le traitement de documents dans des workers en arrière-plan. Bornez la concurrence et la taille de la file d'attente. Utilisez des délais d'expiration, un backoff de tentatives et l'idempotence afin qu'une défaillance temporaire de dépendance ne devienne pas des commandes en double ou une tempête de tentatives. Protégez les limites partagées telles qu'un dernier créneau de réservation disponible avec des transactions et des contraintes de base de données.

Prouvez la capacité avant le lancement

Demandez à Claude Code ou Codex d'aider à écrire les tests, puis vérifiez si ces tests représentent bien les exigences. Les tests générés peuvent répéter les mêmes hypothèses erronées que l'implémentation générée. La revue humaine et des critères d'acceptation définis de manière indépendante restent importants.

Exécutez les tests de charge dans un environnement autorisé qui ressemble à la production, en utilisant des données réalistes, des sessions authentifiées et le mix réel de parcours utilisateurs. Incluez les échecs de cache, les écritures concurrentes et les dépendances externes lentes. Confirmez que le générateur de charge lui-même n'est pas le goulot d'étranglement.

Testez la demande soutenue, les pics soudains, la surcharge progressive et un test de durée plus long pour exposer les fuites mémoire ou l'épuisement des ressources. Mesurez ensemble le débit, les temps de réponse aux percentiles élevés, les erreurs, les connexions à la base de données, la contention de verrous, la profondeur de file d'attente et le coût. Corrigez la ressource limitante et relancez le même scénario.

Testez également les défaillances : redémarrez une instance, interrompez une dépendance, réessayez une écriture et restaurez une sauvegarde. Vérifiez que le système récupère sans corrompre les données. Enregistrez l'enveloppe de capacité testée, ne transformez pas une exécution réussie en promesse d'évolutivité illimitée.

Déployez progressivement et continuez à vérifier

Utilisez des contrôles de livraison automatisés et un déploiement progressif. Surveillez le comportement réel des utilisateurs, la latence, les taux d'erreur et l'utilisation des ressources. Définissez qui répond aux alertes et quand revenir en arrière. Vérifiez que les migrations de base de données restent compatibles pendant le déploiement et que le retour en arrière est réellement possible.

Si l'application elle-même appelle un modèle d'IA, ajoutez un plan de capacité et de coût distinct pour les quotas du fournisseur, l'utilisation des tokens, la latence, les files d'attente et les solutions de secours. Utiliser l'IA pour écrire une application ne signifie pas que l'application a besoin d'IA à l'exécution.

Les recommandations officielles soutiennent un flux de travail de spécification et vérification : le Codex modernisation guide d'OpenAI relie les spécifications de conception aux plans de validation, tandis que les Claude Code best practices d'Anthropic soulignent l'importance de donner à l'agent un moyen de vérifier son travail. Aucun ne remplace le test de la capacité réelle de votre application.

Comment HumanInTech peut vous aider

Chez HIT, nous combinons architecture, ingénierie pratique, pilotage de projets et expertise en IA. Nous pouvons vous aider à traduire les attentes métier en exigences mesurables, à examiner un prototype construit par IA, à identifier les goulots d'étranglement de base de données et d'intégration, et à construire les fondations de test et opérationnelles nécessaires pour la production.

Cela peut prendre la forme d'une revue d'architecture ciblée, d'une mission d'ingénierie clairement définie ou d'un consultant senior intégré dans votre équipe. L'objectif est de donner à vos équipes un système qu'elles peuvent comprendre, exploiter et améliorer à mesure que la demande augmente.

Explorez les services d'architecture, d'ingénierie et d'IA de HIT, ou parlez-nous de votre application et de la charge de travail attendue. Nous vous aiderons à établir ce qui est prêt, ce qui nécessite du travail et de quelles preuves vous avez besoin avant d'ouvrir les portes à des milliers d'utilisateurs.

Oui, les outils de codage IA peuvent vous aider à construire pour l'évolutivité. Rendez les exigences non fonctionnelles explicites, transformez-les en contrôles et laissez les résultats mesurés déterminer quand l'application est prête.