28/06/2023 Tech
Pourquoi utiliser Go dans ma plateforme digitale ?
Lancé par Google en 2009, Go (ou Golang) connaît depuis une popularité grandissante auprès des communautés de développeurs. Sa gamme complète d'outils, sa rapidité et sa fiabilité en font un choix prometteur pour la construction de plateformes digitales performantes et évolutives. Toutefois, en tant que langage relativement jeune, il est compréhensible que les entreprises hésitent encore à l'adopter sans avoir pris confiance en sa maturité. Alors, pourquoi (ou non) utiliser Go pour construire votre prochaine plateforme digitale ? Découvrons ensemble dans cet article.
À propos de Go
Go (généralement appelé Golang) est un langage de programmation open-source créé par Google en 2009. Sa conception visait à offrir une alternative simple et performante aux langages de programmation existants tels que C++ et Java. Go se caractérise par une syntaxe concise et facile à lire, une gestion efficace de la mémoire et une compilation rapide. Il a été conçu pour être simple à apprendre, facile à utiliser et efficace en termes de performances. La question qui se pose alors est de savoir si le Go peut être utilisé dans un projet de création ou de modification de plateforme digitale.
Est-ce qu’il est suffisamment facile à apprendre et à utiliser pour continuer à se propager dans les stacks techniques des entreprises ? Golang est-il un langage pertinent pour créer une plateforme digitale ?
Les apports de Go pour une plateforme digitale
Go est un langage en croissance rapide, avec une communauté active et un écosystème en développement constant. Il y a une grande quantité de bibliothèques et d’outils disponibles pour les développeurs, ce qui facilite la création d’applications.
Cet aspect communautaire très important facilite l’apprentissage du langage et sa prise en main. De plus, les retours de la communauté sont souvent pris en compte dans les mises à jour du langage, ce qui en fait un langage toujours d’actualité et en accord avec sa communauté. Pour les utilisateurs venant du langage tel que le C, Java ou Python, Go est un langage facile à apprendre grâce notamment à la syntaxe simple et concise du langage.
Google, en créant Golang, a eu pour idée de créer un langage qui se combine parfaitement à une infrastructure cloud comme Google Cloud Platform peut proposer. Dans ce type d’architecture cloud ou encore service-to-service, Golang est parfait pour effectuer une tâche rapide simple et sans prendre beaucoup de ressources.
Ainsi, pour des applications à haute performance et à grande échelle, avec une gestion de la concurrence et de la répartition du travail des différents services ainsi que la performance des micros-services, Golang permet de faire grandir sa plateforme digitale sur un marché qui a tendance à grandir en termes de nombre requêtes utilisateur ou même de complexité algorithmique.
De nombreuses entreprises de premier plan utilisent Go pour développer des logiciels de backend et d’autres types d’applications.
Il est notamment utilisé par de nombreux produits et services Google, dont Google Search, Google Maps et Google App Engine.
Netflix aussi utilise Go pour développer ses services de diffusion en continu et pour gérer ses infrastructures de données.
Un autre exemple est Docker : l’outil de conteneurisation, très populaire, a été écrit en grande partie en Go.
C’est aussi le cas de Dropbox qui utilise Go pour développer certaines de ses applications de backend.
SoundCloud, la plateforme de partage de musique en streaming, utilise Go pour développer ses services de backend.
Les exemples ne manquent pas avec d’autres entreprises pouvant être citées comme Uber, The New York Times et Twitch. Ceci montre à quel point le langage Go est pluridisciplinaire, ainsi n’importe quel type de plateforme digitale peut être créé grâce à Golang, que ce soit sur le cloud, sur un CD ou encore simplement sur Github.
Du côté d’ekino, un projet en Golang est au cœur de l’entreprise. Ce projet s’appelle Staff et a pour but de gérer toutes les habilitations des collaborateurs. Ainsi, Staff fait le lien entre toutes les plateformes SaaS au sein d’ekino. Le projet possède une architecture dirigée par les événements, ce qui signifie que lorsqu’une action spécifique est effectuée, comme la mise à jour d’un utilisateur, tous les autres services ekino sont synchronisés sans avoir à faire d’opération manuelle.
Golang est donc un choix naturel au vu de la multiplication des plateformes digitales qui sont sur le cloud actuellement.
Quels challenges devons-nous anticiper en utilisant Go pour la création de ma plateforme digitale ?
Chaque choix technologique implique des arbitrages. Ainsi, et bien que Go présente de nombreux avantages pour les entreprises, il reste des défis à relever lors de l’adoption de cette technologie.
Il peut notamment être difficile de trouver des développeurs expérimentés dans ce domaine. Les entreprises peuvent alors avoir besoin de former leurs employés existants ou de recruter de nouveaux développeurs pour adopter Go. Une solution pour remédier à cela est par exemple de faire appel à une expertise externe afin de sous-traiter une partie des développements tout en faisant monter en compétence les développeurs de l’équipe.
À première vue, on pourrait juger d’un manque de bibliothèques de développement et d’outils disponibles pour les développeurs go. Mais l’évolution rapide du langage avec notamment les dernières versions go1.18 et go1.20 a apporté ce dont les développeurs avaient besoin, ce qui permet de répondre à cette problématique (par exemple la gestion de la mémoire est désormais meilleure que dans les premières versions, et l’utilisation des méthodes génériques dans le code est dorénavant possible).
Adopter Go peut entraîner un changement de la culture de développement dans une entreprise. Il peut être nécessaire de changer les processus existants, les outils et les pratiques pour s’adapter au style de développement de Go. Cela dépend de l’état actuel de la culture d’entreprise, mais Golang a tendance à mieux être appréhendé par les équipes avec une culture d’entreprise agile et qui pratique l’amélioration continue. En effet, Go est un langage open source, il vit donc de sa communauté et on en tirera au mieux parti en ayant une vision assez globale de ce que permet ce langage et de ce qu’il apportera à l’entreprise.
Il est important de noter que ces défis ne sont pas insurmontables, mais ils doivent être pris en compte lors de la décision d’adopter Go. Les entreprises doivent évaluer leurs propres besoins et ressources pour déterminer si Go est une technologie adaptée pour eux et comment ils peuvent surmonter ces défis.
De plus, Golang est un langage qui attire de plus en plus et qui a vocation à s’installer de manière pérenne dans le paysage technologique des entreprises, ceci est notamment visible sur les sondages StackOverFlow :
La montée en flèche de la popularité de Go prouve que c’est un choix très intéressant pour les entreprises qui cherchent à construire des systèmes à haute performance et à grande échelle, comme les services web, les systèmes de miroir de données ou encore les systèmes de traitement de données. Cependant, là où il reste le roi est pour la conception d’une plateforme numérique sur le cloud. Il peut être utilisé à sa pleine puissance que ce soit en termes de performance, d’algorithmie complexe ou encore en termes de devOps.
Il est à noter également que les développeurs qui se mettent à Go se retrouvent à vouloir continuer à l’utiliser dans d’autres contextes (pour faire de la veille technologique par exemple), et ceux ne travaillant pas avec commencent à se former par eux-mêmes.
Ainsi, adopter Go pour effectuer une plateforme numérique peut apporter de nouveaux défis de recrutement, mais aussi des opportunités. Il peut être difficile de trouver des personnes déjà expérimentées en Go mais ceux qui s’y intéressent ont soif d’apprendre et veulent continuer à utiliser ce langage. Au vu du nombre de personnes voulant utiliser Go au travail, cela est également un bon élément d’attractivité pour recruter de nouveaux profils voulant travailler avec un langage actuel.
Quels impacts économiques sont liés à l’utilisation de Go ?
En adoptant Go pour le développement de leurs applications, les entreprises peuvent améliorer la productivité de leurs équipes de développement et obtenir des performances supérieures. Cela peut ainsi réduire les coûts de production et d’hébergement, et ainsi avoir un impact significatif sur la rentabilité de l’entreprise et contribuer à sa croissance.
Go est particulièrement adapté aux applications à haute concurrence et à grande échelle. Il inclut des outils qui permettent de gérer efficacement le nombre de demandes de l’application et de répartir le travail sur plusieurs processeurs par exemple. Sur un marché où les plateformes digitales ont tendance à absorber de grands volumes d’appels et de données, Golang s’en sort très bien pour réaliser ces tâches.
Pour reprendre l’exemple d’une grande entreprise, Netflix utilise Go pour développer plusieurs de ses services de backend, notamment ses services de recommandation et ses services de gestion des abonnements. Go est particulièrement bien adapté à ces tâches car il offre de bonnes performances et une facile scalabilité, ce qui est crucial pour une entreprise comme Netflix qui gère des millions d’abonnés et de requêtes de lecture en continu. Netflix utilise Go pour développer un service de recommandation appelé “Performance and Capacity Metrics”, qui collecte des données sur les performances et la capacité de ses différents systèmes et services. Ce service utilise Go pour traiter et analyser ces données en temps réel, et pour produire des rapports et des alertes en cas de problèmes de performances.
Récemment, Netflix a lancé le projet Moneta, qui a permis au projet Rend Proxy de voir le jour. Rend Proxy est un projet écrit en Golang qui a pour but de faire la mise en cache de données (la copie de fichier dans un emplacement de stockage temporaire afin de pouvoir y accéder plus rapidement). Rend Proxy repose sur l’utilisation des goroutines pour gérer la concurrence. En effet, Rend proxy doit gérer des dizaines de milliers de connexions simultanées. L’ensemble des outils de tests et de monitoring permet d’assurer la qualité et la robustesse du projet. L’architecture du projet est modulaire, ce qui permet une grande flexibilité dans les changements à apporter au projet, qu’il s’agisse de maintenance ou de nouvelles fonctionnalités.
Le sujet Rend Proxy est un sujet open source disponible sur le github de Netflix.
Alors, Go ou no Go ?
Golang est un langage assez récent dans la stack technique des grandes entreprises mais il reste un langage très répandu dans les start-ups. Ainsi, il va y avoir de nombreux profils de développeurs Golang qui ont soif de créer et d’apprendre sur le marché ou en recherche de stabilité dans leur emploi. La pluridisciplinarité du langage permet ainsi aux développeurs de pouvoir travailler dans n’importe quel domaine. C’est pourquoi adopter Go et la culture Go en entreprise est un nouveau défi afin de pouvoir réaliser de manière pérenne sa plateforme digitale d’aujourd’hui ou de demain.
Le langage a déjà été validé par de nombreuses entreprises quelle que soit leur taille et cela est amené à évoluer et à grandir. Alors est-ce le bon moment de franchir le pas et d’adopter Go ?
Au vu des étapes de création d’une plateforme digitale, ce langage est un atout car il permet de créer, déployer et maintenir la plateforme digitale de bout en bout. Tout cela en permettant à chacun de comprendre, d’apprendre et d’évoluer. C’est un langage facile à apprendre (d’où son utilisation en start up) mais compliqué à maîtriser (d’où son adoption lente dans les grandes entreprises). Ainsi, vaut-il mieux laisser le train passer ? Ou aurez-vous le courage de prendre un billet pour partir à l’aventure de Golang ?
Contact
Vous souhaitez en savoir plus sur Golang ? Vous avez un projet que vous aimeriez mener sur Go ? Ou bien vous souhaitez tout simplement discuter ?
Contactez-nousLire plus d’articles
-
7 Minutes read
Passer à une Progressive Web App : quels avantages et limites ?
Lire la suite -
7 Minutes read
DevSecOps : les garanties sécurité dans l’industrialisation logicielle
Lire la suite