Serait-il un avantage pratique d'écrire un compilateur basé sur le cloud qui étendrait des unités de code compilées sur différentes machines dans le cloud? Pourrait-il y avoir un avantage d'obtenir une architecture de logiciels en tant que service au sein de l'application juste après la compilation, ou la latence inhérente à une telle approche est-elle impraticable? P>
9 Réponses :
Cela dépend. Nous avions l'habitude d'avoir de vieux compiles basés sur C ++ qui ont pris 3-4 heures. Pour quelque chose comme ça, il serait très utile de décharger la compilée. Mais dans les projets C ++, cela est souvent encore moins possible. P>
avec C # ou Java, les temps de compilation sont nettement plus rapides, il peut donc ne pas être aussi important. P>
Je crois que ce serait impraticable. Le matériel d'aujourd'hui peut faire une compilation de projets de petite et moyenne taille à un délai raisonnable; plus donc avec des processeurs multicœurs. P>
La seule exception consiste à créer un système d'exploitation complet (par exemple debian) à partir de sources; Pour une telle demande, les exploitations de construction sont à usage généralisé. Cependant, les utilisateurs nécessitant des exploitations de construction peuvent généralement les créer eux-mêmes et ne pas avoir besoin d'aller au nuage. P>
J'ai utilisé un tel système, mais cela a fonctionné sur un cluster local, pas un nuage. Mais le principe serait exactement le même. Malheureusement, je ne me souviens pas de ce que l'on appelle - mais c'était cool, en regardant vos fichiers source pour que vos fichiers sources soient agricultés aux autres PC de votre département. P>
Edit: il s'appelait incrédibuild . P>
J'ai utilisé incrédibuild et cela fonctionne assez bien sur LAN. Théoriquement une telle chose pourrait être faite dans le nuage, juste avoir les ressources de la CPU menant à ce que le travail pourrait être coûteux. IncrediBuild utilise le processeur de rechange des autres machines sur LAN qui a beaucoup de sens et est libre.
Xcode a une fonction de construction distribuée qui vous permet de le faire, mais je pense que sur autre chose qu'un réseau local, ce serait très lent la plupart du temps. P>
Je pense que cela pourrait être utile s'il s'agissait d'une sorte d'outil d'intégration continue. Pour certains environnements de développement, la configuration appropriée est difficile. Par exemple, j'ai déjà travaillé sur un projet où l'équipe compilait des fichiers SWF à l'aide de flashDevelop et SDK Flex de Adobe . C'était parfois une douleur à installer sur l'ordinateur d'un individu. Si un service pourrait surveiller un répertoire de projet ou GIT / SVN / etc. référentiel et construire le dernier SWF, cependant, je pense que cela aurait été utile. P>
J'imagine que cela aurait également une utilisation pour des projets multi-plateformes. Ou, ce service pourrait prendre en charge un IDE de navigateur comme Bespin de Mozilla. P>
Vous pouvez utiliser L'interaction avec "Le nuage" pourrait induire la latence, mais je pense toujours au code C ++ plus compliqué, il pourrait être très utile. Je suppose que si vous avez plus de 100 unités de compilation (fichiers F.E. .CPP), vous pouvez obtenir un enregistrement notable. P> distcc code> et
make -j code> pour la compilation distribuée du code UNIX le plus typique. Si vous compilez régulièrement de gros morceaux de code, cela pourrait vous obtenir de grandes écarts ... Afaik Samba (mise en œuvre gratuite de SMB) les utilise pour cela.
distcc code> ne fait que la phase de compilation de manière distribuée, laissant le prétraitement et la liaison à la machine maître. p>
J'ai vu une belle démo de courir des tests junits au-dessus de la gridge et que le réseau peut être exécuté dans le nuage. P>
Je ne vois pas beaucoup de valeur dans le compilateur étant dans le nuage. P>
Je ne sais pas si j'ai mal compris votre point ou si les autres réponses ont. Parlez-vous d'une sorte de tâche de parallélisation automatique? Les réponses données jusqu'à présent semblent parler de la compilation distribuée - c'est-à-dire à l'aide d'un cloud pour accélérer les temps de compilation. J'ai supposé que vous avez plutôt parlé d'un compilateur qui cible les ressources en cloud computing. P>
Si vous parlez en fait de la compilation distribuée, alors évidemment des choses comme DistCC feront ce dont vous avez besoin. P>
Si vous demandiez à la question beaucoup plus intéressante (IMHO) sur la question de savoir si un compilateur qui cible les architectures distribuées serait utile, ma réponse est un «oui» retentissant. Cependant, la faisabilité est au cœur du problème. La latence n'est pas le problème en tant que telle, cependant la cohérence (c'est-à-dire en veillant à ce que les versions correctes de toutes les unités soient en place) et que les heuristiques décentes seraient un problème. P>
Le meilleur endroit à regarder serait probablement le langage de programmation Occam - il a ciblé le conserve, qui n'était pas totalement différent du type d'architectures de systèmes distribuées que nous sommes intéressés ces jours-ci. Je pense qu'il y a du travail qui suit de Ocme qui pourrait fournir des indices utiles quant à ce que l'état de la technique est. P>
Oui ... c'est ce que je demandais, si un compilateur qui cible les architectures distribuées serait réalisable ... rédiger un code au même endroit et le faire courir dans le nuage, en tant que série de services réutilisables faiblement réutilisables. J'imagine que ce serait utile, je suis en train de renseigner si la latence le rendrait inutilisable à l'état sauvage.
"Compiler basé sur le cloud" Comme indiqué dans le titre implique un compilateur qui fonctionne dans le cloud, pas un compilateur qui génère des programmes en nuage. Je suppose que j'ai mal compris.
Oui, merci de demander, je recherche aussi bien dans ce domaine. En fait, cela a beaucoup de sens et il existe, http://www.cloudcellpiling.com/ , mais pour Ce que je peux voir, il est encore loin d'être un service top 10. P>
La latence n'est que dans le téléchargement du code, de sorte que si les développeurs travaillent avec une bonne connexion et non trop loin (en termes de sauts de réseau et de «bon» houblon), ce ne serait pas un problème. < / p>
La latence sur le nuage est une question du fournisseur de cloud, si c'est vous le fournisseur de cloud, alors vous avez besoin d'une bonne stratégie d'équilibrage. P>