Une présentation de Benjamin BALET / Consultant APM
Go (golang) :
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)
}
Go est stable depuis début 2012 (Go 1.0).
Google mise sur Go et Facebook sur le langage D, mais :
Google cherche une alternative au C, C++, Java...
Confidentiel : "Go is used in a lot of places..."
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.
Initialement développé en Ruby, le passage à Go a permis de réduire le nombre de serveurs de 30 à 2 !
Source
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é.
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.
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
Pensez à visiter le site Découvrir golang, premier site français dédié au langage Go