Ceci est une ancienne révision du document !




Un langage qui révolutionne l'IoT et les architectures many-core :

Le langage Go : retours d'expériences


Séminaire Jeudi 30 juin 2016, Amphithéâtre Gay-Lussac,Ecole Polytechnique, Palaiseau


Le séminaire sera consacré au langage Go et son impact dans l'industrie.

Ce nouveau langage de programmation permet d'exploiter les architectures many-cores - avec un effet d'échelle qui lui permet de déployer le même code optimisé, aussi bien sur de l'IoT que sur un supercomputer.








Coordination scientifique :

  • Jean-Michel Batto (INRA Micalis)





Partenaires :

Intel et son logo sont des marques de commerce d'Intel Corporation aux Etats-Unis et dans d'autres pays.



Téléchargez l'affiche du séminaire

...et le programme


Damien Hartmann et Julien Vinel représentaient notre partenaire Lenovo/Intel à ce séminaire

Introduction

L'architecture many-core est devenue le paradigme dominant en informatique. Sa maitrise repose sur l'expressivité du langage de programmation. l'Internet des objets (IoT) apporte des nouvelles contraintes de puissance, de consommation et de grande variabilité des architectures. A nouveau, le langage de programmation sera le déterminant de la maitrise des architectures.

Le langage Go apparu en 2007 sous l'impulsion de Google, apporte des réponses élégantes qui permettent de penser que ce langage est le nouveau langage C adapté aux architectures modernes.

Programme

8h45-9h20 Accueil & café
9h20-9h30 Présentation de la journéeJean-Michel Batto INRA Micalis
9h30-10h15 Un nouveau langage. Pourquoi faire ? Thierry Goubier CEA List
10h15-10h45 Golang dans un produit de cybersécurité des réseaux industriels Rémy Mathieu Sentryo
10h45-11h15 Pause café
11h15-11h45 Go en Physique des Particules & Cosmologie : traitement de données, alertes et programmation parallèlepres_binet.pdfSébastien Binet CNRS/IN2P3
11h45-12h15 Go, LoRa, Go, ou comment Go accompagne la révolution IoT chez Bouygues Telecom Jean-François BustarretObjenious by Bouygues Telecom
12h15-13h00 Eléments de serveurs web Valentin Deleplace FREMN Corp
13h00-14h15 Déjeuner buffet au salon d'Honneur
14h15-14h40 Analyse de données de microcontrôleursHenri Lepic Digikong
14h40-15h10 Les apports de l'écosystème Go pour les challenges de l'ingénierie d'architectures cloud microservices Frédéric MenezScalera.io
15h10-15h25 Le langage Go dans le calcul HPC Big Data Louiza HanisINRA Micalis
15h25-15h35 conclusions avec la salle
15h35-16h00 Café & networking

Résumés des présentations

batto_intro.jpg Introduction par Jean-Michel Batto, INRA Micalis

Thierry Goubier - CEA Un nouveau langage, pourquoi faire ?

Le langage de programmation Go fait partie d'un mouvement de refondation de la programmation, qui a vu apparaître avec lui, des langages comme Rust et Swift. Pour comprendre cette refondation et l'importance de Go, il nous faut le situer dans le paysage des langages de programmation, noter les évolutions significatives qui se sont produites au cours des dernières décennies, et la réponse qu'apporte Go.

Nous regarderons aussi l'importance de l'interaction qui existe entre le programmeur et le langage.

Cette présentation tentera de vous donner cette vue d'ensemble, et un regard plus appuyé sur l'intérêt et le potentiel qu'apportent les spécificités de Go.

goubier_cea.jpg Thierry Goubier, CEA

Rémy Mathieu – Sentryo Golang dans un produit de cybersécurité des réseaux industriels

Golang est un langage qui s’installe très rapidement dans l’écosystème des solutions aussi bien amatrices que professionnelles. Langage compilé multi-plateformes dont la syntaxe se rapproche pour certains du C, Golang est accompagné d’une bibliothèque standard le permettant de remplir très rapidement et très efficacement de nombreux use-cases.

Aujourd’hui, la liste des projets importants dans lequel on peut le retrouver est déjà longue malgré le jeune âge du langage : des webservices au messaging (nsq de Bitly), en passant par les containers et le déploiement (Docker), les bases de données distribuées (Etcd) ou encore par exemple le “service discovery” (Consul).

Mais quel pourrait être sa place dans un projet de Cybersécurité ? Sentryo, startup fondée en Juin 2014, protège des réseaux industriels sensibles avec la solution ICS CyberVision dans laquelle de nombreuses parties sont réalisées en Go. Nous verrons au long de la présentation sous forme de retour d’expérience les gains et facilités apportés par Golang.

mathieu_sentryo.jpg Rémy Mathieu, Sentryo

Sébastien Binet – CNRS/IN2P3 Go en Physique des Particules & Cosmologie: traitement de données, alertes et programmation parallèle

Go est un langage de programmation relativement récent, créé pour la programmation concurrente.

Dans cette présentation, nous verrons comment ce langage, écrit à l’origine pour les serveurs de Google, est bien adapté aux applications scientifiques.

Dans un premier temps, le contexte des applications scientifiques telles que déployées au CERN sera rapidement exposé.

Les applications de physique des particules sont généralement des programmes de calcul intensif, écrits en C++/Python de plusieurs millions de lignes et centaines de bibliothèques partagées (.so/dlls).

