Création d’un nouveau microservice¶
Points à évaluer avant de créer son microservice¶
- À quel niveau s’intégrera mon microservice dans l’architecture de l’application Zéphir ?
- Quelles seront les dépendances fonctionnelles de mon microservice ?
- Mon microservice sera t-il amené à fonctionner en mode multi-instances ?
Créer l’arborescence du microservice¶
Un script d’aide a été créé afin de faciliter la mise en place de nouveaux microservices:
./script/new-service <nom_du_service>
Si aucun service utilisant ce nom n’existe, le répertoire services/<nom_microservice>
sera créé avec son Dockerfile.
Le fichier de l’ordonnanceur consul¶
Dans le répertoire cible, un fichier containerpilot.json5
est créé.
Ce fichier est utilisé par Consul
Partage de fichiers entre les microservices¶
Certains microservices seront amenés à utiliser des fichiers communs (par exemple des scripts d’attente de disponibilité d’autres services). Le répertoire services/common
est dédié à accueillir ces fichiers.
L’utilisation de ce répertoire nécessite la modification du fichier docker-compose.dev.yml
et la modification des chemins dans le fichier Dockerfile
. Voir la section services.api-bridge.build
du fichier docker-compose.dev.yml
pour un exemple.
Gestion des erreurs dans un microservice (Python)¶
Les erreurs prévues sont à documenter dans la fiche de chaque message (Exemple : exec.salt)
La librairie Autobahn-python permet de remonter les erreurs au format Wamp. On peut soit
importer un type d’erreur prédéfini dans la librairie :
from autobahn.wamp.exception import ApplicationError .... raise ApplicationError(u"my.uri", arg1, arg2, .. , kwarg1=value1, kwarg2=value2, ...)soit créer une exception personnalisée et la mapper dans autobahn:
@wamp.error(u"my.uri2") # détermine l'uri de l'exception class AppError1(Exception): """ An application specific exception that is decorated with a WAMP URI, and hence can be automapped by Autobahn. """ ... # défini et mappe automatiquement l'exception self.define(AppError1) ... raise AppError1(...)Dans les deux cas, le fait de lever une de ces exceptions renverra automatiquement un message d’erreur au format Wamp.