Skip to content

bnpinel/belem42

Repository files navigation

Bienvenue sur l'application Hackathon PackApp de l'équipe Belem42 !

Pourquoi Belem42 ?

Bah... c'est simple, le Belem est un des premiers portes conteneurs, bien avant Mesos, Swarm ou Kubernetes ! Et 42 car c'est la réponse à la question.

Le Belem

L'équipe

La Team

De gauche à droite :

  • Benjamin Pinel
  • Fabien Hippolyte
  • Jean-Louis Etienne
  • Julien Vinet

Toute l'équipe est issue du pôle Usine Logicielle LCL

Démarche

A fond, à fond, à fond, comme à l'Usine Logicielle ! 😬

Avant d'attaquer la partie déploiement sur AWS, nous avons commencé par créer des micro-services REST/json avec spring-boot pour séparer le front-end du back-end. Comme base de données conteneur ready, nous avons choisi mongoDB car nous l'utilisons au quotidien sur l'usine logicielle LCL, sous Docker, nous maitrisons cette technologie et elle donne de bons résultats. Dans un premier temps nous avons décidé de conserver le front jsp et nous l'avons modifié pour qu'il invoque les micro-services. Ensuite, nous avons attaqué la partie déploiement sur Kubernetes

Pour la construction des images docker embarquant le front et les API (sources Dockerfile disponibles dans chacun des repo), nous avons essayé de minimiser la taille en se basant sur des versions alpine des images proposées dans le repo "library" de dockerhub (java, tomcat).

De plus, les microservices développés essayent de respecter au mieux le pattern 12 factors :

  • Ne pas se reposer sur le FS
  • Stateless
  • Loging dans l'output
  • Versionning du code (code applicatif, Dockerfile, Descripteur de déploiement...)
  • Un début de process de release (standardisation du build, du déploiement...)

URL

Architecture Technique cible

Archi

Use cases couverts

  • ViewAdvisors : voir une liste de conseillers et leurs spécialités (none, savings, credits ou insurance)
  • ViewCustomer : voir les informations relatives à un client
  • EditCustomer : mettre à jour les informations relatives à un client
  • AddCustomer : ajouter un nouveau client au système
  • ViewCard : voir les informations relatives à une carte bleue
  • EditCard : mettre à jour les informations relatives à une carte bleue
  • AddCard : ajouter une nouvelle carte bleue au système
  • ViewPayment : voir des informations relatives à l'historique de paiement d’une carte bleue
  • AddPayment : ajouter des informations relatives à un paiement (nature du paiement)
  • Monitoring : monitorer chaque appels et leur durée
  • Logging : centraliser les logs de l'application

( ne pas mettre d'accents dans les champs texte ;) )

Ce que l'on aurait aimé faire avec plus de temps

  • Mettre en place des volumes persistants sur MongoDB
  • Mettre en oeuvre des replicaset MongoDB par back-end (pour l'instant un seul conteneur mongo)
  • Terminer le refacto du front en supprimant toutes les références JPA/Hibernate
  • Remplacer le front JSP/spring par un front statique (Angular)
  • Mettre en place de l'autoscalling
  • Centraliser les logs avec Graylog
  • Persister les dashboards grafana
  • Monitorer les fronts et les mongo
  • Automatiser la création des data minimum pour démarrer (card type et advisors)
  • Gérer la configuration applicative via des config et secrets k8s
  • Swagger des API
  • Sécuriser les backends et la configuration mongo (mitigé par l'impossibilité d'accès externe au namespace).
  • ...

Tooling

Local

build
mvn clean package
Launch
mvn tomcat7:run-war

k8s

Builder les containers

Chaque projet (front + backs ends) contient un fichier build.sh permettant de créer un container, et accessoirement de le tagger

./build.sh $version [tag]

Indiquer l'option tag permettra de générer l'image puis de la push dans la registry.

Deployer l'application

L'ensemble des fichiers de déploiement kubernetes se trouve dans le dossier "deployment" de chaque projet. Un fichier makefile, contenant les directives deploy et destroy permet de réaliser les commandes :

make deploy

Déploie la stack du projet dans le cluster kubernetes

make destroy

Détruit la stack du projet dans le cluster kubernetes

Premier déploiement
cd ./belem42/deployment/
make deploy-mongodb
make deploy-all
make deploy-monitoring

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages