Présentation de golang

Go, un langage pensé pour la performance

Une présentation de Benjamin BALET / Consultant APM

Agenda

  • Qu'est-ce que Go ?
  • Pourquoi golang ?
  • Qui utilise Go ?
  • Étude de cas

Qu'est-ce que Go ?

Go (golang) :

  • Open source
  • Concurrent
  • Un langage à Garbage Collector
  • Conçu pour la montée en charge
  • Un exécutable Go n'a pas de dépendances
  • Intègre l'Unicode (internationalisation)
  • gofix pour migrer automatiquement les source
  • Le successeur du C/C++?

Exemple de code

Un exécutable = serveur web + Site web

import (
  "net/http"
  "html/template"
)

type Page struct {
  Title string
}

var tmpl = template.Must(template.ParseFiles("view.html"))

func viewHandler(w http.ResponseWriter, r *http.Request, title string) {
 p := Page{Title: "Bienvenue"}
 err := tmpl.ExecuteTemplate(w, "view.html", p)
 if err != nil {
   http.Error(w, err.Error(), http.StatusInternalServerError)
 }
}

func main() {
 http.HandleFunc("/view/", viewHandler)
 http.Handle("/", http.FileServer(http.Dir("static/")))
 http.ListenAndServe(config.Port, nil)
}

Est-ce que Go est stable ?

Go est stable depuis début 2012 (Go 1.0).
Google mise sur Go et Facebook sur le langage D, mais :

  • D a deux versions majeures incompatibles
  • D a plusieurs bibliothèques standards, Go une seule
  • Les versions de golang sont compatibles entre elles
  • Go a une communauté plus active

Pourquoi remplacer Java, C et C++?

datacenter Google

Résoudre les problèmes de Google

Google cherche une alternative au C, C++, Java...

  • Réduire le nombre de serveurs.
  • Réduire la consommation mémoire.
  • Accélerer la compilation.
  • Simplifier le casse-tête des dépendances.

Les sites web en go

  • http://www.bbcworldwide.com/ (BBC Worldwide)
  • http://www.canonical.com/ (Éditeur d'Ubuntu)
  • http://www.activestate.com/ (Active Perl, ...)
  • https://www.gov.uk/ (routeur web)
  • http://zynga.com/ (Jeux vidéo)

Les sociétés utilisatrices

  • http://www.cloudflare.com/ (Content Delivery Network)
  • http://disqus.com/ (commentaires / social network)
  • https://www.tumblr.com/ (réseau social)
  • https://bitly.com/ (web link)
  • Google

Chez Google

Confidentiel : "Go is used in a lot of places..."

Étude de cas

Une des premières sociétés à avoir adopté Go est iron.io (en 2011). iron.io propose un service de message queuing afin de faire dialoguer des applications distribuées et hébergées sur le cloud. Le service est de haute disponiblité et convient aux applications critiques.
Détaillons les apports de golang.

Réduction des ressources

Initialement développé en Ruby, le passage à Go a permis de réduire le nombre de serveurs de 30 à 2 !
Source

La fin les problèmes de mémoire

Go n'a pas besoin de machine virtuelle ou d'interpréteur. Les programmes go démarrent vite et consomment peu. iron.io constate une consommation moyenne de 400 Mo par processus en production. Depuis deux ans, aucun problème de fuite de mémoire n'a été constaté.

Déploiement simplifié

Les exécutables Go sont constitués d'un seul exécutable et séparés des ressources de l'application. Le déploiement d'une version consiste simplement à déposé un fichier.

  • Pas de dépendances (DLL, paquets...)
  • Pas de runtime

Chez iron.io, le binaire prinaire principal pèse environ 6Mo.

Retour arrière en un instant

Si un problème survient lors du déploiement, il suffit d'arrêter le programme défaillant et de lancer l'ancien.
Il n'est pas nécessaire de s'inquièter à propos des dépendances :
L'intégralité du programme n'est constitué que d'un seul exécutable.iron.io

Merci

Pensez à visiter le site Découvrir golang, premier site français dédié au langage Go

Tweeter
  Retourner sur le site web