Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

XebiCon'16 : La programmation concurrente en Go. Par Jérome Doucet et Diana Ortega, Développeurs chez Xebia

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 26 Publicité

XebiCon'16 : La programmation concurrente en Go. Par Jérome Doucet et Diana Ortega, Développeurs chez Xebia

Télécharger pour lire hors ligne

Go, langage de programmation conçu par Google, est devenu un langage de choix pour réaliser des microservices, des applications système ou pour des applications destinées au cloud. Reconnu pour sa simplicité, sa facilité d'apprentissage et son modele de programmation concurrente, il a servi dans la construction de plusieurs projets très populaires, tels que Docker, Kubernetes, Grafana ou Swarm. Vous ne connaissez pas encore Go ? Venez le découvrir en atelier ! Initiez-vous en douceur au langage, à son outillage et aux concepts qui lui sont propres, avec comme objectif final une introduction à certains pattern de programmation concurrente en Go.

Go, langage de programmation conçu par Google, est devenu un langage de choix pour réaliser des microservices, des applications système ou pour des applications destinées au cloud. Reconnu pour sa simplicité, sa facilité d'apprentissage et son modele de programmation concurrente, il a servi dans la construction de plusieurs projets très populaires, tels que Docker, Kubernetes, Grafana ou Swarm. Vous ne connaissez pas encore Go ? Venez le découvrir en atelier ! Initiez-vous en douceur au langage, à son outillage et aux concepts qui lui sont propres, avec comme objectif final une introduction à certains pattern de programmation concurrente en Go.

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (17)

Les utilisateurs ont également aimé (17)

Publicité

Similaire à XebiCon'16 : La programmation concurrente en Go. Par Jérome Doucet et Diana Ortega, Développeurs chez Xebia (20)

Plus par Publicis Sapient Engineering (20)

Publicité

Plus récents (20)

XebiCon'16 : La programmation concurrente en Go. Par Jérome Doucet et Diana Ortega, Développeurs chez Xebia

  1. 1. @xebiconfr #xebiconfr Concurrent programming with Go Jerome DOUCET Diana ORTEGA
  2. 2. @xebiconfr #xebiconfr Jérôme Doucet jerdct jeromedoucet 2 Diana Ortega dicaormu dicaormu
  3. 3. @xebiconfr #xebiconfr AU MENU D’AUJOURD’HUI1 ● Rappels sur Go ● Le modèle de concurrence ● Le Hands-on (le jeu) ○ les pré-requis (liens vers installation) ○ les buts ○ les objectifs ○ le déroulement 3
  4. 4. @xebiconfr #xebiconfr Rappels sur Go 1 4
  5. 5. @xebiconfr #xebiconfr Rappels sur Go ● Langage de programmation récent (2007) ● Compilation statique, garbage collector 1 5
  6. 6. @xebiconfr #xebiconfr Rappels sur Go II ● Syntaxe proche du C, simple et familier ● Modèle de programmation concurrente basé sur le modèle CSP Et plein d’autres choses encore... 1 6
  7. 7. @xebiconfr #xebiconfr Le modèle CSP 2 7
  8. 8. @xebiconfr #xebiconfr Le modèle CSP ● CSP = Communicating Sequential Processes ● Hoare, 1978 ● Implémenté au travers de channels et de goroutines 2 8
  9. 9. @xebiconfr #xebiconfr Go channel P2 P3 P1 CHANNEL Pipeline qui permet à plusieurs processus de communiquer 2 9 “Don't communicate by sharing memory; share memory by communicating”.
  10. 10. @xebiconfr #xebiconfr Le Jeu 3 10
  11. 11. @xebiconfr #xebiconfr Le jeu http://vil-coyote-acme.github.io/ go-xke/ 3 11
  12. 12. @xebiconfr #xebiconfr Le jeu Le but : Vous êtes le serveur d’un bar. Tout est calme, lorsque soudain débarque dans votre troquet une horde assoiffée. 3 12
  13. 13. @xebiconfr #xebiconfr Le jeu Votre objectif est alors de satisfaire au mieux leurs demandes ! 3 13
  14. 14. @xebiconfr #xebiconfr Le jeu En tant que serveur, vous allez recevoir des commandes qu’il vous faudra soumettre au barman puis revenir auprès des clients pour les servir… Et vous faire payer ! 3 14
  15. 15. @xebiconfr #xebiconfr 1ère partie 3.1 15
  16. 16. @xebiconfr #xebiconfr Le jeu Le but : ● Suivre les étapes indiquées dans la documentation, le code et faire passer tous les tests ● Connecter votre serveur au client et au barman 3.1 16
  17. 17. @xebiconfr #xebiconfr Schéma TOI /orders /orders /bill/player/idOrder 3.1 17
  18. 18. @xebiconfr #xebiconfr 2ème partie 3.2 18
  19. 19. @xebiconfr #xebiconfr Le jeu3.2 19
  20. 20. @xebiconfr #xebiconfr Le jeu Le but : ● Optimiser votre score, tout en prenant en compte les limites du barman ● La validation est faite par le barman : si vous envoyez plus de 5 commandes en parallèle, vous serez (lourdement) pénalisés 3.2 20
  21. 21. @xebiconfr #xebiconfr Le jeu Le but : ● Découverte et utilisation d’un pattern de programmation concurrente simple ● Pour aller plus loin : essayer d'être meilleur que les autres participants ! 21 3.2
  22. 22. @xebiconfr #xebiconfr ● Vous n’avez pas à vous soucier des threads, mais des goroutines Rappel 22 3.2 Thread 2 Thread 3Thread 1 goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine goroutine
  23. 23. @xebiconfr #xebiconfr ● Lorsqu’une opération est bloquante (I/O, lecture ou écriture sur un channel, ...), un scheduler fourni par Go se charge de la commutation de contexte entre goroutines ● Le partage des données entre goroutines se fait préférentiellement de façon événementielle, en utilisant des channels Rappel 23 3.2
  24. 24. @xebiconfr #xebiconfr Rappel - Go channel P2 P3 P1 CHANNEL messages := make(chan string) func someFunc() { messages <- "ping" } func main() { go someFunc() msg := <-messages fmt.Println(msg) } Pipeline qui permet à plusieurs processus de communiquer 24 3.2
  25. 25. @xebiconfr #xebiconfr Schéma original TOI /orders /orders /bill/player/idOrder handleOrder 3.2 25
  26. 26. @xebiconfr #xebiconfr Schéma TOI /orders /orders /bill/player/idOrder handleOrder orderChan /orders /orders . . . consumeOrder=5 26 3.2

×