GitLab est un service d’hébergement de code et de gestion de version, doublé d’une plateforme DevOps complète. Découvrez tout ce que vous devez savoir sur le sujet : fonctionnement, différences avec GitHub, cas d’usage pour la Data Science et le Machine Learning, formations…
Dans les domaines de la Data Science et du Machine Learning, et plus généralement du développement logiciel, les services d’hébergement de code et de gestion de version sont devenus incontournables. Parmi les plateformes les plus utilisées, on compte GitHub et GitLab.
Ces deux plateformes sont des « dépôts » Git basés sur le web. Le système de gestion de version Git permet de gérer les projets de développement de logiciel et tous les fichiers liés, au fil de leurs changements.
Ainsi, les changements apportés par chaque membre de l’équipe peuvent être gérés et supervisés. Les membres du projet peuvent ainsi coordonner leurs travaux et suivre la progression au fil du temps.
Les informations sont conservées sous forme de données dans un « dépôt » (repository). Il contient les objets et leurs références, et fait office d’emplacement centralisé où les développeurs peuvent stocker, partager, tester et collaborer sur des projets de développement.
Qu'est-ce que GitLab ?
Tout comme GitHub, GitLab est un gestionnaire de dépôt Git permettant à des équipes de collaborer sur du code informatique. Il est écrit en langage Ruby et Go, et fut créé en 2011 par Dmitriy Zaporozhets et Valery Sizov.
Il s’agit d’une plateforme entièrement open source. Elle est également gratuite pour les particuliers.
Plusieurs membres d’une équipe peuvent utiliser GitLab pour collaborer sur un même projet, proposer des changements, et éventuellement revenir en arrière en cas de problème imprévu.
Depuis le lancement de la version 10.0, GitLab est devenu plus qu’un simple entrepôt Git. Le service propose désormais une vision » Complete DevOps » unifiant le développement et les opérations en une seule expérience utilisateur.
Cette nouvelle version offre une meilleure intégration entre les outils de développement et les outils DevOps. Les utilisateurs peuvent effectuer toutes les tâches d’un projet, de la planification à la gestion du code source en passant par le monitoring et la sécurité.
Quels sont ses différents composants ?
GitLab repose sur plusieurs composants formant une solution complète pour le DevOps et la gestion de projet. Tout d’abord, les » projets » peuvent être créés pour héberger le code, collaborer dessus, ou identifier les problèmes.
Les fonctionnalités natives d’intégration continue et de livraison continue (Gitlab CI/CD) permettent de développer, de tester et de déployer une application de façon continuelle. Les projets peuvent être rendus publics, ou réservés à une audience interne ou privée.
Il est possible d’assembler plusieurs projets liés entre eux en un « groupe « . Par ailleurs, les « SubGroups » (sous-groupes) permettent de créer une hiérarchie avec un maximum de 20 niveaux de groupes.
Les fonctionnalités d’intégration continue (CI), nativement proposées par GitLab, permettent d’ajouter de petits morceaux de code à une application hébergée dans un Git. Pour chaque « push « , un pipeline de scripts peut être exécuté pour tester le code avant de valider les changements et de les apporter au projet.
La livraison et le déploiement continu (CD) permettent de mettre l’application en production à chaque push. Le CI/CD de GitLab est configuré par un fichier dénommé .gitlab-ci.yml placé à la racine de l’entrepôt Git, et les scripts dans ce fichier sont exécutés par le GitLab Runner.
GitLab vs GitHub : quelles différences ?
Il existe plusieurs différences majeures entre GitLab et GitHub. Ces différences concernent par exemple les systèmes d’authentification et de permissions d’accès, plus granulaires sur GitLab et donc mieux adaptés aux larges équipes travaillant sur des projets de grande ampleur.
En outre, GitLab se distingue par son système d’Intégration et de Livraison Continue. Ceci permet aux équipes de développement de gagner un temps précieux. Pour les utilisateurs exploitant déjà une Intégration Continue externe, la plateforme est compatible avec Jenkins, Codeship et bien d’autres.
Le système Auto DevOps permet par ailleurs de lancer automatiquement l’Intégration Continue ou la Livraison Continue sans intervention humaine. GitLab a ainsi une longueur d’avance sur GitHub dans le domaine du DevOps.
Toutefois, fin 2019, GitHub a lancé « Actions ». Ce nouveau système permet d’écrire des tâches pour automatiser et pour customiser le flux de travail de développement. En revanche, GitHub ne propose pas de plateforme de déploiement. Une application tierce comme Heroku est nécessaire.
La dernière différence concerne le prix des versions « entreprise » de ces deux services. La formule entreprise de GitHub est proposée à partir de 250 dollars par utilisateur et par an, tandis que GitLab commence à partir de 39 dollars par utilisateur par an.
En résumé, GitHub est de loin le dépôt Git le plus populaire avec plusieurs dizaines de millions d’utilisateurs contre seulement 100 00 pour GitLab. Néanmoins, GitLab accompagne les équipes tout au long du processus DevOps et se révèle plusabordable pour les entreprises.
GitLab pour la Data Science et le Machine Learning
Les équipes de Data Science et de Machine Learning peuvent apporter un précieux avantage à une entreprise, en dégageant des informations exploitables à partir des ensembles de données.
Toutefois, pour y parvenir, ces équipes ont d’importants besoins en termes de collaboration, de planification et de gestion de projet, de gestion de version des fichiers, modèles ou ensemble de données.
Les professionnels de la Data Science et du Machine Learning ont aussi besoin de pouvoir automatiser des étapes cruciales du flux de travail pour gagner en efficacité et éviter les erreurs manuelles. Ils doivent également fluidifier les processus de test et de validation de leurs travaux pour plus de vitesse et de répétabilité.
Enfin, la gestion de l’infrastructure doit être simplifiée au maximum (surtout lorsque cette infrastructure repose sur de multiples fournisseurs Cloud). GitLab répond à ces besoins, et c’est pourquoi cet outil est incontournable dans la Data Science et le Machine Learning.
Les équipes peuvent collaborer aisément entre les différents départements, gérer et planifier leurs travaux, garder une trace des changements apportés au fil du développement, de l’entraînement et du déploiement des modèles.
L’automatisation est rendue possible grâce au CI/CD de GitLab, permettant de valider facilement des modèles en testant divers éléments à chaque changement. La construction et le déploiement d’un modèle sont également automatisés. Enfin, un modèle peut être déployé et géré sur n’importe quel cloud.
Récemment, Iterative.ai a lancé un nouveau projet open source appelé CML (continuous machine learning). Ce projet permet d’adapter le CI de GitLab aux cas d’usage de Data Science et de Machine Learning. En guise d’exemple, on peut citer l’entraînement automatique des modèles, le testing automatique, ou le reporting avec visualisation de données.
Comment apprendre à l'utiliser ?
Pour apprendre à utiliser GitLab, vous pouvez vous tourner vers les formations DataScientest. Nos formations hybrides reposent sur une approche innovante de « Blended Learning« (hybride présentiel / distanciel) et vous permettent d’acquérir un diplôme certifié par l’Université de la Sorbonne.
GitLab est au programme de notre formation Data Engineer. Cette formation vous permet d’apprendre le métier d’ingénieur des données, et les différents outils et techniques utilisés dans cette profession.
Si vous êtes déjà Data Scientist et souhaitez acquérir des compétences de mises en production des modèles de Machine Learning, vous pouvez opter pour notre formation Machine Learning Engineer. Gitlab fait partie des outils au programme du module « tester et déployer » de cette formation.
Vous savez tout sur GitLab. Découvrez d’autres outils de Data Engineering et ML Engineering, comme la plateforme de conteneurs Docker et la solution d’automatisation de workflows Apache Airflow.