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