Architecture logicielle de GitHub

GitHub est un service web d’hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de version Git.

Nous allons par la suite vous présenter l'architecture logicielle de GitHub.

Slides & Videos

Members

NameContribution
Alexandre Meunier- Recherche sur l'architecture
- Recherche sur le site de GitHub
Nathan Boulangeot- Recherche sur l'histoire et l'état de l'art
- Powerpoint
- Correction et reformulation des phrases

State of the Art

Business Aspect

Etat de l'art Business de GitHub

GitHub propose 4 types d’abonnements :

  • Version gratuite : Destinée aux utilisateurs individuels où ils peuvent avoir une gestion des versions, la collaboration en équipe et l’intégration continue, principalement.

 

  • Abonnement pro : Pour les développeurs professionnels et pour de petites équipes, qui offrent des fonctionnalités avancées par rapport à la version gratuite

 

  • Abonnement Team : Offre de meilleures fonctionnalités sur la gestion d’un projet et la collaboration pour les équipes.

 

  • Abonnement Entreprise : Pour les grandes organisations qui ont besoin d’avoir une bonne sécurité et une gestion avancée. Cela permet aussi aux entreprises d’auto-héberger leurs projets.

GitHub propose aussi le Pack étudiant GitHub qui propose une multitude de logiciels gratuits tel que Atom (devenu Pulsar) ou GitHub Copilot pour les étudiants.

Cependant, GitLab a des abonnements similaires mais moins chers, ce qui donne davantage de fonctionnalités à bas coût par rapport à GitHub.

Technical Aspect

Etat de l'art de GitHub

GitHub est une plateforme pour le développement de logiciels en intégrant un système de contrôle de version Git.

Il a beaucoup révolutionné le domaine de l’open source et la collaboration entre les développeurs. De plus, GitHub offre une multitude de fonctionnalités pour aider les développeurs à automatiser des tâches. 

Cependant, le système traditionnel de ce type de service avec simplement un gestionnaire de version amène les contributeurs à télécharger les sources du projet pour proposer leurs modifications à l’équipe du projet. Ainsi, Github propose, depuis 2008, le système du fork qui permet à une personne de devenir le propriétaire de la copie du projet original et peut faire remonter ses modifications de sa version. Cela est devenu viral pour le développement en intégration continue et la création de communauté autour des projets.

Pour continuer, son équipe de chercheurs de GitHub Security Lab permettent à la plateforme de mettre constamment à jour son système de sécurité comme l’ajout de fonctionnalités telles que l’analyse de sécurité de code et la gestion des vulnérabilités.

De plus, après le rachat de Microsoft, GitHub a pu intégrer l’éditeur de code Visual Studio Code et la plateforme de cloud computing Azure. Cela permet aux développeurs de travailler directement sur le site de GitHub avec un codespace et de stocker les données avec la technologie du cloud computing ce qui réduit le temps de travail et le coût de l’infrastructure. Il intègre aussi Dependabot qui automatise les tests et la mise à jour des dépendances obsolètes ou vulnérables.

Depuis l’arrivée de l’IA dans notre société, GitHub a pu intégrer Copilot depuis le 21 juin 2022 en tant que service. Copilot est donc une IA développée en collaboration avec OpenAI qui permet de compléter automatiquement du code pour aider le développeur.

Ainsi, GitHub offre aujourd’hui un gain de temps sur la création d’un projet pour laisser place à l’innovation, à la créativité et à la collaboration des développeurs.

Cependant, au niveau de ses concurrents, GitLab propose la définition d’autorisations et la restriction, la création de sous-groupes et un système de LDAP, ce qui permet la synchronisation des comptes utilisateurs comme ce que propose le GitLab de l’IUT.

Un autre concurrent notable est BitBucket. Créé par Atlassian, il a les mêmes fonctionnalités que GitHub mais a en plus l’intégration de l’outil Atlassian pour la gestion de projet.

De plus, on peut retrouver SourceForge qui utilise Subversion pour la gestion des versions. Cela permet de centraliser les versions du code source avec une utilisation plus simple et une meilleure gestion des fichiers binaires volumineux par rapport au Git. Cependant, il a un système antérieur ce qui le rend moins utilisé que GitHub ou GitLab

Project Description

Problem Definition
GitHub
Challenges & Motivation
Nous avons choisi ce logiciel car on l'utilise et on voulait présenter quelque chose d'original.
Real and Complete Usecases

Lien vers le google Docs :

https://docs.google.com/document/d/1d_jqWa9I_pb9Zx45q7ajoMNSssyRUkEXXuGv5xDmZJA/edit?usp=sharing

Qu’est-ce-que GitHub :

GitHub est un service web d’hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de version Git.

Ainsi, il assure le contrôle d’accès et des fonctionnalités destinées à la collaboration et à la sociabilité dans la plateforme. De plus, il permet aussi de faire le suivi des bugs, de pouvoir faire des demandes de fonctionnalités, de faire la gestion d’un projet dans une entreprise et un wiki pour chaque projet.

C’est donc le dépôt de projet le plus important au monde, utilisé comme dépôt public de projets libres ou dépôt privé d’entreprises.

Histoire :

Le 10 avril 2008, Chris Wanstrath, PJ Hyett et Tom Preston-Werner créent GitHub. Ce nom est composé du mot “Git”, un système de contrôle de version open-source, et le mot “Hub”, un réseau social construit autour du système Git et à une plateforme de correspondance. De plus, la mascotte Octocat de l’entreprise a été inspirée des mangas. Elle représente un mélange entre un chat et un poulpe.

