J'entends souvent (de la part de personnes, mais aussi de CLI informatives) que la "taille de build / slug est grande". Cela est particulièrement vrai lorsque la taille de la construction est de 0,5 à 2 Go.
Pourquoi (ou dans quelles circonstances) la taille de la construction est-elle une telle préoccupation?
Remarque: la raison pour laquelle je pose la question est parce que je considère que les ressources comme le stockage et le calcul sont relativement bon marché par rapport au passé, donc, je m'attends à ce que la taille de la construction soit moins problématique maintenant que par le passé.
Réponses:
Lorsque je soulève un problème de taille de build comme une préoccupation, cela ne vient généralement pas de "c'est si gros, il sera coûteux de le stocker".
Les principaux problèmes avec les grandes versions sont les suivants -
Je souscris aux quatre métriques devops:
Les gros artefacts créent généralement un problème dans chacune de ces mesures, et aucune de ces mesures ne concerne vraiment le coût du stockage - car c'est bon marché, le temps est cher.
la source
Complétant la réponse d'Evgeny avec quelques autres exemples.
Ce que vous entendez par taille de construction peut avoir un peu d'importance:
s'il s'agit de la taille des artefacts en cours de construction (chacun individuellement ou leur taille combinée) - cela pourrait avoir une importance dans le stockage des artefacts ou les opérations d'utilisation / de déploiement si ces opérations ont des limites de taille et qu'elles sont dépassées. Par exemple, les applications Google App Engine ont de telles limites de déploiement , si les déploiements atteints échouent, voir Erreur lors du déploiement sur Google App Engine .
s'il s'agit de la taille de l'espace de travail dans lequel vous effectuez la génération, cela peut être important du point de vue de la gestion de l'espace de travail. Même la 2G peut être importante - par exemple si vous construisez un système de fichiers RAM sur une machine avec peu de RAM. Mais certaines versions pourraient être beaucoup plus grandes - j'ai dû gérer des espaces de travail de 500 G + (lorsque la plupart de mes disques de serveur étaient inférieurs à 1 T).
Si la construction fait partie de votre pipeline CI / CD, plus la taille de construction est grande, plus le temps d'exécution du pipeline sera long (exécution de la construction réelle et, le cas échéant, archivage, déploiement pour les tests, analyse en cas d'échec, nettoyage, etc.) - plus votre développement global peut être lent / risqué / coûteux.
Si vous atteignez une limite stricte, vous devrez faire preuve de créativité pour contourner ce problème (pas toujours simple / possible). Si ce n'est qu'un problème de performance / coût, vous avez également la possibilité d'accepter et de vivre avec et / ou de l'aborder partiellement / progressivement.
Il peut être utile de distinguer entre:
la source
J'ajouterai un problème très concret que nous rencontrons en fait. C'est un effet secondaire d'une mauvaise architecture dont nous souffrons actuellement:
Comme notre build est volumineux et que nous devons charger un grand nombre de dépendances, le simple fait de tout assembler prend beaucoup de temps. Nous aurions dû depuis longtemps diviser le build-up en de nombreux petits builds comme une approche d'une architecture de microservice au lieu d'un grand monolithe.
L'exécution de tous les tests pour le monolithe prend environ 45 minutes et bloque notre environnement CI pour le moment.
Puisqu'il est si intensif en charge et prend tellement de temps, il nous est actuellement impossible d'exécuter plusieurs versions parallèlement les unes aux autres.
Ainsi, comme les affiches avant moi l'ont déjà déclaré à un niveau plus théorique, cela devrait présenter certaines implications secondaires potentielles (et probables) qu'une grande construction a généralement en dehors du besoin de plus d'espace sur le disque dur.
la source