Approfondissez vos connaissances avec le langage Go : apprenez à bien tester votre code, à améliorer les performances et sécuriser vos applications lors de cette formation Go Avancé.
Cette formation Go Avancé s'adresse à toute personne, développeur·se, chercheur·e, ingénieur·e... souhaitant approfondir son utilisation du langage Go.
Go séduit de plus en plus de monde par sa simplicité, ses fonctionnalités de concurrence natives, sa polyvalence, sa stabilité, sa performance, etc. Il serait dommage de ne pas tirer parti de tout ce que le langage et son écosystème a à offrir ! (La formation vient d'être mise à jour pour Go 1.24)
Durant ces trois jours de formation, vous apprendrez des techniques visant à améliorer votre code en termes d'exactitude, de maintenabilité, de testabilité, de performance et de sécurité.
Cette formation sera entrecoupée de travaux pratiques concrets visant à assimiler chaque nouvelle notion rencontrée.
À l'issue de cette formation Go Avancé, vous repartirez avec le code source du projet développé lors de ces trois jours, ainsi que la solution du formateur (sur GitHub).
Si vous débutez avec le langage de programmation Go ou souhaitez revoir les bases, jetez un oeil à la formation Go !
🇺🇸 Cette formation est aussi disponible en anglais
La formation Go dispensée par Julien Crétel est exceptionnelle par sa profondeur technique et son approche pratique. Le formateur maîtrise parfaitement son sujet et transmet ses connaissances de manière claire et structurée. J'ai particulièrement apprécié l'accent mis sur les bonnes pratiques de production et la gestion de la concurrence. La formation alterne efficacement entre théorie et pratique, permettant une assimilation progressive des concepts avancés.
Les objectifs
Approfondir ses connaissances du langage Go et de son écosystème
Assimiler les bonnes pratiques de qualité logicielle en Go
Avoir une expérience régulière d'au moins trois mois avec Go
Avoir les bases en anglais technique
Ordinateur portable à apporter
Le programme de la formation Go Avancé
Jour 1 : Exactitude et maintenabilité
Bonne pratiques générales
Optimisez votre code pour la lecture
Evitez les packages unsafe et reflect
Encapsulez vos types proprement
Distinguez types métier et data-transfer objects (DTOs)
Rendez la valeur vierge directement utilisable
Evitez les littéraux de structs sans clés
Evitez les variables globales
Functional options
Mises en pratique :de multiples exercices sur les différents thèmes abordés
Documentation et tests
Documentation de packages ; exemples exécutables
Table de tests
Injection de dépendances
Mocking/stubbing : adaptateur pour interface à une seule méthode
Mises en pratique :
- Documentation d'un package existant
- Ecriture d'un exemple exécutable
- Utilisation d'un stub du client HTTP dans des tests unitaires
Gestion avancée d'erreurs
Les écueils à éviter
Au delà de l'idiome if err != nil
Déclaration de types d'erreurs personnalisés
Le package errors
Enrobage d'erreurs et inspection de la chaîne d'erreurs
Mises en pratique :
- Déclaration d'un type erreur haut niveau
- Inspection de la chaîne d'erreurs
Packages
Utilisation de packages internes
Conseils pour éviter les cycles de dépendances
Modularisation judicieuse du code en packages
Quelques pistes pour faire du Domain-Driven Design en Go
Mises en pratique :addition d'un package interne à un projet existant
Génériques
Qu'est-ce que les génériques ?
L'intérêt des génériques
Types et fonctions génériques
Contraintes de types
Contraintes pré-déclarées : any et comparable
Le package contraints
Restriction en relation aux méthodes
Contraintes de types récursifs
Ecueils à éviter
Mises en pratique :implémentation d'un arbre binaire générique
Jour 2 : Concurrence avancée
Rappels sur la concurrence
Goroutines
Channels
Le mot-clé select
Subtilités du modèle mémoire de Go
Situations de compétition
Fuite de goroutines
Mises en pratique :identification et débogage d'une situation de compétition
Contextes
Goroutines annulables
Le type context.Context
Trois façons de détecter l'annulation d'un contexte
Dérivation de contextes
Contextes remarquables : context.Background() et context.TODO()
Arbre des contextes
Contextes et APIs de packages
Un type déchiré entre deux objectifs distincts
Stocker et récupérer des valeurs avec context.Context
Bonnes et mauvaises pratiques
Mises en pratique :
- Rendre une goroutine annulable
- Débogage d'une simple simulation de ping-pong
- Annulation d'une requête côté client
- Annulation des tâches liées à une requête côté serveur
Patterns de concurrences
Evitez time.Tick and time.After
Laissez à l'appelant le choix du pattern de concurrence
Ne présupposez pas qu'un type est concurrency-safe
Le pattern fan-out et ses limitations
Pool of workers
Sémaphores
Délestage (load shedding)
Requêtes redondantes
Requêtes de secours (hedged requests)
Slices et concurrency safety
Exécution unique avec sync.Once
Mises en pratique :de multiples exercices sur chaque pattern de concurrence abordé
Jour 3 : Performance et sécurité
Macro-optimisation
Profilage de code avec pprof
Le package net/http/pprof
Traceur d'exécution
Réglage du ramasse-miettes
Mises en pratique :
- Identification des goulets d'étranglement et optimisation d'un utilitaire avec pprof
- Optimisation de la concurrence d'un utilitaire grâce au traceur d'exécution
Micro-optimisation
Contraintes d'alignement mémoire et remplissage
Optimisation de l'empreinte mémoire des structures
Micro-benchmarks
Subtilités du ramasse-miettes
Escape analysis et réduction de la pression sur la pile
Réduction de la taille des exécutables
Mises en pratique :de multiples exercices sur les différents thèmes abordés
Bonnes pratiques de sécurité
Go : un langage et écosystème sécurisant
Bonnes et mauvaises pratiques de déclaration d'énumérations
Intégrité des dépendances
Bornez le degré de concurrence
Situations de compétition et leurs dangers
Mises en pratique :de multiples exercices sur les différents thèmes abordés
Analyse statique et dynamique de code
semgrep
gosec
Fuzzing
Mises en pratique :de multiples exercices sur les différents thèmes abordés
Sécurité Web
Templates
N'exposez pas vos endpoints pprof
Configuration judicieuse des clients et serveurs HTTP
Risques liés au content-type sniffing
Messages d'erreurs verbeux
Path traversal
Configuration judicieuse des CORS
Problèmes d'inter-opérabilité JSON
Mises en pratique :
- identification, exploitation et résolution des failles de sécurité évoquées
- études de cas
Julien est à la fois développeur, chercheur en sécurité Web et formateur.
Son langage de prédilection est le Go, sujet sur lequel il a formé des centaines de professionnel·le·s depuis 2019. Il lui arrive aussi d'intervenir sur Go à l'occasion de conférences spécialisées, telles que GopherCon 2023 Europe.
Julien est actif dans le domaine de la sécurité Web. En marge des tests de sécurité (tests d'intrusion, évaluation de vulnérabilité, audit de codes, etc.) que ses clients lui confient et de ses activités de recherche indépendante, Julien forme régulièrement des professionnel·le·s sur la sécurité Web. Il s'adonne aussi, de temps à autre, à la chasse au bogues de sécurité (bug bounty hunting).
Julien partage ses réflexions et sa recherche sur son blog, qui est, sans surprises, principalement dédié au langage Go et à la sécurité Web.
Témoignages
4.7/5Basé sur 89 avis*
AB
Axel B.
Synapse Medicine27.11.2024
La formation Go dispensée par Julien Crétel est exceptionnelle par sa profondeur technique et son approche pratique. Le formateur maîtrise parfaitement son sujet et transmet ses connaissances de manière claire et structurée. J'ai particulièrement apprécié l'accent mis sur les bonnes pratiques de production et la gestion de la concurrence. La formation alterne efficacement entre théorie et pratique, permettant une assimilation progressive des concepts avancés.
GR
Georges-Antoine R.
Deezer25.09.2024
Formation très intéressante, alliant enseignement théorique et travaux pratiques et études sur des cas réels. Le formateur Julien est pédagogue et à l'écoute. Je recommende vivement la formation.
NF
Nicolas F.
AKENEO13.12.2023
Top !
PF
Pierre F.
Dassault Systèmes09.10.2023
Super formateur, tres pedagogue et patient
Super exos
Je recommande, mais a faire en presentiel ...
NN
Nathan N.
Fondation b<>com04.09.2023
Cette formation en Go est excellente pour approfondir les connaissances, acquérir de bonnes pratiques et éviter les pièges courants.
BB
Béatrice B.
Fondation b<>com04.09.2023
L'évolution des TPs durant le cours est intéressante.
Le formateur était clair, pédagogue, attentif et a répondu aux questionnements des stagiaires.
Je conseille aux prochains de bien travailler en amont les basics et de se renseigner sur les sujets de la formation pour profiter pleinement de l'enseignement.
GC
Geoffrey C.
Positive Thinking Company03.07.2023
Superbe formateur qui propose une superbe formation. Cette dernière est très complète. Le rythme permet d'appréhender un maximum de concepts tout en revenant sur des choses plus basiques quand le besoin se fait sentir. Julien est à l'écoute de la moindre question, et nous offre son expérience, ses connaissances ou son avis sur chacun des sujets abordés. Vous en ressortirez grandis avec les connaissances et la motivation pour mettre un code Go plus propre, plus performant ou plus idiomatique en prod.
AT
Anthony T.
CGI France03.07.2023
Formation très intéressante, formateur compétent qui sait s'adapter aux niveaux et besoins des participants
CL
Christophe L.
Christophe Lecroq03.07.2023
Excellente formation avec un formateur aussi compétent que sympathique.
JD
Jérémy D.
OVH05.06.2023
Formation très intéressante
Bon accompagnement du formateur Julien, sur les exercices, la compréhension du contenu. Le tout avec une bonne ouverture d'esprit quand aux questions et remarques.
Le rythme est soutenu, et pourtant digeste.
Je recommande !
BZ
Benjamin Z.
OVH05.06.2023
Le programme est complet et assez poussé. Le formateur est très accessible pour discuter des cas d'application en situations réelles des sujets abordés pendant la formation. Je suis vraiment satisfait d'avoir participé à cette formation !
NF
Nicolas F.
OVH22.05.2023
Très bonne formation. Permet d'aborder ou de recevoir les principes qui sont au coeur du langage Go. Julien est un très bon formateur avec une excellente pédagogie. Les échanges avec lui et les autres personnes présentes lors de la formation étaient très intéressants.
KB
Kylian B.
OVH22.05.2023
Une formation vraiment complète et très intéressante
MS
Marc S.
OVH22.05.2023
C'était une formation très intéressante et enrichissante qui balaie plusieurs aspects avancés de Go. Les exercices aident beaucoup à la compréhension des thèmes abordés et permettent de voir des cas concrets. Le formateur est très pédagogue. Je conseille vivement, peu importe le niveau (base ou avancé).
AG
Adrien G.
OVH17.04.2023
Les formations Human Coders sont toujours très enrichissantes.
Merci Julien Cretel ! Toujours au top du top !
XG
Xavier G.
Deezer
Super ! Julien est très compétent et pédagogue. Énormément de pratiques et d'outils à appliquer tout de suite à l'issue de la formation.
OM
Olivier M.
Bow Medical
Formation d'excellente qualité avec un formateur compétent, pédagogue et très agréable qui s'est parfaitement adapté au public de la formation.
DA
David A.
OVH
Amazing training! I love the practical examples illustrating a relevant theoretical course. The program is rich, complete and up-to-date (like generics), with metaphors and warnings about common pitfalls. The pace is perfect. An excellent addition to the books. Eager to apply all the knowledge seen during this training!
SZ
Stanislaw Z.
OVH
In summary it was preatty good training. Full of good materials.
I really appreciate trainer's knowledge and experience.
RN
Raoul N.
OVH06.05.2022
Give the student an option to review the explanations and exercises after the day of training, so that the following day it can bring more engagement.
PT
Patricio T.
OVH07.04.2022
Julien est un super coach. Les presentations étaient claires et très did
SL
Suliac L.
OVH07.04.2022
Vachement cool
SD
Simon D.
OVH04.04.2022
Revoir le naming de la première formation, qui est présentée pour débutant. Certains pourraient être tentés de choisir la formation avancée, car ils ne s'estiment pas débutant, mais n'ont pour autant pas vu certaines notions (la concurrence par exemple) de la première formation.
TA
Tom A.
OVH
Très bonne formation, Julien connaît son sujet et répond à toutes les questions sans problèmes. :)
OB
Olivier B.
OVH
Très bonne formation enrichissante
EP
Etienne P.
OVH
Selon les préférences de chacun, cette formation peut-être perçue comme du "go intermédiaire" et/ou du "go avancé".
Formation plutôt complète sans être exhaustive (impossible d'être exhaustif en seulement 3 jours si l'on veut que les informations soient retenues).
MD
Marc D.
OVH
j'ai apprécié les points abordés, qui correspondent a des besoins réels.
DV
Duc V.
OVH
Programme très intéressant.
SL
Simon L.
OVH
Un très bon tour d'horizon de ce qui existe en go. L'alternance entre concepts, explications, exercices et optimisation rend cette formation très bien rythmée.
FAQ
Nos formations sont éligibles à plusieurs dispositifs de financement, selon votre situation. Human Coders est certifié Qualiopi, ce qui permet la prise en charge par des organismes comme Pôle emploi, votre OPCO ou encore le CPF (Compte Personnel de Formation) pour certaines formations.
Oui, la formation peut être proposée en présentiel ou en distanciel. Pour les inter-entreprises, les modalités (présentiel ou à distance) sont fonction de la session.
Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)
Les formations se déroulent toujours en petit groupe de 3 à 6 stagiaires. Nous souhaitons que les formateurs et formatrices puissent passer un maximum de temps avec chacun·e.
Voici une journée type :
9h : vous êtes accueillis par votre formateur·rice autour d'un petit déjeuner (croissants, pains au chocolat, jus de fruit, thé ou café...)
9h30 : la formation commence
12h30 : pause de midi. Le·a formateur·rice mangera avec vous. C'est l'occasion d'avoir des discussions plus informelles.
14h : reprise de la formation
18h : fin de la journée
8 raisons de participer à une formation Human Coders
Satisfaction client élevée : Un taux de statisfaction de 4,6/5 depuis 2012 (sur 1651 sessions réalisées). 99% des participants se disent satisfaits de nos formations
Approche pédagogique unique : Des formations en petit groupe, des formateurs passionnés et expérimentés, de véritables workshops... (Plus d'infos sur notre manifeste)
Catalogue de formations complet : 172 formations au catalogue, de quoi vous accompagner sur tout vos projets
Écosystème dynamique : Nous accompagnons les dev depuis 13 ans avec des initiatives comme Human Coders News, les Human Talks, le podcast ou encore notre serveur Discord
Financement facilité : Organisme certifié Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
Références clients prestigieuses : De nombreux clients qui nous font confiance depuis des années
Accompagnement sur mesure : Nous vous proposons un accompagnement personnalisé par nos consultants pour vous aider dans vos projets au-delà de la formation
Valorisation professionnelle : Remise d'un diplôme, d'une attestation et d'une certification, suivant les formations effectuées, que vous pourrez afficher sur vos CV et réseaux sociaux