Le 5 juillet 2009, c’est plus de 100 000 utilisateurs inscrits sur le site, le 21 septembre 2011, plus d’un million d’utilisateurs. Le 4 juin 2018, la plateforme a eu un gros changement car GitHub a été acquis par Microsoft, lorsqu’il y avait également une multiplication des plateformes de gestion de développement de logiciels comme GitLab. Le 25 janvier 2023, la plateforme atteint plus de 100 millions d’utilisateurs.

Enfin, les plus gros contributeurs sont Microsoft, Google, Jetbrains, Apple, Facebook, Red Hat / IBM et Pivotal.

Technical Description

Architecture :

Comme GitHub est une plateforme très complexe avec beaucoup de fonctionnalités, nous n’avons pas pu précisément trouver son architecture. Nous avons donc déduit une architecture à 5 couches :

 

  1. Présentation

 

La couche présentation représente le frontend du site qui permet à l’utilisateur d’accéder et d’utiliser GitHub avec une interface intuitive sur tous les appareils et a une esthétique propre à elle.

 

2 Fonctionnalités

Cette deuxième couche va intégrer les multiples fonctionnalités que propose la plateforme. En effet, cette partie va appeler le gestionnaire de versions et de dépôts, ce qui permet de gérer les différentes versions d’un projet, mais aussi le gestionnaire des relations, des bugs, des demandes de changement (par exemple avec le système de Pull Request) ou encore l’appel d’API pour l’automatisation de tâches.

 

De plus, GitHub utilise Nginx qui sert de point d’entrée pour les requêtes entrantes des utilisateurs. Cela permet d’équilibrer la charge sur les serveurs backend, d’optimiser les performances du site, de sécuriser les connexions entre les utilisateurs et les serveurs de GitHub, de gérer efficacement les requêtes HTTP et de traiter un grand nombre de connexions simultanées.

 

Enfin, la plateforme utilise principalement Graphql, un type d‘API, qui permet de déployer les réponses à des demandes précises, un typage fort pour des données plus strictes et permet d’améliorer les performances globales.

 

3 Métier

 

La couche métier permet de référer les règles et processus qui régissent les activités de GitHub :

 

  • Au niveau de la sécurité des projets : 
    • GitHub intègre GitHub Security Lab, une équipe de chercheurs et de développeurs pour sécuriser l’open source à grande échelle, cela permet d’instaurer une confiance très importante avec la communauté
    • L’équipe ingénierie de la sécurité des produits assure une plate-forme et des produits sécurisés. Elle permet l’analyse automatisée du code, la modélisation approfondie des menaces, l’examen et test du code de sécurité de GitHub. Donc cette équipe prévient les vulnérabilités le plus tôt dans le cycle de vie du développement.

 

  • Au niveau des normes :
    • Respecte le RGPD
    • L’abonnement GitHub Enterprise Cloud propose pour les entreprises un contrôle et une sécurité accrue des données en intégrant les normes :
      • Normes de AICPA (American Institute of Certified Public Accountants), organisation agréés aux états-Unis qui développe des normes d’audit et de sécurité pour les organisation, 

GitHub a ainsi le rapport Soc 2 type 2 qui atteste de la robustesse des contrôles de sécurité internes. Il évalue la conception et l’efficacité opérationnelle des contrôles relatifs à la sécurité, à la disponibilité, à la confidentialité, à l’intégrité des traitements et à la confidentialité des données personnelles des utilisateurs.

 

4 Noyau

 

Cette couche est responsable de l’accès sécurisé aux données stockées dans les bases de données et les systèmes de stockage.

 

Le système de GitHub utilise, selon nos recherches, l’architecture microservice, selon 3 critères :

  • La modularité, qui permet la communication entre les services par une API. Il y a trois avantages à cela : Le découplage qui rend plus facile à développer, à tester et à déployer les microservices; L’abstraction qui donne un couplage faible; Et la surveillance, les services peuvent être surveillés pour identifier des problèmes potentiels en lien avec la performance.
  • L’évolutivité qui permet à GitHub de faire évoluer ses services indépendamment les uns des autres. Donc il peut ajouter des fonctionnalités sans affecter l’ensemble du système, ce qui est très important pour ce type de plateforme très complexe.
  • La flexibilité, la plateforme peut s’adapter aux nouvelles technologies et aux besoins changeants pour éviter d’avoir à remodeler l’architecture à chaque fois.

Cette couche va aussi s’occuper de la détection et la vulnérabilité de sécurité dans le code, mais aussi va permettre l’accès aux bases de données, aux routage, aux serveurs backend, et aux outils de journalisation

 

5 Base de données

 

Cette dernière couche contient les bases de données relationnelles comme MySQL, la sécurisation des données et une infrastructure décrite ci-dessous:

  • Le référentiels du code, les problèmes et les wiki sont stockées de manière redondante pour garantir la durabilité et la disponibilité
  • Les données personnelles sont stockées de manière sécurisée et cryptée
  • Peut utiliser le Git Large File Storage contenant les fichiers volumineux, tels que les vidéos et les images. Cela permet de réduire la taille des référentiels et  d’améliorer les performances

Cette couche utilise aussi le cloud computing pour stocker une partie de ses données avec Microsoft Azure.

Hardware

Materials
ImageNamePart NumberPriceCountLink
GitHub010🛒
Schematic

Software

External Services

GitHub

GitHub