- Indico style
- Indico style - inline minutes
- Indico style - numbered
- Indico style - numbered + minutes
- Indico Weeks View
Après avoir lancé une idée de séminaires de vulgarisation, Christian doit maintenant mettre ce projet en pratique. Oleg propose d'y parler de blockchains.
Une application possible de ces dernières serait de gérer les quotas de ressources dans une infrastructure Spark de calcul distribuée. Mais une question demeure: la complexité de la solution blockchain est-elle vraiment justifiée pour cette application?
Julius est actuellement le seul utilisateur important de l'infrastructure Hadoop d'ATLAS, la question de la gestion des ressources se pose donc assez peu dans son cas.
Pour cette application, Spark a été testé, mais ne se révèle pas très intéressant non plus: aucun bénéfice significatif n'est observé en termes de performances. La raison la plus probable est que les requêtes Hadoop sont loin d'être un goulot d'étranglement pour les performances: une requête prend de l'ordre de 30ms, c'est loin d'autres latences comme celle du réseau et des services web.
Aujourd'hui, les principaux facteurs limitants pour les performances seraient plutôt le transfert de données sur le réseau et l'interface utilisateur.
On peut accéder à l'EventIndex de trois manières: une API REST, un programme en ligne de commande, et une interface web. Les principaux use cases sont:
Une des difficultés de cette aplication est de gérer le cycle de vie du jeu de données, par exemple les cas où un jeu de données est invalidé. Pour y parvenir, l'application doit interagir avec beaucoup d'autres services: AMI, RUCIO, etc...
Il existe une certaine hantise de Java dans ATLAS, qui tient sans doute à plusieurs facteurs. Le premier, et sans doute le plus valable, est que l'expérience a surtout une expertise en Python et C++, ce qui y rend difficile la maintenance de code Java. Mais par ailleurs, nombre de développeurs ATLAS vivent aussi dans le souvenir traumatique de la performance d'anciennes implémentations Java, dont une partie n'est plus d'actualité.
Ainsi, la performance à l'exécution de la JVM est aujourd'hui très supérieure à celle de CPython et se trouve à moins d'un facteur 2x d'une implémentation C++ simple dans nombre de benchmarks (exemple). Il faut souvent être expert en vectorisation, macros/templates, et autres concepts C++ avancés pour la dépasser en pratique. En revanche, la consommation de RAM très importante de la JVM (on parle parfois d'un facteur 500x ou plus par rapport à une application C++ de complexité équivalente) demeure un problème pour des applications avares de cette ressource comme les code de calcul intensif. Sur ce point, c'est plutôt le C++ qui rend les choses nettement plus faciles à la base, même si un développeur Java expert pourra là aussi améliorer les choses.
Pour revenir à la question de la maintenance, elle tient à plusieurs facteurs. D'une part, si le développeur d'un programme utilise un langage obscur pour sa communauté, il sera difficile de trouver d'autres personnes capable de maintenir ce programme, surtout après le départ du développeur principal. D'autre part, il est souvent nécessaire d'interfacer des codes écrits dans différents langages, ce qui se révèle d'autant plus difficile qu'on est souvent forcé de s'en remettre au plus petit dénominateur commun d'une interface C, qui est fondamentalement incapable d'exprimer efficacement des concepts modernes tels que l'objet.
Le sujet de la guerre des langages étant lancé, chacun s'est lancé dans la discussion de ses langages favoris: Go, Python, Scala... Il était difficile de prendre des notes, mais voici quelques bribes de ces conversations:
Dans tous les cas, rappelle Christian, le choix initial d'un langage pour un projet se fait plus souvent vis à vis des connaissances de la communauté que des qualités intrinsèques de chaque langage. En effet, former une communauté entière à un nouveau langage a un coût titanesque, comme on a pu s'en rendre compte lors du douloureux passage de la communauté HEP de Fortran à C++.