{"id":83194,"date":"2024-11-10T03:15:37","date_gmt":"2024-11-09T23:45:37","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/microservices-made-simple-an-introductory-guide-for-developers-59fj\/"},"modified":"2024-11-10T03:15:37","modified_gmt":"2024-11-09T23:45:37","slug":"microservices-made-simple-an-introductory-guide-for-developers-59fj","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/microservices-made-simple-an-introductory-guide-for-developers-59fj\/","title":{"rendered":"Microservices Made Simple: \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0645\u0642\u062f\u0645\u0627\u062a\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0645\u0642\u062f\u0645\u0647\u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0648\u0634\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u0628\u0632\u0631\u06af \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0648 \u0645\u0633\u062a\u0642\u0644 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0645\u0627 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u060c \u0646\u062d\u0648\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0622\u0646\u0647\u0627 \u0628\u0627 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0686\u06cc\u0633\u062a\u061f\u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u0644\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0648\u0638\u06cc\u0641\u0647 \u06cc\u06a9 \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631 \u0648\u0627\u062d\u062f \u0645\u0627\u0646\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u0631\u062f\u0627\u062e\u062a \u06cc\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u0646\u062f. \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc HTTP \u06cc\u0627 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0639\u0645\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0645\u0648\u0646\u0648\u0644\u06cc\u062a \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u062f\u0631 \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u060c \u0647\u0645\u0647 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062d\u06a9\u0645 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0647\u0645\u0631\u0627\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06cc\u06a9\u0633\u0627\u0646\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u0645\u0642\u06cc\u0627\u0633 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0631\u0634\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u062e\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0632 \u0633\u0648\u06cc \u062f\u06cc\u06af\u0631\u060c \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u062a\u0627 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u0642\u06cc\u0627\u0633\u060c \u06af\u0633\u062a\u0631\u0634 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u06a9\u062f: \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 1: Microservices \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0648 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0627\u0633\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c UserService \u0648 OrderService\u060c \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTP \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>1.1 \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0631\u0628\u0631<\/p>\n<p>\u0631\u0627 UserService \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js \u0648 Express \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>user-service\/index.js<\/p>\n<p>const express = require(&#8216;express&#8217;);<br \/>\nconst app = express();<br \/>\nconst PORT = 3001;<\/p>\n<p>app.use(express.json());<\/p>\n<p>const users = [<br \/>\n  { id: 1, name: &#8216;Alice&#8217; },<br \/>\n  { id: 2, name: &#8216;Bob&#8217; }<br \/>\n];<\/p>\n<p>\/\/ Endpoint to retrieve user info<br \/>\napp.get(&#8216;\/users\/:id&#8217;, (req, res) =&gt; {<br \/>\n  const user = users.find(u =&gt; u.id == req.params.id);<br \/>\n  user ? res.json(user) : res.status(404).send(&#8216;User not found&#8217;);<br \/>\n});<\/p>\n<p>app.listen(PORT, () =&gt; {<br \/>\n  console.log(`UserService running on http:\/\/localhost:${PORT}`);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>1.2 \u062e\u062f\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634<\/p>\n<p>\u0631\u0627 OrderService \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u062a\u0645\u0627\u0633 \u0645\u06cc \u06af\u06cc\u0631\u062f UserService \u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc HTTP \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 axios \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/p>\n<p>order-service\/index.js<\/p>\n<p>const express = require(&#8216;express&#8217;);<br \/>\nconst axios = require(&#8216;axios&#8217;);<br \/>\nconst app = express();<br \/>\nconst PORT = 3002;<\/p>\n<p>app.use(express.json());<\/p>\n<p>const orders = [<br \/>\n  { id: 1, userId: 1, product: &#8216;Laptop&#8217; },<br \/>\n  { id: 2, userId: 2, product: &#8216;Phone&#8217; }<br \/>\n];<\/p>\n<p>\/\/ Endpoint to retrieve order info with user details<br \/>\napp.get(&#8216;\/orders\/:id&#8217;, async (req, res) =&gt; {<br \/>\n  const order = orders.find(o =&gt; o.id == req.params.id);<br \/>\n  if (order) {<br \/>\n    try {<br \/>\n      const userResponse = await axios.get(`http:\/\/localhost:3001\/users\/${order.userId}`);<br \/>\n      res.json({ &#8230;order, user: userResponse.data });<br \/>\n    } catch (error) {<br \/>\n      res.status(500).send(&#8216;Error fetching user details&#8217;);<br \/>\n    }<br \/>\n  } else {<br \/>\n    res.status(404).send(&#8216;Order not found&#8217;);<br \/>\n  }<br \/>\n});<\/p>\n<p>app.listen(PORT, () =&gt; {<br \/>\n  console.log(`OrderService running on http:\/\/localhost:${PORT}`);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0631\u062d\u0644\u0647 2: \u0627\u062c\u0631\u0627\u06cc Microservices\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062e\u062f\u0645\u0627\u062a:<\/p>\n<p>\u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627: npm \u0646\u0635\u0628 \u0627\u06a9\u0633\u067e\u0631\u0633 express<br \/>\nUserService \u0648 OrderService \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>node user-service\/index.js<br \/>\nnode order-service\/index.js<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>&#8211; \u062a\u0633\u062a \u062e\u062f\u0645\u0627\u062a:<\/p>\n<p>\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u062e\u062f\u0645\u0627\u062a<\/p>\n<p>\u062f\u0631 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u060c API Gateway \u06cc\u0627 Service Discovery (\u0645\u0627\u0646\u0646\u062f Consul \u06cc\u0627 Eureka) \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u062f\u0631\u0648\u0627\u0632\u0647 API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Express \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0628\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>api-gateway\/index.js<\/p>\n<p>const express = require(&#8216;express&#8217;);<br \/>\nconst axios = require(&#8216;axios&#8217;);<br \/>\nconst app = express();<br \/>\nconst PORT = 3000;<\/p>\n<p>app.use(express.json());<\/p>\n<p>app.get(&#8216;\/api\/orders\/:id&#8217;, async (req, res) =&gt; {<br \/>\n  try {<br \/>\n    const orderResponse = await axios.get(`http:\/\/localhost:3002\/orders\/${req.params.id}`);<br \/>\n    res.json(orderResponse.data);<br \/>\n  } catch (error) {<br \/>\n    res.status(500).send(&#8216;Error fetching order details&#8217;);<br \/>\n  }<br \/>\n});<\/p>\n<p>app.listen(PORT, () =&gt; {<br \/>\n  console.log(`API Gateway running on http:\/\/localhost:${PORT}`);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0631\u06af\u0627\u0647 \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634 \u0628\u0627 \u0645\u0634\u062e\u0635\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n<p>\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u0642\u06cc\u0627\u0633 \u0628\u0646\u062f\u06cc \u0645\u0633\u062a\u0642\u0644 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 OrderService \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0648 Kubernetes \u0628\u0686\u0631\u062e\u0627\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u0645\u0648\u0646\u0647 Dockerfile \u0628\u0631\u0627\u06cc OrderService<\/p>\n<p># OrderService Dockerfile<br \/>\nFROM node:14<br \/>\nWORKDIR \/app<br \/>\nCOPY . .<br \/>\nRUN npm install<br \/>\nCMD [&#8220;node&#8221;, &#8220;index.js&#8221;]\nEXPOSE 3002<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 Dockerized\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc Kubernetes \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 Autoscaler Horizontal Pod Kubernetes \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u062f\u0645\u0627\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0642\u0627\u0636\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc\u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0628\u0646\u062f\u06cc \u062e\u062f\u0645\u0627\u062a \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f. \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0633\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u06a9\u0631\u0627\u0631\u06cc \u062a\u06a9\u0627\u0645\u0644 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Docker\u060c Kubernetes \u0648 \u062f\u0631\u0648\u0627\u0632\u0647\u200c\u0647\u0627\u06cc API \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u062f\u0645\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9! \ud83d\ude80<\/p>\n<p>\u0628\u0627 \u0645\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0627\u06af\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f \u06cc\u0627 \u0633\u0624\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u0645\u0646 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u06cc\u062f! \u0645\u0646 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645 \u0646\u0638\u0631\u0627\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0634\u0646\u0648\u0645.<\/p>\n<p>GitHub: Tajudeen-boss<br \/>\n\u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646: \u0639\u0628\u062f\u0627\u0644\u0644\u0647 \u062a\u0627\u062c\u0648\u062f\u06cc\u0646<br \/>\n\u062a\u0648\u06cc\u06cc\u062a\u0631: @DevAdullah<\/p>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646! \ud83d\ude0a<\/p>\n<div data-article-id=\"2090938\" id=\"article-body\">\n<p><strong>\u0645\u0642\u062f\u0645\u0647<\/strong><br \/>\u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0648\u0634\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u0628\u0632\u0631\u06af \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0648 \u0645\u0633\u062a\u0642\u0644 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0645\u0627 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u060c \u0646\u062d\u0648\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0622\u0646\u0647\u0627 \u0628\u0627 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 \u0686\u0646\u062f \u0646\u0645\u0648\u0646\u0647 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p><strong>\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u060c \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u0644\u06cc \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0648\u0638\u06cc\u0641\u0647 \u06cc\u06a9 \u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631 \u0648\u0627\u062d\u062f \u0645\u0627\u0646\u0646\u062f \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u060c \u067e\u0631\u062f\u0627\u0632\u0634 \u067e\u0631\u062f\u0627\u062e\u062a \u06cc\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u062d\u0635\u0648\u0644 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u0646\u062f. \u0647\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u0631\u0648\u062a\u06a9\u0644\u200c\u0647\u0627\u06cc HTTP \u06cc\u0627 \u067e\u06cc\u0627\u0645\u200c\u0631\u0633\u0627\u0646\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0639\u0645\u0644 \u06a9\u0646\u0646\u062f.<\/p>\n<p><strong>\u0645\u0648\u0646\u0648\u0644\u06cc\u062a \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627<\/strong><br \/>\u062f\u0631 \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647\u060c \u0647\u0645\u0647 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062d\u06a9\u0645 \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0647\u0645\u0631\u0627\u0647 \u0647\u0633\u062a\u0646\u062f \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u06cc\u06a9\u0633\u0627\u0646\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u0646\u062f\u060c \u06a9\u0647 \u0645\u0642\u06cc\u0627\u0633 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0631\u0634\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u062e\u062a\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0632 \u0633\u0648\u06cc \u062f\u06cc\u06af\u0631\u060c \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u0646\u062f \u062a\u0627 \u062e\u062f\u0645\u0627\u062a \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u0642\u06cc\u0627\u0633\u060c \u06af\u0633\u062a\u0631\u0634 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u06a9\u062f: \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647<\/strong><\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 1: Microservices \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/strong><\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0648 \u0633\u0631\u0648\u06cc\u0633 \u0627\u0633\u0627\u0633\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c <code>UserService<\/code> \u0648 <code>OrderService<\/code>\u060c \u06a9\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 HTTP \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p><strong>1.1 \u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0631\u0628\u0631<\/strong><\/p>\n<p>\u0631\u0627 <code>UserService<\/code> \u0645\u0633\u0626\u0648\u0644\u06cc\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0631 \u0639\u0647\u062f\u0647 \u062f\u0627\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 API \u0633\u0627\u062f\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Node.js \u0648 Express \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p><code>user-service\/index.js<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">PORT<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3001<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">());<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">users<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Alice<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Bob<\/span><span class=\"dl\">'<\/span> <span class=\"p\">}<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"c1\">\/\/ Endpoint to retrieve user info<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/users\/:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">user<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">users<\/span><span class=\"p\">.<\/span><span class=\"nf\">find<\/span><span class=\"p\">(<\/span><span class=\"nx\">u<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">u<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span> <span class=\"o\">==<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">);<\/span>\n  <span class=\"nx\">user<\/span> <span class=\"p\">?<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">(<\/span><span class=\"nx\">user<\/span><span class=\"p\">)<\/span> <span class=\"p\">:<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">404<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">User not found<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`UserService running on http:\/\/localhost:<\/span><span class=\"p\">${<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>1.2 \u062e\u062f\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634<\/strong><\/p>\n<p>\u0631\u0627 <code>OrderService<\/code> \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u0648 \u0628\u0627 \u0634\u0645\u0627\u0631\u0647 \u062a\u0645\u0627\u0633 \u0645\u06cc \u06af\u06cc\u0631\u062f <code>UserService<\/code> \u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627\u060c \u0645\u0627 \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc HTTP \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>axios<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647<\/p>\n<p><code>order-service\/index.js<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">axios<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">axios<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">PORT<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3002<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">());<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">orders<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">userId<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"na\">product<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Laptop<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">id<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">userId<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"na\">product<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Phone<\/span><span class=\"dl\">'<\/span> <span class=\"p\">}<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"c1\">\/\/ Endpoint to retrieve order info with user details<\/span>\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/orders\/:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">order<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">orders<\/span><span class=\"p\">.<\/span><span class=\"nf\">find<\/span><span class=\"p\">(<\/span><span class=\"nx\">o<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">o<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span> <span class=\"o\">==<\/span> <span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">);<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">order<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">userResponse<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"s2\">`http:\/\/localhost:3001\/users\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">order<\/span><span class=\"p\">.<\/span><span class=\"nx\">userId<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">({<\/span> <span class=\"p\">...<\/span><span class=\"nx\">order<\/span><span class=\"p\">,<\/span> <span class=\"na\">user<\/span><span class=\"p\">:<\/span> <span class=\"nx\">userResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span> <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error fetching user details<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">404<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Order not found<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`OrderService running on http:\/\/localhost:<\/span><span class=\"p\">${<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 2: \u0627\u062c\u0631\u0627\u06cc Microservices<\/strong><br \/>\u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u062e\u062f\u0645\u0627\u062a:<\/p>\n<ol>\n<li>\n<p>\u0646\u0635\u0628 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627: npm \u0646\u0635\u0628 \u0627\u06a9\u0633\u067e\u0631\u0633 express<\/p>\n<\/li>\n<li>\n<p>UserService \u0648 OrderService \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>node user-service\/index.js\nnode order-service\/index.js\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<ol>\n<li>&#8211; \u062a\u0633\u062a \u062e\u062f\u0645\u0627\u062a:<\/li>\n<\/ol>\n<p><strong>\u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u06cc\u0646 \u062e\u062f\u0645\u0627\u062a<\/strong><\/p>\n<p>\u062f\u0631 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u060c API Gateway \u06cc\u0627 Service Discovery (\u0645\u0627\u0646\u0646\u062f Consul \u06cc\u0627 Eureka) \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u062f\u0631\u0648\u0627\u0632\u0647 API \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Express \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u0628\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p><code>api-gateway\/index.js<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">express<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">express<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">axios<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">require<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">axios<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">app<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">express<\/span><span class=\"p\">();<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">PORT<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3000<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">use<\/span><span class=\"p\">(<\/span><span class=\"nx\">express<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">());<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\/api\/orders\/:id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">req<\/span><span class=\"p\">,<\/span> <span class=\"nx\">res<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">orderResponse<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"s2\">`http:\/\/localhost:3002\/orders\/<\/span><span class=\"p\">${<\/span><span class=\"nx\">req<\/span><span class=\"p\">.<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">json<\/span><span class=\"p\">(<\/span><span class=\"nx\">orderResponse<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nf\">status<\/span><span class=\"p\">(<\/span><span class=\"mi\">500<\/span><span class=\"p\">).<\/span><span class=\"nf\">send<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">Error fetching order details<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"nx\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">listen<\/span><span class=\"p\">(<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">,<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"s2\">`API Gateway running on http:\/\/localhost:<\/span><span class=\"p\">${<\/span><span class=\"nx\">PORT<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062f\u0631\u06af\u0627\u0647 \u0628\u0647 \u062e\u062f\u0645\u0627\u062a \u0633\u0641\u0627\u0631\u0634 \u0628\u0627 \u0645\u0634\u062e\u0635\u0627\u062a \u06a9\u0627\u0631\u0628\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f:<\/p>\n<p><strong>\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631<\/strong><br \/>\u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u0642\u06cc\u0627\u0633 \u0628\u0646\u062f\u06cc \u0645\u0633\u062a\u0642\u0644 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 <code>OrderService<\/code> \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Docker \u0648 Kubernetes \u0628\u0686\u0631\u062e\u0627\u0646\u06cc\u062f.<\/p>\n<p>\u0646\u0645\u0648\u0646\u0647 Dockerfile \u0628\u0631\u0627\u06cc OrderService<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code># OrderService Dockerfile\nFROM node:14\nWORKDIR \/app\nCOPY . .\nRUN npm install\nCMD [\"node\", \"index.js\"]\nEXPOSE 3002\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 Dockerized\u060c \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc Kubernetes \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 Autoscaler Horizontal Pod Kubernetes \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u062e\u062f\u0645\u0627\u062a \u0628\u0631 \u0627\u0633\u0627\u0633 \u062a\u0642\u0627\u0636\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/strong><br \/>\u0628\u0627 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0648\u0644\u06cc\u0647\u060c \u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a\u0627\u0631\u0628\u0646\u062f\u06cc \u062e\u062f\u0645\u0627\u062a \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0627 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f. \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0631\u0627 \u0646\u06cc\u0632 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0633\u0627\u062f\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u06a9\u0631\u0627\u0631\u06cc \u062a\u06a9\u0627\u0645\u0644 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f Docker\u060c Kubernetes \u0648 \u062f\u0631\u0648\u0627\u0632\u0647\u200c\u0647\u0627\u06cc API \u0628\u0631\u0627\u06cc \u0645\u0642\u06cc\u0627\u0633\u200c\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u062f\u0645\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06a9\u062f \u0646\u0648\u06cc\u0633\u06cc \u0645\u0628\u0627\u0631\u06a9! \ud83d\ude80<\/p>\n<p><strong>\u0628\u0627 \u0645\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646<\/strong><br \/>\u0627\u06af\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f \u06cc\u0627 \u0633\u0624\u0627\u0644\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0627 \u0645\u0646 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u06cc\u062f! \u0645\u0646 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u0645 \u0646\u0638\u0631\u0627\u062a \u0634\u0645\u0627 \u0631\u0627 \u0628\u0634\u0646\u0648\u0645.<\/p>\n<ul>\n<li>GitHub: Tajudeen-boss<\/li>\n<li>\u0644\u06cc\u0646\u06a9\u062f\u06cc\u0646: \u0639\u0628\u062f\u0627\u0644\u0644\u0647 \u062a\u0627\u062c\u0648\u062f\u06cc\u0646<\/li>\n<li>\u062a\u0648\u06cc\u06cc\u062a\u0631: @DevAdullah<\/li>\n<\/ul>\n<p>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646! \ud83d\ude0a<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647\u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u0647\u0627 \u0631\u0648\u0634\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0627\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062f\u0631 \u0645\u0642\u06cc\u0627\u0633 \u0628\u0632\u0631\u06af \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u0648 \u0645\u0633\u062a\u0642\u0644 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u062a\u0642\u0633\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c \u0645\u0627 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u060c \u0646\u062d\u0648\u0647 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0622\u0646\u0647\u0627 \u0628\u0627 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0631\u0627 \u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u0648 \u0686\u0646\u062f &hellip;<\/p>\n","protected":false},"author":2,"featured_media":83195,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-83194","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=83194"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83194\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/83195"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=83194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=83194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=83194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}