4 votes

Approvisionnement en postes de travail pour une petite équipe de développement de logiciels Linux

Objectif : Faites en sorte qu'une petite équipe utilise une image de développement standard plutôt que 4 développeurs de logiciels qui configurent leurs propres environnements.

Pourquoi ?

  1. il faut un jour ou des jours pour installer une distribution, des bibliothèques spécifiques à la construction, des outils comme des éditeurs et des IDE, mysql, couchdb, java, maven, Python, Android-sdk, etc. C'est un énorme PITA qui, lorsqu'il est répété 4 fois par 4 développeurs (et non par des administrateurs système), fait perdre du temps et génère des divergences ennuyeuses qui réapparaissent plus tard (le syndrome du "it-builds-on-my-box").

  2. Il n'y a pas de partage de la productivité, des paramètres, des astuces, des scripts, des configurations.

La séparation des systèmes de construction dans des images virtualisées sans tête peut aider à résoudre ce problème. Cependant, cela ne permet pas vraiment d'aborder la question de l'outillage ou du développement de l'interface graphique et du bureau qui doivent être réalisés.

Je vois donc trois stratégies de base, le ghosting, la virtualisation, et enfin la création d'une sorte de distro linux interne (je suppose que Google fait quelque chose comme ça).

L'environnement de développement cible est basé sur Debian OpenBox et doit permettre à un mélange d'ordinateurs portables Core i7 de 3e génération avec un minimum de 8 Go de fonctionner à la fois sur une et plusieurs têtes. Important, les lappies sont no la même chose, mais un mélange de macbooks et de PC de 2012. Donc :

  1. la virtualisation : consiste à faire tout votre travail dans une VM, comme VirtualBox, pratique sur ce matériel ou gênante.

  2. ghosting : des ordinateurs portables de différents fabricants rendront cela impraticable.

  3. Distro DIY : à moins de scripter un tas d'installations de paquets, je ne sais pas s'il y a un "distro-maker" qui pourrait empêcher que cela ne soit un projet épique de scripts d'installations de paquets.

Alors, un conseil ?

3voto

sysadmin1138 Points 129885

Il s'agit d'un problème délicat, qui s'inscrit dans le champ politique très, très rapidement. Si la culture d'entreprise est très forte dans la veine " les développeurs construisent leur propre système, c'est la façon dont ils sont le plus productifs ", il peut être impossible de la percer. Cependant, comme l'informatique est certainement impliquée au moins dans la configuration initiale, il semble que vous ne soyez pas si loin dans le terrier.

J'ai un problème similaire, bien que le service informatique ne soit impliqué que dans la configuration la plus basique d'un nouvel ordinateur portable. Je suis no impliqué dans la mise en place des environnements de développement, chaque développeur est responsable de cela (ce qui devient rapidement un travail d'équipe, ce qui est une bonne chose en soi).


Toutefois, en l'absence d'un soutien explicite de la part de la direction, tout ce que vous ferez sera soumis à l'obligation de convaincre les utilisateurs soutenus que ce que vous faites est pour le mieux. C'est une compétence qui ne s'enseigne pas.


En raison de la nature de notre travail, nous avons constaté que le développement orienté VM fonctionne très bien. Comme nous disposons également d'un mélange d'ordinateurs portables OSX, Windows et Linux comme stations de développement, et que nous développons vers une combinaison beaucoup plus spécifique d'outils et de systèmes d'exploitation, les machines virutales sont le moyen le plus fiable d'être sûr que le nouveau code fonctionnera sur la plate-forme cible.

Historiquement, nous avons eu des gens qui développaient sur un MacBook, déployaient dans l'environnement d'intégration, puis passaient quelques jours à travailler sur les bizarreries spécifiques au Mac qui ne fonctionnaient pas dans l'environnement cible. Ce problème de "quelques jours" a disparu lorsque ces utilisateurs ont commencé à utiliser des VM.

Le fait que le flux de travail orienté VM fonctionne ou non pour vous dépend en grande partie de vos pratiques de développement. Cela semble fonctionner au mieux si un dev :

  • Un dev peut-il travailler sur une branche de fonctionnalité
  • Ils peuvent facilement déployer cette branche de fonctionnalité sur leur propre ensemble de machines virtuelles.
  • Possibilité d'intégrer leur branche de fonctionnalités dans les domaines de l'intégration, des tests et de l'assurance qualité avec la même facilité et avec peu de modifications.
  • Il a suffisamment de sens du style pour ne pas énerver les autres développeurs.

Quant aux "IDE GUI dans une VM", cela peut également fonctionner. Plusieurs de nos utilisateurs Mac suivent exactement cette voie, ils ont une VM plein écran dans un écran sur lequel ils font toute leur création de code et utilisent les autres écrans pour des choses qui ne sont pas liées au développement, comme la recherche de réponses sur stackoverflow. Cela fonctionne mieux si le presse-papiers peut être portable entre le bureau et la VM.

Un bon plan pour l'instant est de construire une VM dans n'importe quelle plateforme que vous utilisez, avec tous les éléments que vous mettez toujours dans vos nouvelles constructions. Vous pouvez ainsi mieux gérer les mises à jour de vos logiciels et réduire les risques de dérive de version. Pour un meilleur effet, incluez quelques modifications qui semblent être communes à quelques développeurs, car cela facilitera la bataille des cœurs et des esprits.

Vous vous battez contre des pratiques bien ancrées, et ça prendra toujours du temps pour changer. Du moins, sans un ordre venant d'en haut.

0 votes

L'approbation est une question de fond, et les développeurs sont prêts à normaliser, il suffit d'adopter une stratégie. Il est bon d'entendre que vous avez eu du succès avec une approche basée sur la VM. J'envisage de versionner un ensemble d'images de construction, elles fonctionneraient simultanément comme des esclaves Jenkins, mais aussi en check-out pour que les constructions puissent s'exécuter localement.

0 votes

(suite et fin) Il est bon d'entendre que vous avez eu du succès avec une approche basée sur la VM. J'envisage de versionner un ensemble d'images de construction, qui fonctionneraient simultanément en tant qu'esclaves Jenkins, mais aussi en check-out pour que les constructions puissent s'exécuter localement. Ainsi, chaque développeur pourrait extraire une image d'outils de développement et une image de construction. Maven a rendu le développement Java très portable (jusqu'à Android), mais beaucoup de nos autres travaux dépendent de l'installation de bibliothèques. Il reste donc à voir si je peux lier les bibliothèques de "tools" à "build".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X