Apprendre le langage Go en 2020 🤔
Le dĂ©but d’une nouvelle annĂ©e est parfois l’occasion de prendre des bonnes rĂ©solutions ou de mettre en place de nouveaux objectifs pour l’annĂ©e Ă venir. Je ne l’avais pas fait l’annĂ©e dernière mais force est de constater que j’ai mis Ă profit l’annĂ©e 2019 pour apprendre le langage Go. J’avais il est vrai commencĂ© Ă tremper le bout de mes orteils dans l’eau fin 2018 mais j’avais un peu galĂ©rĂ© Ă comprendre toutes les subtilitĂ©s de la syntaxe et de la philosophie de ce langage ! Alors si l’envie vous vient de s’attaquer Ă ce chouette langage suivez le guide !
Un cours en ligne
Les concepteurs de Go ont pris des décisions tout à la fois pertinentes et fortes : formatage du code, gestion de l’encapsulation, pas d’héritage de classes. Je pense qu’un bon point de départ est de s’offrir un cours en ligne afin de bien maîtriser les bases.
J’ai personnellement suivi le cours de Robin Penea sur Udemy : https://www.udemy.com/share/101ND1B0EecFdaTXw=/Â
Il est bien structurĂ© et possède l’avantage d’être en Français ce qui peut-ĂŞtre un gros plus en fonction de votre niveau d’anglais.Â
Il est actuellement proposé à 199 euros, j’ai eu la chance de l’avoir pour 10 euros grâce à une des nombreuses promotions offertes par Udemy.
Les best practices
Une fois les bases du langage apprises il est temps de se pencher sur les bonnes pratiques et les erreurs courantes. Uber fait partie des entreprises utilisant massivement le langage Go et a publié un guide à destination de ses développeurs. Rédigé à l’origine afin d’illustrer les possibilités offertes par le langage ce guide est une véritable mine d’or pour les Gophers débutants :
https://github.com/uber-go/guide/blob/master/style.md
A noter que ce guide référence deux autres liens qui me semblent utiles :
https://golang.org/doc/effective_go.html
https://github.com/golang/go/wiki/CodeReviewComments
Golang dans des containers
Docker a été adopté par une majorité d’entreprises, il est donc probable que vous souhaitiez contenairiser votre application Go. L’un des avantages de Go justement est qu’il permet d’obtenir des containers de petites tailles. Cela tient au fait que c’est un langage compilé et donc, contrairement à Java par exemple, il n’est pas nécessaire d’embarquer un OS complet et une machine virtuelle dans le container.
Je ne peux que vous conseiller l’excellent article de Cyrille HĂ©midy Ă ce sujet:Â
https://medium.com/@chemidy/create-the-smallest-and-secured-golang-docker-image-based-on-scratch-4752223b7324
On y apprend comment réduire encore plus la taille de notre image Docker ainsi que quelques étapes qui permettent d’améliorer un peu la sécurité.
Domain Driven Development
Un des sujets chauds ces dernières années sur la planète Dev est le concept de clean architecture, encore appelée architecture hexagonale. Ce concept a été popularisé par les aficionados du DDD. Personnellement je trouve que c’est une avancée significative comparée à l’architecture en couches.
Un des exemples les plus aboutis de clean architecture en Go est Ă mon sens le projet Go DDD de Marcus Olsson.
Le code source est disponible sur GitHub : https://github.com/marcusolsson/goddd
Marcus a également présenté son projet lors de la GopherCon UK 2016 : https://www.youtube.com/watch?v=twcDf_Y2gXY
Go Kit
Un des autres tendances majeures dans l’ingénierie logicielle est l’abandon des monolithes pour les remplacer par plusieurs microservices. La facilité d’utilisation de certains frameworks comme Spring Boot par exemple, qui permet rapidement de gérer le monitoring et la sécurité entre autres, a accélérée cette transition.
On pourrait donc craindre le manque d’outils similaires pour Go. C’est là qu’intervient le projet Go Kit. Il permet de rapidement concevoir des microservices en Go tout en supportant du monitoring, les circuit breakers, etc…
Le projet est disponible ici : https://gokit.io/
Ainsi que sur GitHub : https://github.com/go-kit/kit
Conférences
Il est également possible de parfaire ses connaissances en Go en assistant à des MeetUps et à des Conférences.
En France il y a les MeetUps de :
- Marseille : https://www.meetup.com/fr-FR/Golang-Marseille/
- Paris : https://www.meetup.com/fr-FR/Golang-Paris/
- Rennes : https://www.meetup.com/fr-FR/Golang-Rennes/
- Lyon : https://www.meetup.com/fr-FR/Golang-Lyon/
Au niveau conférences j’ai recensé les conférences suivantes :
- dotGo France (30 Mars 2020)Â : https://www.dotgo.eu/
- GopherCon UK (19–21 Aout 2020) : https://www.gophercon.co.uk/
- GopherCon Europe (23–26 Avril 2020) : https://gophercon.berlin/
Cette liste n’est pas exhaustive, n’hésitez pas à me signaler dans les commentaires si vous connaissez d’autres événements qui vous semblent intéressants.
Podcasts
Enfin une autre façon de découvrir d’autres recoins de l’écosystème Go est d’écouter des podcasts. Personnellement j’en écoute deux qui parlent de ce langage.
Le premier est en Français, se nomme GoFr et est animé par Arnaud Assad. Vous trouverez ce podcast sur toutes les plateformes dont SoundCloud : https://soundcloud.com/arnaud-assad
Le second est en Anglais et se nomme GoTime. Il est animé par une équipe de chez ChangeLog. Le rythme de publication est en peu plus soutenu que pour GoFr. Vous le trouverez également sur toutes les plateformes et sur le site de ChangeLog : https://changelog.com/gotime
J’espère que cet article vous a donné l’envie d’apprendre le langage Go !
N’hésitez pas à me faire part de vos commentaires ou questions en bas de cet article ou en m’envoyant directement un message sur LinkedIn :
http://www.linkedin.com/in/jbleduigou/en.
Photo de couverture par Colton Sturgeon.
Cet article a initialement été publié sur Medium.