Je développe un backend où j'exposerai des API pour mon application mobile. Les utilisateurs peuvent s'inscrire, ajouter des produits, partager les liens des produits par e-mail/sms/n'importe où et d'autres peuvent cliquer dessus et acheter le produit. Il s'agit du flux de travail simple de l'application mobile. L'application est une application gourmande en images qui aura des téléchargements et des récupérations d'images qui seront effectués par un service cloud tiers. SO la partie image n'est pas gérée par mon backend.
Maintenant, je fais partie de l'équipe de développement et j'ai peu d'expérience côté serveur matériel. Lorsque j'ai donné l'exigence pour l'infrastructure, ils m'ont posé les questions suivantes.
Je ne sais pas comment prévoir les 3 points ci-dessus. Comment sont calculés les débits? Selon une estimation, 10000 utilisateurs s'inscriront sur ma demande au cours du premier mois, dont 5000 seront des utilisateurs actifs. Sur une connexion moyenne à l'application, il y aura 10 hits API par utilisateur, ce qui conduira à 5000 * 10 = 50 000 hits par mois, ce qui correspond à 1 hit API par minute, soit ~ 2 connexions simultanées le premier mois.
Est-ce que le calcul va comme ça? et comment calculer la croissance des données? Cela signifie-t-il qu'un utilisateur s'inscrit, crée un produit et si je totalise la taille de la base de données consommée pour cela, est-ce ce qu'on appelle la croissance des données?
Cette question semblerait pathétique, mais j'ai vraiment besoin d'aide pour comprendre comment les débits sont calculés pour les besoins du serveur.
Les trois premiers points sont la planification des capacités. L'organisation essaie de budgétiser et de prédire l'avenir. Hélas, il n'existe aucun moyen simple ou accepté de prédire les performances et l'évolutivité. Chaque application et environnement est différent. Par conséquent, la meilleure façon de répondre est de mesurer.
Plus précisément:
En plus des exigences ci-dessus, cela peut vous aider:
Les deux derniers points, exigence HA (haute disponibilité) et DR (reprise après sinistre, vraisemblablement RPO (objectif de point de récupération) et RTO (objectif de temps de récupération) ), sont plus difficiles à prédire car ce sont vraiment des exigences commerciales. Discutez avec votre direction ou les propriétaires de produits des échecs probables et combien ils coûteront pour atténuer ou corriger . Si vous êtes tous les deux novices, attendez-vous à beaucoup de devinettes et de nuits tardives de votre part.
Je proposerais une base plus objective. Accédez à vos journaux HTTP existants. En supposant qu'il s'agit d'une mise à jour d'une application déjà sur le terrain, tirez simplement les journaux et examinez les demandes HTTP qui sont incluses. Cela fournit une base objective absolue pour votre modélisation de la charge au lieu d'un doigt mouillé dans l'air pour tester le vent.
Gardez également à l'esprit du point de vue de l'assurance qualité. Vous ne pouvez pas à la fois posséder l'exigence et la validation. Ainsi, vous pouvez utiliser les données objectives des journaux pour aider à créer les informations sur le modèle de charge, mais un membre de l'entreprise doit approuver la définition réelle. Pourquoi? Parce que vous injectez une exigence dans le flux qui n'était pas disponible jusqu'à présent pour les développeurs, les architectes, les gestionnaires de plate-forme, etc ... si vous échouez à l'application, vous voulez que l'entreprise derrière vous que les chiffres soient exacts.
Que pouvez-vous extraire les journaux?
Je préfère Splunk pour ce type de travail. Pour la plupart des organisations, vous devriez pouvoir extraire 30 jours de journaux dans le niveau gratuit sans avoir à vous soucier de configurer ensemble une demi-douzaine d'applications différentes comme vous le faites avec la pile ELK.
Ne vous trompez pas et vous pourriez bien chasser des fantômes d'ingénierie qui ne se produiraient jamais en production et ne réduiraient en fait aucun risque. Assurez-vous que quelqu'un du côté de l'entreprise approuve vos besoins ou vous pourriez bien posséder des excédents budgétaires individuels pour chasser les défauts.
J'aime vraiment ta question. C'est une bonne chose. Je ne pense pas qu'il y ait une vraie réponse à cela, mais je vais essayer. Lors de la création/conception d'un nouveau serveur, il est plus important de choisir le bon
Environnement et méthodes. Tous les environnements ne sont pas scalabales, la plupart seulement de manière limitée. Ce que l'équipe matérielle essaie de calculer, c'est quel type de systèmes de fichiers et d'interfaces ils peuvent utiliser. Certains systèmes de fichiers sont faciles à configurer mais difficiles à étendre. D'autres sont difficiles à configurer mais faciles à gérer et à étendre.
La meilleure chose à mon avis est de prendre contact avec ceux qui vous posent ces questions et de leur expliquer pourquoi vous ne pouvez pas y répondre maintenant. Lors du lancement d'une nouvelle application ou d'un nouveau système, personne ne peut dire comment tout cela évolue, surtout quand il n'y a aucun autre système auquel vous pouvez vous comparer. Mais vous avez la connaissance de l'API que vous avez conçue et le "Hardware-Man" a la connaissance de la façon dont ses environnements/serveurs fonctionnent. Ensemble, vous pouvez comprendre ces questions avec certitude.
J'espère que cela vous aidera.