Nous verrons comment le compilateur, l'écosystème de Go ainsi que son “tooling”, bien qu'encore relativement jeunes, permettent de résoudre rapidement et efficacement la plupart des problématiques relatives aux cycles de développement lents et pénibles, aux installations et déploiements - problèmes récurrents avec des programmes C++ de cette taille

Dans un deuxième temps, nous verrons comment Go peut être efficacement utilisé dans le cadre d'équipes plus petites n'ayant pas autant de ressources (tant matérielles qu'humaines) qu'une collaboration de physique des particules telles qu'elles peuvent exister au CERN.

Cela sera réalise au travers de l'étude de trois applications: - une simulation de physique (évolution de la composition d'une supernovae), remplaçant une analyse basée sur Excel, - une application contrôlant un jeu d'actuateurs via le protocole Modbus et présentant a l'utilisateur une interface web permettant d'afficher températures, positions, RPMs et - autres graphiques; cette application a remplace un framework Java, - une application réalisant l'acquisition (et le “monitoring”) de données d'un détecteur a application médicale.

Ce programme Go remplace un exécutable écrit avec pthread&C++03. 

binet_cern.jpg Sébastien Binet, CNRS

Jean-François Bustarret – Go, LoRa, Go, ou comment Go accompagne la révolution IoT chez Bouygues Telecom

Monter une plateforme dans un domaine aussi nouveau que l'internet des objets nécessite de savoir concilier un certain nombre de contraintes : le besoin d'adaptabilité lié à des besoins utilisateurs et des modèles économiques encore mal définis et donc changeants, des contraintes économiques fortes et en parallèle, la nécessité de disposer de plateformes fiables et capables de traiter le trafic généré par des millions d'objets.

Cette présentation nous donnera l'occasion de voir pourquoi Go est un choix intéressant pour répondre à ces problématiques.

bustarret_objenious.jpg Jean-François Bustarret, Objenious

Valentin Deleplace – FREMN Corp Éléments de serveurs web
  • Exécutable sans dépendances, ce qui simplifie les déploiements
  • Exemple de Fork/Join pour exécuter plusieurs tâches en parallèle
  • Exemple d'utilisation d'une Closure
  • Exemple d'entrée/sortie de JSON
  • Exemple de middleware de type func(http.ResponseWriter, *http.Request)
  • Pourquoi certains design patterns OOP ne sont pas très courants en Go
  • Exemple d'utilisation du Race Detector dans un serveur (mais pas AppEngine)
  • Exemple d'utilisation de l'outil Pprof pour trouver les goulots d'étranglement CPU
  • L'outil Go-fuzz pour éprouver la robustesse du programme
  • Quelques chiffres sur la consommation mémoire d'un serveur simple, comparaison avec Java
  • Considérations sur les struct, l'embedding et les interfaces. Que faut-il préférer ?
  • Peut-on survivre sans les Génériques ?
  • Avantages et inconvénients du package html/template

deleplace_fremn.jpg Valentin Deleplace, FREMN

buffet.jpg becquerel.jpg

Henri Lepic - Digikong Analyse de données de microcontrôleurs

Au vue de l'évolution du marché sur l'IoT, nous sommes face à de nouvelles problématiques tel que la récupération d'un grand volume de données généré par une myriade d'objets connectés, des moyens de communication hétérogènes, la gestion des mises à jours des objets. Face à ces problématiques certains langages offrent de très bon temps de réponse d'autres permettent une bonne versatilité quand à l'ajout de nouvelles fonctionnalités; Go est un langage offrant sous plusieurs aspects des bons équilibres entre performances et évolutions. Je vous ferais un retour d'expérience entre les phases de maquettage et de pré-industrialisation sur un projet dans le secteur de la santé et de la sécurité.

lepic_digikong.jpg Henri Lepic, Digikong

Frédéric Menez - Scalera.io Les apports de l'écosystème Go pour les challenges de l'ingénierie d'architectures cloud microservices

Le développement logiciel monotithique a encore de beaux jours devant lui dans certaines industries comme l'embarqué ou le jeu vidéo. Cependant, en matière d'applications internet et logiciels cloud, les qualités de ceux-ci, telles que la résilience et l'échelonnabilité, sont fournies par des propriétés et fonctionnalités spécifiques, atypiques des architectures monolithiques, à savoir : des composants distribués fonctionnant en grappe, des communications asynchrones, des données accessibles en réseau, des traitements concurrents, des logiques de cohérence différée, du déploiement, de la configuration et de la mobilisation de ressources automatiques.

La conception et la maintenance de ces prérequis fonctionnels peut-être complexe et nécessite un outillage cohérent, fluide, et flexible. Nous passerons en revue les composants et systèmes open source Go (bibliothèques, monitoring, télémétrie) qui ont été initiés ces dernières années en vue de faciliter la conception d'applications cloud microservices.

menez_scalera.jpg Frédéric Menez, Scalera

Louiza Hanis – INRA MicalisLe langage Go dans le calcul HPC Big Data

Après une présentation rapide de la métagénomique quantitative et des problèmes liés au développement de codes spécifiques HPC, nous verrons qu'un projet de développement spécifique écrit en Go présente l'avantage d'une maintenabilité et d'un développement rapide. L'outil développé est destiné à traiter des données de type Big Data et propose une visualisation avec Cayley.

hanis_inra.jpg Louiza Hanis, INRA Micalis

Speakers, Chairs, Committee members

Rémy Mathieu Sébastien Binet Frédéric Menez Thierry Goubier Louiza Hanis
Thiên-Hiêp Lê Jean-Michel Batto Régine Lombard Henri Lepic
sem_go.1468918124.txt.gz · Dernière modification: 2016/07/19 10:48 par lombard
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0