A eu une conversation avec quelqu'un au sujet de l'ajout d'un code d'initialisation au démarrage de l'application et il s'est plaint que cela provoquait une augmentation du temps de démarrage. Il ne pouvait pas vraiment donner de raison (sentiment d'intestin ou quelque chose, je ne sais pas). Ce n'est pas une application à usage intensif et démarre dans environ une minute environ, nous déployons quelques fois par an.
Je me souviens avoir lu ces conseils sur les questions sur SO il y a quelque temps, les gens conseillant d'initialiser au démarrage plutôt qu'à l'accès à la page avec le timbre "si vous pouvez vous permettre la pénalité".
J'ai travaillé avec des applications Web qui ont commencé de 30 secondes à 4-5 minutes, mais une fois en ligne, elles ont basculé.
Alors qu'est-ce qui me manque? À moins que ce soit une application vitale comme ... je ne sais pas ... pour le marché financier, les applications médicales, l'exploration spatiale, etc., est-ce vraiment si important le temps de démarrage?
PS Je me réfère strictement aux applications Web, les applications de bureau vont commencer à éclater rapidement.
la source
Réponses:
Cela peut être un facteur important pendant le développement: si votre plate-forme ne prend pas en charge le changement de code dans une application en cours d'exécution, le temps de démarrage fait alors partie de votre cycle de rétroaction, et là, même 30 secondes sont douloureuses et menacent la productivité.
Pour l'environnement de production, cela n'a vraiment pas d'importance; Soit un petit temps d'arrêt est acceptable et 5 minutes ne sont toujours pas beaucoup, soit ce n'est pas le cas et vous devez implémenter une sorte de basculement en direct.
la source
Je crois que c'est le cas lorsque le célèbre principe dialectique de Hegel de transition de la quantité à la qualité fonctionne réellement.
Vous voyez, le timing est toujours important. Je suis d'accord avec les mots de Michael Borgwardt sur l'importance d'une construction rapide pendant le développement / test, mais j'insiste sur le fait que (peut-être d'une autre manière) c'est également très important pour la production.
Chaque développeur qui a déployé du mauvais code en production sait que le correctif fourni en 5 minutes et en 1 minute est vraiment très différent.
la source
La vraie question est de savoir si l'application fonctionnera sans l'initialisation. Nous avons de nouvelles recrues qui sont obsédées par la «performance», ma réponse courante est que je me fiche de la rapidité avec laquelle vous donnez les mauvais résultats. À mon humble avis, couper les algorithmes parce que "ce sera plus rapide de cette façon" et d'autres bonnes idées n'introduisent que des bugs.
Si l'initialisation est requise, faites-le. Combien de temps sera perdu lorsque les utilisateurs finaux obtiennent les mauvais résultats, finissent par comprendre que l'application Web est incorrecte, vous appellent et se plaignent, et vous devez revenir en arrière et déboguer / corriger / tester / redéployer? demandez maintenant à votre collègue comment vous avez gagné du temps. (et je parie que les cœurs de votre serveur sont inactifs à 99% de toute façon)
la source
Cette question ne concerne aucune plateforme particulière. Il existe des plateformes sur lesquelles le temps de démarrage est vraiment très important.
Par exemple, sur Google App Engine; si votre page n'est pas consultée (ou plutôt, qu'elle est consultée moins fréquemment qu'une autre application sur le même nœud), elle sera déchargée de temps en temps.
Ainsi, si vous êtes dans les 99% de la fréquence d'accès au site, le temps de démarrage est le temps d'accès; votre application est redémarrée à presque tous les accès. si vous êtes dans le 1% supérieur, votre application démarre sur de nombreux nœuds, et bien que de nombreux accès aux pages reviennent à partir d'une instance déjà démarrée, certains ne le seront toujours pas, et vous aurez donc des temps d'accès longs et intermittents .
Cette même chose est vraie sur de nombreux autres environnements d'hébergement. Les fuites dans les bibliothèques tierces, ou même dans votre propre code qui ont simplement échappé à la découverte, pourraient signifier que le seul moyen fiable d'exécuter votre service Web est de le faire recharger toutes les requêtes (souvent entre 100 et 10 000), etc. le temps de démarrage est payé fréquemment. L'utilisation de ce modèle est acceptable lorsqu'une application fuit, mais démarre rapidement; cela ne fonctionne pas lorsque l'application prend plus de quelques secondes pour démarrer.
la source
Vous courez le risque que votre application soit considérée comme inférieure aux normes ou pire encore, votre capacité de développement. Maintenant, cette application peut faire gagner tellement de temps à quelqu'un et / ou effectuer une tâche si nécessaire que les utilisateurs reconnaissants peuvent regarder au-delà du long démarrage.
La programmation peut prendre plus de temps pour charger l'application paresseusement, mais seules les parties prenantes peuvent déterminer si cela en vaut la peine. J'ai eu un rapport qui a fonctionné en 55 secondes. et nous sommes descendus à 35. Personne ne l'a remarqué. Bien que j'aie passé deux fois plus de temps à passer de 35 à 18 ans, tout le monde a remarqué et était reconnaissant et impressionné. Passer de 5 à 3 minutes pour une application utilisée plusieurs fois par an n'est pas un problème. Les utilisateurs auront juste moins de temps à consacrer à Facebook ou à prendre un café.
La perception est la clé. Si la société n'est pas satisfaite des équipes de développement en général et de cette application en particulier, vous voudrez peut-être créer de la bonne volonté et accélérer la chose.
la source