2009-03-20 6 views
4

J'ai donc vu this question, mais je cherche d'autres conseils généraux: Comment configurer un serveur de build? Spécifiquement quelles mesures dois-je prendre pour décider exactement quel processeur, HD, RAM, etc. à utiliser pour un nouveau serveur de construction. Quels facteurs devrais-je prendre en compte pour décider d'utiliser la virtualisation?Configurer la configuration matérielle du serveur

Je suis à la recherche des étapes générales que je dois prendre pour décider du matériel à acheter. Les étapes qui me mènent à des conclusions spécifiques - pensent "Je vais avoir besoin de 4 Go de RAM" au lieu de "Autant de RAM que vous pouvez vous permettre"

P.S. Je ne donne délibérément pas de détails parce que je suis à la recherche de la réponse «enseigner à un homme à pêcher», et non une réponse qui ne s'appliquera qu'à ma situation.

Répondre

5

La réponse est de quelles exigences la machine aura besoin pour «construire» votre code. Cela dépend entièrement du code dont vous parlez.

Si c'est quelques milliers de lignes de code, il suffit de sortir ce vieux bureau du placard. Si c'est quelques milliards de lignes de code alors parlez au directeur de la banque de vous donner un prêt pour une clôture de lame!

Je pense que le meilleur endroit pour commencer avec un serveur de build est de s'acheter un nouveau développeur et de reconstruire votre ancien serveur de build.

1

Points à prendre en compte: Combien de projets vont être construits simultanément? Est-il acceptable qu'un projet attende pendant qu'un autre se termine?

Allez-vous faire des versions CI ou planifiées?

Combien de temps vos builds prennent-ils normalement?

Quel logiciel de construction utilisez-vous?

La plupart des projets Web sont suffisamment petits (temps de construction inférieurs à 5 minutes) pour acheter un gros serveur, cela n'a aucun sens.

A titre d'exemple, Nous avons environ 20 développeurs travaillant activement sur 6 projets différents. Nous utilisons un seul serveur TFS Build exécutant CI pour tous les projets. Ils sont prêts à être utilisés à chaque vérification.

Tous nos projets sont réalisés en moins de 3 minutes.

Le serveur de construction est un cœur quadruple unique avec 4 Go de RAM. La principale raison pour laquelle nous l'utilisons est de créer des versions de développement et de mise en scène pour le contrôle qualité. Une fois la génération terminée, cette application est automatiquement déployée sur le (s) serveur (s) approprié (s). Il est également responsable de l'exécution des tests unitaires et Web par rapport à ces projets.

Le type de logiciel de construction que vous utilisez est très important. TFS peut tirer parti de chaque core pour construire des projets parallèles au sein d'une solution. Si votre logiciel de construction ne peut pas le faire, vous pouvez envisager d'avoir plusieurs serveurs de build en fonction de vos besoins.

3

Je commencerais par collecter des métriques de performance sur la construction de n'importe quel système que vous utilisez actuellement pour construire. Je voudrais spécifiquement regarder l'utilisation du processeur et de la mémoire, la quantité de données lues et écrites à partir du disque, et la quantité de trafic réseau (le cas échéant) généré. Sous Windows, vous pouvez utiliser perfmon pour obtenir toutes ces données; Sous Linux, vous pouvez utiliser des outils tels que vmstat, iostat et top. Déterminez où se trouvent les goulots d'étranglement - votre UC de construction est-elle liée? Un disque lié? Affamé pour RAM?Les réponses à ces questions guideront votre décision d'achat - si votre build martèle le processeur mais génère relativement peu de données, installer un disque RAID SCSI criard est un gaspillage d'argent.

Vous pouvez essayer d'exécuter votre build avec différents niveaux de parallélisme lorsque vous collectez ces métriques. Si vous utilisez gnumake, exécutez votre build avec -j 2, -j 4 et -j 8. Cela vous aidera à voir si la construction est limitée au CPU ou au disque.

Considérez également la possibilité que le bon serveur de construction pour vos besoins pourrait en fait être un groupe de systèmes bon marché plutôt qu'une seule boîte massive - il y a beaucoup de systèmes de construction distribués là-bas (gmake/distcc, pvmgmake, ElectricAccelerator, etc) qui peut vous aider à tirer parti d'une gamme d'ordinateurs bon marché mieux que vous pourriez un seul grand système.

2

Notre boutique prend en charge 16 produits allant de quelques milliers de lignes de code à des centaines de milliers de lignes (peut-être un million + à ce stade). Nous utilisons 3 serveurs HP (environ 5 ans), dual core quad avec 10 Go de RAM. Les disques sont des disques SCSI 7200 RPM. Tout compilé via msbuild sur la ligne de commande avec les compilations parallèles activées.

Avec cette configuration, notre plus grand goulot d'étranglement est de loin l'E/S disque. Nous effacerons complètement notre code source et re-checkout sur chaque build, et les temps de suppression et de paiement sont très lents. Les temps de compilation et de publication sont également lents. Le processeur et la RAM ne sont pas taxés à distance. Je suis en train d'actualiser ces serveurs, donc je vais sur la route des machines de classe poste de travail, aller avec 4 au lieu de 3, et remplacer les disques SCSI par les meilleurs SSD que je peux me permettre. Si vous avez une configuration similaire à celle-ci, les E/S disque doivent être prises en compte.

Questions connexes