Formation Go Avancé

(89)*

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é.

Formation Go Avancé

Description

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

Ils témoignent

Axel BELLEC Synapse Medicine 27.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.

Les objectifs

  • Approfondir ses connaissances du langage Go et de son écosystème
  • Assimiler les bonnes pratiques de qualité logicielle en Go
  • Maîtriser les patterns de concurrence utiles

Pré-requis

  • Avoir une bonne connaissance des fondamentaux du langage Go et de son écosystème
  • 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

Discussion ouverte

Télécharger le programme

Formations associées

Formateur

Julien CRETEL

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/5 Basé sur 89 avis*

Axel B.

Synapse Medicine 27.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.

Georges-Antoine R.

Deezer 25.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.

Nicolas F.

AKENEO 13.12.2023

Top !

Pierre F.

Dassault Systèmes 09.10.2023

Super formateur, tres pedagogue et patient Super exos Je recommande, mais a faire en presentiel ...

Nathan N.

Fondation b<>com 04.09.2023

Cette formation en Go est excellente pour approfondir les connaissances, acquérir de bonnes pratiques et éviter les pièges courants.

Béatrice B.

Fondation b<>com 04.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.

Geoffrey C.

Positive Thinking Company 03.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.

Anthony T.

CGI France 03.07.2023

Formation très intéressante, formateur compétent qui sait s'adapter aux niveaux et besoins des participants

Christophe L.

Christophe Lecroq 03.07.2023

Excellente formation avec un formateur aussi compétent que sympathique.

Jérémy D.

OVH 05.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 !

Benjamin Z.

OVH 05.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 !

Nicolas F.

OVH 22.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.

Kylian B.

OVH 22.05.2023

Une formation vraiment complète et très intéressante

Marc S.

OVH 22.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é).

Adrien G.

OVH 17.04.2023

Les formations Human Coders sont toujours très enrichissantes. Merci Julien Cretel ! Toujours au top du top !

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.

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.

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!

Stanislaw Z.

OVH

In summary it was preatty good training. Full of good materials. I really appreciate trainer's knowledge and experience.

Raoul N.

OVH 06.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.

Patricio T.

OVH 07.04.2022

Julien est un super coach. Les presentations étaient claires et très did

Suliac L.

OVH 07.04.2022

Vachement cool

Simon D.

OVH 04.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.

Tom A.

OVH

Très bonne formation, Julien connaît son sujet et répond à toutes les questions sans problèmes. :)

Olivier B.

OVH

Très bonne formation enrichissante

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).

Marc D.

OVH

j'ai apprécié les points abordés, qui correspondent a des besoins réels.

Duc V.

OVH

Programme très intéressant.

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.

Pour en savoir plus, veuillez consulter notre page : Comment financer votre formation ?

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

* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012