Architecture MicroServives Principes et Partiques: Ressources  

microservices
nodejs
docker
kubernetes

đŸŽ„ Mise en place l'environnement du workshop

Les projets

Les Diagrammes :

Inspiré de Stephen Grider Microservice with Node JS and React

  • Les schĂ©mas utilisĂ©es dans ce workshop sont disponible sous forme zip forme de fichier zip. TĂ©lĂ©charger ici
  • TĂ©lĂ©chargez le fichier et dĂ©compressez-le quelque part sur votre ordinateur.

Outils

  • Systeme d'exploitation linux ubuntu 20.04
  • Mac OS and Windos
  • Editeur de code: VS Code ou autres
  • rabbitmq
  • nodejs
  • Extension VS Code: Rest client
  • Kubernetes
  • Mongo DB
  • Postgresql

Code Snippets

Vous pouverez ici tout les petits bout de code de l'application

1. Config.js
const dotenv = require('dotenv'); dotenv.config() const config = { INVENTORY_SERVICE: process.env.INVENTORY_SERVICE_URL, PAYEMENT_SERVICE: process.env.PAYEMENT_SERVICE_URL, } module.exports = config; export default App;
2. Create Order
router.post('/api/order', async (req, res) => { try { // Step1: Check Inventory const { productId, quantity, id, amount, userId, orderDate, status } = req.body const responseInventory = await axios.get(`${config.INVENTORY_SERVICE}/api/inventory/${productId}`); if (responseInventory.data.availableQuantity < quantity) { return res.status(400).send({ message: "Insufficient stock" }); } // // step2: Process payment // const responsePayement = await axios.get(`${config.PAYEMENT_SERVICE}/api/payment`, { // "orderId": id, // "amount": amount, // "userId": userId // }); // if (!responsePayement.status == '201') { // return res.status(402).send({ message: "Echec du payement " }); // } // step3: Create Order const order = new Order(req.body); await order.save(); //step4: Update Inventory await axios.put(`${config.INVENTORY_SERVICE}/api/inventory/${productId}`, { quantity: -quantity }); res.status(201).send(order); } catch (error) { console.log(error) res.status(500).error } });
3. env.file
PRODUCT_SERVICE_URL=http://localhost:3000 INVENTORY_SERVICE_URL=http://localhost:3002 PAYEMENT_SERVICE_URL=http://localhost:3003 ORDER_SERVICE_URL=http://localhost:3003 PAYEMENT_SERVICE_URL=http://localhost:3003