Organisation des dépôts de code

Afin de permettre une gestion fine des versions de chaque microservice, les sources sont répartis en plusieurs dépôts Git :

zephir/
├── application
├── api-bridge
├── config-manager
├── datasource
├── documentation
├── identity-manager
├── messages-api
├── messages-web
├── python-zephir
├── saltmaster-manager
├── server-manager
├── servermodel-manager
├── web
└── zone-manager

Un dépôt pour l’application Zéphir

L’application Zéphir, dans son ensemble, est composée d’un certain nombre de conteneurs qui interragissent.

Pour gérer les microservices de façon cohérente, nous devons utiliser un mécanisme d’orchestration. Cette orchestration des conteneurs est définie dans un dépôt Git indépendant nommé application.

C’est ce dépôt qui détermine l’« état technique » de l’application Zéphir :

  • La branche develop référence les conteneurs de chaque microservice générés depuis leur branche develop
  • La branche master référence les conteneurs de chaque microservice générés depuis leur branche master

Chaque microservice est un dépôt Git indépendant

  • Les sources du microservice ;
  • Les outils de compilation et installation (Makefile, setup.py, …) ;
  • Le Dockerfile permet de générer le conteneur de production ;
  • Le Dockerfile.Test permet de génerer le conteneur utilisé pour les tests (installation d’outils dédiés aux tests) ;
  • Le Dockerfile.Dev permet de génerer le conteneur utilisé pour lors du développement.

Chaque bibliothèque est un dépôt Git indépendant

Les bibliothèques utilisées par différents microservices sont aussi dans des dépôts Git séparés afin de ne pas forcer la mise à niveau de tous les microservices lors d’un changement d’API de la bibliothèque :

  • python-zephir : la bibliothèque de contrôlleur générique en python
  • messages-api : définission des messages de l’API