Skip to content

gperreymond/strapi-coding-challenge

Repository files navigation

Strapi Coding Challenge

Coverage Status CircleCI

Le projet est "configuration driven", tout part de la définition des services et des actions, aussi appelés "microservices".

moleculer services

Architecture globale

L'architecture de type "hexagonale", ou port/adapter, se base sur :

Moleculer, brique de base, qui est un framework orienté microservices, avec du service discovery, du load balancing applicatif, voir même du circuit breaker, des métriques automatiques, etc.

HapiJS, pour le gateway, son orientation configuration driven et son orientation API en font un atout de choc sur ce type de projet.

Apollo Server, vient finir la dernière brique de cette architecture.

Dans le projet, le serveur graphql et moleculer sont ensemble ; Il est bien entendu préconisé d'avoir les services moleculer dans une infrastructure scalable d'un coté et le serveur graphql d'un autre.

Bootstrap applicatif

Installation des dépendances :

yarn

Bootstrap ops / infra

Le dossier infrastructure contient un Bootstrap prod ready ; En développement on utilisera docker swarm comme orchestrateur.

En premier lieu, assurez vous d'avoir docker swarm de disponible en mode master

docker swarm init

Une fois cela vérifié, lancez la stack en local en effectuant :

yarn bootstrap:start

Pour stopper la stack en local, une fois la review effectuée, faire :

yarn bootstrap:stop

Mais revenons à l'installation, il faut attendre que tout soit bien démarré, puis quand cela est fait, passez à la migration des data :

yarn knex:all

Jouer les tests

Le résultat du coverage sera dans le dossier coverage

yarn test

Lancer en local

Il est temps de lancer le projet :

yarn start

A ce stade, deux servers http sont disponibles :

Comme vous le voyez, une auto-documentation est générée par la configuration, voir swagger pour plus d'information.

Allez plus loin

Un service important ici est le services/Metrics.js, comme on peut le voir nous pouvons brancher des exporters vers logstash (pour kibana), où même des évènements.

On peut également étendre l'architecture pour faire un véritable CQRS / Eventsourcing assez facilement.

La dockerisation est quant à elle facile, pas besoin de montrer quelque chose dessus.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published