{"id":30427,"date":"2026-10-06T05:41:48","date_gmt":"2026-10-06T05:41:48","guid":{"rendered":"https:\/\/umang.pk\/2026\/10\/06\/nestjs-%d9%85%d8%b4%d8%a7%db%81%d8%af%db%81-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%db%8c%d8%b3%db%92-%da%a9%d8%b1%db%8c%da%ba-%da%88%d9%88%db%8c%d9%84%d9%be%d8%b1%d8%b2-%da%a9\/"},"modified":"2026-10-06T05:41:49","modified_gmt":"2026-10-06T05:41:49","slug":"nestjs-%d9%85%d8%b4%d8%a7%db%81%d8%af%db%81-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%db%8c%d8%b3%db%92-%da%a9%d8%b1%db%8c%da%ba-%da%88%d9%88%db%8c%d9%84%d9%be%d8%b1%d8%b2-%da%a9","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/10\/06\/nestjs-%d9%85%d8%b4%d8%a7%db%81%d8%af%db%81-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%db%8c%d8%b3%db%92-%da%a9%d8%b1%db%8c%da%ba-%da%88%d9%88%db%8c%d9%84%d9%be%d8%b1%d8%b2-%da%a9\/","title":{"rendered":"NestJS \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba: \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u06c1\u06cc\u0646\u0688 \u0628\u06a9"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0648\u0631 NestJS \u06cc\u0642\u06cc\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06d2 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06c1\u0644\u0627 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 NestJS Observe \u062f\u0644\u0686\u0633\u067e \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u062e\u0635\u0648\u0635 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0686\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u061f<\/p>\n<p>\u0646\u0641\u0627\u0630 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u0626\u06cc\u06d2 \u0645\u0633\u0626\u0644\u06c1 \u0637\u06d2 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0627 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc\u0648\u06ba \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-observability-problem\">\u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0645\u0633\u0627\u0626\u0644<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0644\u0645\u0628\u06d2 \u0639\u0631\u0635\u06d2 \u0633\u06d2 \u0633\u0631\u0648\u0631 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06cc \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0646\u06d2 \u0634\u0627\u06cc\u062f \u0627\u06cc\u0633\u06d2 \u0644\u0645\u062d\u0627\u062a \u06a9\u0627 \u062a\u062c\u0631\u0628\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648 \u06af\u0627 \u062c\u06c1\u0627\u06ba \u0622\u067e \u06a9\u0627 API \u06a9\u0633\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0633\u0633\u062a \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u0633\u0645\u062c\u06be \u0646\u06c1\u06cc\u06ba \u0622\u062a\u06cc \u06a9\u06c1 \u06a9\u06cc\u0648\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u0645\u06cc\u06ba \u0644\u0627\u06af \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u0648\u06ba \u062a\u0648 \u0648\u06c1\u0627\u06ba \u06a9\u0686\u06be \u0628\u06be\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0626\u06cc \u062e\u0631\u0627\u0628\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0622\u067e \u06a9\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u0631 \u0628\u0627\u0644\u06a9\u0644 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0648 \u0622\u0626\u06cc\u06d2 \u06a9\u0686\u06be \u0644\u0627\u06af\u0632 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">11:30:02 AM LOG Starting order creation\n11:34:11 AM LOG Inventory checked\n11:34:12 AM LOG Payment started\n11:39:03 AM LOG Payment completed\n<\/code><\/pre>\n<p>\u0627\u0648\u0631 \u067e\u06be\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u0628 \u0622\u067e \u06a9\u0648 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0648\u0642\u062a \u06a9\u06cc\u0633\u06d2 \u06af\u0632\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0633\u0627\u062a\u06be \u06c1\u06cc \u0622\u067e \u0627\u067e\u0646\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0679\u0631\u06cc\u06a9\u0646\u06af \u0633\u0633\u0679\u0645 \u0628\u0646\u0627\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc\u06ba \u0633\u06d2 \u0686\u06cc\u0632\u06cc\u06ba \u062f\u0644\u0686\u0633\u067e \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u062c\u062f\u06cc\u062f \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u0644\u0627\u06af\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633\u060c \u0679\u0631\u06cc\u0633\u060c \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632\u060c \u063a\u0644\u0637\u06cc\u0627\u06ba\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a\u060c HTTP \u06a9\u0627\u0644\u0632\u060c \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0679\u0627\u0633\u06a9\u060c \u0627\u0648\u0631 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0644\u06af\u06d2 \u067e\u06cc\u063a\u0627\u0645\u0627\u062a\u06d4<\/p>\n<p>\u0686\u06cc\u0644\u0646\u062c \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 <strong>\u0645\u0632\u06cc\u062f \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062c\u0645\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong> \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0622\u0633\u0627\u0646 \u0633\u0648\u0627\u0644 \u06a9\u0627 \u062c\u0648\u0627\u0628 \u062f\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<blockquote>\n<p>\u0645\u06cc\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u061f<\/p>\n<\/blockquote>\n<p>NestJS \u0627\u06cc\u067e\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06cc\u06c1 \u0633\u0648\u0627\u0644 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0644\u0686\u0633\u067e \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 Nest \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u06ba \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646\u060c \u0645\u0688\u0644 \u0648\u06cc\u0626\u0631\u060c \u06af\u0627\u0631\u0688\u0632\u060c \u0627\u0646\u0679\u0631\u0633\u06cc\u067e\u0679\u0631\u0632 \u0627\u0648\u0631 \u067e\u0627\u0626\u067e\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06c1\u0648\u06ba\u06d4 \u06c1\u0645 \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06af\u0631\u0627\u0641 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u0631\u06cc\u0632\u0648\u0644\u0648\u0631 \u06a9\u0628 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u062c\u0628 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0633\u0631\u0648\u0633 \u06c1\u06cc\u0646\u0688\u0644\u0631 \u06a9\u0648 \u06a9\u0648\u0626\u06cc \u067e\u06cc\u063a\u0627\u0645 \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0648 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u0627\u0633 \u0639\u0644\u0645 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc \u062c\u0627\u0626\u06d2\u061f \u0627\u0633 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u0627\u06cc\u06a9 \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u06d4 <strong>NestJS \u0645\u0634\u0627\u06c1\u062f\u06c1<\/strong>. \u06cc\u06c1 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u06c1\u0645 \u0627\u0633 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u062c \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u06c1\u0645 \u0627\u0633\u06d2 \u0628\u0691\u06d2 \u062e\u06cc\u0627\u0644\u0627\u062a \u0627\u0648\u0631 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1\u06cc \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0648\u0627\u0642\u0639\u06cc \u06c1\u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u06a9\u0628 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u061f<\/p>\n<p>\u0622\u0626\u06cc\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0628\u0627\u062a\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0646\u0627\u0646\u0627\u060c \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0646\u0627\u060c \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633 \u06a9\u0627 \u0622\u0644\u06c1 \u0628\u0646\u0627\u0646\u0627\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0633 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u0627 OpenTelemetry \u06a9\u06cc \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u063a\u06cc\u0631 \u062c\u0627\u0646\u0628\u062f\u0627\u0631 \u062f\u0646\u06cc\u0627 \u0633\u06d2 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<h3 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h3>\n<p>\u0633\u0627\u062a\u06be \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0679\u0627\u0626\u067e \u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0648\u0631 NestJS \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u060c \u0627\u0648\u0631 HTTP API \u0633\u06d2 \u06a9\u0686\u06be \u0648\u0627\u0642\u0641\u06cc\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u062c\u0631\u0628\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0645\u06cc\u06ba \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0624\u06ba \u06af\u0627 \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u06c1\u0645 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-what-well-cover\">\u06c1\u0645 \u06a9\u06cc\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/h3>\n<h2 id=\"heading-what-problem-is-observe-actually-solving\">\u0645\u0634\u0627\u06c1\u062f\u06c1 \u062f\u0631\u0627\u0635\u0644 \u06a9\u0648\u0646 \u0633\u0627 \u0645\u0633\u0626\u0644\u06c1 \u062d\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u0622\u0626\u06cc\u06d2 \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0648 \u0679\u06be\u0648\u0633 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba: <code>POST \/orders<\/code> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0622\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 3 \u0633\u06cc\u06a9\u0646\u0688 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0633\u0628 HTTP \u06a9\u0644\u0627\u0626\u0646\u0679 \u06c1\u0645\u06cc\u06ba \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0648\u067e\u0631 \u0648\u0627\u0644\u0627 \u062e\u0627\u06a9\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>POST \/orders<\/code> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0633\u0631\u06af\u0631\u0645\u06cc \u06a9\u06cc \u0645\u062a\u0639\u062f\u062f \u067e\u0631\u062a\u0648\u06ba \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0635\u0631\u0641 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0645\u062f\u062a \u06c1\u06cc \u06c1\u0645\u06cc\u06ba \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u0628\u062a\u0627\u062a\u06cc \u06a9\u06c1 \u0648\u0642\u062a \u06a9\u06c1\u0627\u06ba \u06af\u0632\u0627\u0631\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u06c1\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders \u2192 3 seconds\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0627\u06a9\u06cc\u0644\u0627 \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06c1\u0645 \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 3 \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u06c1\u0627\u06ba \u0633\u06d2 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">Controller \u2192 Service \u2192 Database\n<\/code><\/pre>\n<p>\u06cc\u0627:<\/p>\n<pre><code class=\"language-plaintext\">Controller \u2192 Service \u2192 External API\n<\/code><\/pre>\n<p>\u06cc\u0627 \u0634\u0627\u06cc\u062f \u06cc\u06c1 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0633\u06cc \u0627\u0648\u0631 \u0686\u06cc\u0632 \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Node.js process \u2192 CPU-heavy operation \u2192 Event loop contention\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u06c1 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2 \u062c\u0633\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 NestJS \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u06cc\u06a9 \u062f\u0644\u0686\u0633\u067e \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0633\u06d2 \u0627\u0633 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u062a\u0627 \u06c1\u06d2\u06d4 <strong>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u062c\u0648\u0627\u0628 \u06a9\u0627 \u062d\u0635\u06c1 \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2\u06d4<\/strong><\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u0646 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u0627\u0644\u0641\u0627\u0638 \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2 \u062c\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0645\u0628\u06c1\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0686\u06be \u0645\u0641\u06cc\u062f \u062a\u0639\u0631\u06cc\u0641\u06cc\u06ba \u06cc\u06c1 \u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p>\u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06a9\u0633\u06cc \u0646\u0638\u0627\u0645 \u06a9\u06cc \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062d\u0627\u0644\u062a \u0627\u0648\u0631 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u0627\u0633 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0633\u06d2 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0633\u0627\u0645\u0646\u06d2 \u06cc\u06c1 \u06c1\u06d2\u06d4<\/p>\n<\/blockquote>\n<p>\u0648\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a <strong>\u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc\u060c<\/strong> \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0639\u0627\u0645 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0633\u06af\u0646\u0644 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0644\u0627\u06af<\/p>\n<\/li>\n<li>\n<p>\u0645\u06cc\u0679\u0631\u06a9\u0633<\/p>\n<\/li>\n<li>\n<p>\u062b\u0628\u0648\u062a<\/p>\n<\/li>\n<li>\n<p>\u067e\u0631\u0648\u0641\u0627\u0626\u0644<\/p>\n<\/li>\n<\/ul>\n<p>\u0648\u06c1 \u0633\u0628 \u0645\u062e\u062a\u0644\u0641 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0646\u0648\u0634\u062a\u06c1 \u062c\u0627\u062a \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u061f<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-plaintext\">2026-08-31 14:21:04\nPayment provider returned HTTP 502\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0686\u06be\u0627\u0646 \u0628\u06cc\u0646 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0627\u0633 \u0644\u0627\u06af \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0628\u0627\u0642\u06cc \u062a\u0645\u0627\u0645 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u0646\u062f\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06cc\u0679\u0631\u06a9 \u06a9\u06cc \u0645\u062c\u0645\u0648\u0639\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a: \u06cc\u06c1 \u06a9\u062a\u0646\u06cc \u0628\u0627\u0631 \u06c1\u0648\u0627\u061f<\/p>\n<pre><code class=\"language-plaintext\">request_count = 1,240,231\nerror_rate = 2.4%\np95_latency = 840ms\n<\/code><\/pre>\n<p>\u0631\u062c\u062d\u0627\u0646\u0627\u062a \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0622\u067e \u0627\u0633 \u0633\u0648\u0627\u0644 \u06a9\u0627 \u0641\u0648\u0631\u06cc \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c &quot;\u06a9\u06cc\u0627 \u06a9\u0644 \u06a9\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u062a\u0627\u062e\u06cc\u0631 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06c1 \u06c1\u0648\u0627 \u06c1\u06d2\u061f&#8221; \u062a\u0627\u06c1\u0645\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u0648\u0631\u06cc \u06a9\u06c1\u0627\u0646\u06cc \u06a9\u0648 \u0628\u06cc\u0627\u0646 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0648 \u06c1\u0645\u06cc\u06ba \u0628\u06be\u06cc \u0627\u06cc\u06a9 &#8216;\u0679\u0631\u06cc\u0633&#8217; \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2<\/p>\n<p>\u0679\u0631\u06cc\u06a9\u0646\u06af \u0627\u06cc\u06a9 \u0645\u0646\u0637\u0642\u06cc \u06a9\u0627\u0645 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2: \u0627\u0633 \u06a9\u0627\u0645 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u061f<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders\n\u2502\n\u251c\u2500\u2500 authentication\n\u251c\u2500\u2500 OrdersController.create()\n\u251c\u2500\u2500 InventoryService.reserve()\n\u251c\u2500\u2500 PaymentService.charge()\n\u2514\u2500\u2500 Payment API\n<\/code><\/pre>\n<p>\u0627\u0628 \u0622\u067e \u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u06a9\u062a\u0646\u0627 \u0648\u0642\u062a \u0635\u0631\u0641 \u06c1\u0648\u0627\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u06c1\u06d2\u06d4 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0646\u06af \u0645\u062e\u062a\u0644\u0641 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0627\u0644\u0641\u0627\u0638 \u0645\u06cc\u06ba\u060c \u0631\u0646 \u0679\u0627\u0626\u0645 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u06c1\u0627\u06ba \u06c1\u06cc\u06ba\u061f \u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0633\u0633\u062a \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06a9\u0648\u0626\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06cc\u0627 HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba \u062c\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0633\u0633\u062a \u06c1\u0648\u06ba\u06d4<\/p>\n<p>CPU \u067e\u0631\u0648\u0641\u0627\u0626\u0644 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">CPU\n\u2502\n\u251c\u2500\u2500 JSON serialization\n\u251c\u2500\u2500 application code\n\u251c\u2500\u2500 garbage collection\n\u2514\u2500\u2500 cryptographic operations\n<\/code><\/pre>\n<p>\u0686\u0627\u0631 \u0646\u0634\u0627\u0646\u06cc\u0627\u06ba \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0641\u06cc\u062f \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u06c1\u06d2\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/10\/1791265307_953_NestJS-\u0645\u0634\u0627\u06c1\u062f\u06c1-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u06cc\u0633\u06d2-\u06a9\u0631\u06cc\u06ba-\u0688\u0648\u06cc\u0644\u067e\u0631\u0632-\u06a9\u06d2-\u0644\u06cc\u06d2-\u0627\u06cc\u06a9.png\" alt=\"\u0634\u06a9\u0644 2: \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0633\u06cc\u0679\" style=\"display: block;\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u06cc\u06c1 \u0627\u0639\u062f\u0627\u062f \u0648 \u0634\u0645\u0627\u0631 \u0627\u06c1\u0645 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0633\u06af\u0646\u0644\u0632 (\u0644\u0627\u06af\u0632\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633\u060c \u0679\u0631\u06cc\u0633\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632) \u06a9\u0648 \u06af\u0631\u0648\u067e \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u06a9\u06c1 \u06c1\u0631 \u0633\u06af\u0646\u0644 \u06a9\u0633 \u0637\u0631\u062d \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0646\u0638\u0631\u06cc\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u062a\u0645\u0627\u0645 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0633\u06af\u0646\u0644\u0632 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648\u06ba\u06d4 \u0646\u0642\u0637\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0641\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06c1\u0648\u06ba\u06d4<\/p>\n<h2 id=\"heading-from-application-monitoring-to-framework-aware-observability\">\u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1\u06cc \u062a\u06a9<\/h2>\n<p>\u0631\u0648\u0627\u06cc\u062a\u06cc \u0637\u0631\u06cc\u0642\u06d2 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0636\u0628\u0648\u0637\u060c \u0645\u0639\u06cc\u0627\u0631\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u0633\u0627\u062e\u062a \u0627\u0648\u0631 \u0686\u0644\u062a\u06cc \u06c1\u06d2\u06d4 <strong>\u06a9\u06cc\u0627 \u06c1\u0648\u06af\u0627 \u0627\u06af\u0631 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0639\u0627\u0645 \u0639\u0645\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0633 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u061f<\/strong><\/p>\n<h3 id=\"heading-before-observe\">\u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2<\/h3>\n<p>\u0628\u06c1\u062a \u0633\u06d2 \u0637\u0631\u06cc\u0642\u06d2 \u06c1\u06cc\u06ba \u062c\u0646 \u0633\u06d2 \u06c1\u0645 \u0633\u0633\u062a \u0631\u0648\u06cc \u062a\u06a9 \u067e\u06c1\u0646\u0686 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>\/orders<\/code> \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0633\u0628 \u0633\u06d2 \u0622\u0633\u0627\u0646 \u0644\u0627\u06af\u0646\u06af \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-tsx\">console.log('Starting payment');\nawait paymentService.charge();\nconsole.log('Payment completed');\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0691\u06be \u0646\u06c1 \u062c\u0627\u0626\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0648\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">payment_latency_ms\norders_created_total\npayment_failures_total\n<\/code><\/pre>\n<p>\u0627\u0628 \u06c1\u0645 \u0628\u06c1\u062a \u0633\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u06c1 \u0679\u0631\u06cc\u0633\u0646\u06af \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0626\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders\n\u2502\n\u251c\u2500\u2500 OrdersController\n\u251c\u2500\u2500 OrdersService\n\u251c\u2500\u2500 InventoryService\n\u2514\u2500\u2500 PaymentService\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba OpenTelemetry \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0627\u0648\u0631 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 OpenTelemetry \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0628\u0646\u0627\u0646\u06d2\u060c \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0648\u06cc\u0646\u0688\u0631 \u063a\u06cc\u0631 \u062c\u0627\u0646\u0628\u062f\u0627\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0679\u0648\u0644 \u06a9\u0679 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0633 \u0645\u0646\u0638\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06c1\u0645 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u0633 \u0641\u0631\u0642 \u067e\u0631 \u0648\u0627\u067e\u0633 \u0622\u0626\u06cc\u06ba \u06af\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 OpenTelemetry \u0627\u0648\u0631 Observe \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u06cc\u06c1 \u0627\u06c1\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-so-why-do-we-need-nestjs-observe\">\u062a\u0648 \u0622\u067e \u06a9\u0648 NestJS Observe \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u06cc\u0648\u06ba \u06c1\u06d2\u061f<\/h3>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u06cc\u06c1 \u062f\u0644\u0686\u0633\u067e \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u067e\u0631\u062a HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 NestJS \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0688\u06be\u0627\u0646\u0686\u06d2 \u0633\u06d2 \u06af\u0632\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-plaintext\">HTTP Request \u2192 Middleware \u2192 Guard \u2192 Interceptor \u2192 Pipe \u2192 Controller \u2192 Provider\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0641\u0646\u06a9\u0634\u0646 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u062a\u0635\u0648\u0631 \u06c1\u06d2 \u062c\u0633\u06d2 Nest \u062e\u0648\u062f \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0633\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645\u0648\u06ba \u0633\u06d2 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0642\u06cc\u0645\u062a\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0635\u0631\u0641 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">HTTP GET \/users\/42 (took 4s to execute)\n<\/code><\/pre>\n<p>\u06c1\u0645 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">HTTP GET \/users\/42 \u2192 UsersController.findOne() \u2192 UsersService.findUser() \u2192 UsersRepository.findById()\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0631\u0642 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06d2 \u0622\u0644\u0627\u062a \u06a9\u0648 \u062f\u0644\u0686\u0633\u067e \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-framework-aware-observability\">\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1\u06cc \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1<\/h3>\n<p>\u0622\u0626\u06cc\u06d2 \u0622\u0626\u06cc\u0688\u06cc\u0627 \u06a9\u0648 \u0627\u06cc\u06a9 \u0646\u0627\u0645 \u062f\u06cc\u06ba\u06d4 <strong>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1\u06cc \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1<\/strong> \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0639\u0645\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0633\u0645\u062c\u06be\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0631\u0648\u0627\u06cc\u062a\u06cc \u0645\u0627\u0688\u0644 \u062a\u0642\u0631\u06cc\u0628\u0627 \u0627\u0633 \u0637\u0631\u062d \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">Application\n    \u2193\nGeneric instrumentation\n    \u2193\nOpenTelemetry\n    \u2193\nCollector\n    \u2193\nObservability backend\n<\/code><\/pre>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">NestJS application\n    \u2193\nNestJS lifecycle\n    \u2193\nFramework-aware instrumentation\n    \u2193\nTelemetry\n    \u2193\nObservability backend\n<\/code><\/pre>\n<p>\u0641\u0631\u0642 \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06c1 \u062d\u062a\u0645\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0641\u0627\u0631\u0645\u06cc\u0679 \u0645\u06cc\u06ba \u06c1\u0648\u06d4 \u0627\u062e\u062a\u0644\u0627\u0641\u0627\u062a \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06cc\u06ba: <strong>\u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u0645\u0642\u062f\u0627\u0631 \u062c\u0633\u06d2 \u0622\u0644\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/strong>.<\/p>\n<p>\u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2\u06d4 <strong>\u0645\u0634\u0627\u06c1\u062f\u06c1<\/strong> \u062a\u0635\u0648\u06cc\u0631 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-meet-nestjs-observe\">NestJS \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u0633\u06d2 \u0645\u0644\u06cc\u06ba\u06d4<\/h2>\n<p>NestJS Observe \u0627\u06cc\u06a9 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0679\u0648\u0644 \u06c1\u06d2 \u062c\u0648 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 NestJS \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u06c1\u06d2\u06d4 \u0645\u0642\u0635\u062f \u0644\u0627\u06af\u0632\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633\u060c \u06cc\u0627 \u0646\u0634\u0627\u0646\u0627\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u06c1 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06cc \u0642\u062f\u0631 NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a NestJS \u06a9\u06d2 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0645\u062a\u0639\u062f\u062f \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0644\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644:<\/p>\n<ul>\n<li>\n<p>HTTP<\/p>\n<\/li>\n<li>\n<p>\u06af\u0631\u0627\u0641 \u06a9\u06cc\u0648 \u0627\u06cc\u0644<\/p>\n<\/li>\n<li>\n<p>\u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0633\u0631\u0648\u0633\u0632\/RPC<\/p>\n<\/li>\n<li>\n<p>\u0628\u0644 \u0627\u06cc\u0645 \u06a9\u06cc\u0648<\/p>\n<\/li>\n<li>\n<p>\u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645<\/p>\n<\/li>\n<\/ul>\n<p>\u06cc\u06c1 \u0631\u0646 \u0679\u0627\u0626\u0645 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0627\u0648\u0631 \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0646\u06af \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0628\u06be\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0646\u0648\u0679 \u06a9\u0631\u06cc\u06ba: <strong>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u0628\u06be\u06cc \u0628\u06be\u06cc NestJS \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u0627 \u0646\u0633\u0628\u062a\u0627\u064b \u0646\u06cc\u0627 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4<\/strong>\u06cc\u06c1 APIs\u060c \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0627\u0646\u0636\u0645\u0627\u0645\u060c \u0642\u06cc\u0645\u062a\u0648\u06ba \u06a9\u0627 \u062a\u0639\u06cc\u0646\u060c \u0627\u0648\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u0628 \u06af\u067e \u0634\u067e \u0686\u06be\u0648\u0691 \u062f\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0686\u06be \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06c1\u0645 \u0645\u0632\u06cc\u062f \u0622\u06af\u06d2 \u0628\u0691\u06be\u06cc\u06ba\u060c \u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u06cc\u06a9 \u0644\u0645\u062d\u06c1 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06cc\u06c1 \u06a9\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u0627\u0628 NestJS \u067e\u0631 \u0634\u0627\u0626\u0639 \u06c1\u0648\u0627 \u06c1\u06d2\u06d4 <strong>\u0688\u06cc\u0645\u0648 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong> \u0622\u067e \u0627\u0633\u06d2 \u062e\u0648\u062f \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0645\u0635\u0631\u0648\u0641 \u062e\u062f\u0645\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627\u0633\u06cc\u0679\u0633 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0628\u0646\u0627\u0626\u06d2 \u06cc\u0627 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba\u060c \u0646\u0634\u0627\u0646\u0627\u062a\u060c \u0622\u0628\u0634\u0627\u0631 \u06a9\u06d2 \u0646\u0638\u0627\u0631\u06d2\u060c \u063a\u0644\u0637\u06cc\u0648\u06ba\u060c \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba\u060c \u0627\u0648\u0631 \u0627\u0644\u0631\u0679\u0633 \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0645\u0627\u0631\u0627 \u0645\u0634\u0648\u0631\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0686\u0646\u062f \u0645\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0644\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06be\u0648\u0644\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0627\u0633 \u06a9\u0627 \u0633\u0631\u0627\u063a \u0644\u06af\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u067e\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u0648 \u0627\u0639\u0644\u06cc \u0633\u0637\u062d\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u062a\u06a9 \u0679\u0631\u06cc\u0633 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0633\u06d2 \u06c1\u0645\u06cc\u06ba \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679\u0633 \u06cc\u0627 \u0641\u06cc\u0686\u0631 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0633 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba \u062c\u0648 \u06a9\u0686\u06be \u06c1\u0645 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0628\u06c1\u062a\u0631 \u0628\u0635\u06cc\u0631\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-our-practical-project\">\u06c1\u0645\u0627\u0631\u06d2 \u0639\u0645\u0644\u06cc \u0645\u0646\u0635\u0648\u0628\u06d2<\/h2>\n<p>\u06c1\u0645 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc API \u0628\u0646\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u062a\u06cc\u0646 \u0686\u06be\u0648\u0679\u06d2 \u0627\u062c\u0632\u0627\u0621 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><strong>\u062d\u06a9\u0645<\/strong>: HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0648\u0635\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0628\u06c1\u0627\u0624 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0646\u0648\u06cc\u0646\u0679\u0631\u06cc<\/strong>: \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062f\u06c1 \u067e\u0631\u0648\u0688\u06a9\u0679 \u0631\u06cc\u0632\u0631\u0648\u06cc\u0634\u0646 \u06a9\u06cc \u0646\u0642\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc<\/strong>: \u0627\u06cc\u06a9 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06cc \u062a\u0642\u0644\u06cc\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0645\u062c\u0645\u0648\u0639\u06cc \u0628\u06c1\u0627\u0624 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0648\u067e\u0631 \u062a\u0635\u0648\u06cc\u0631 1 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u062c\u0633 \u06a9\u06cc \u06c1\u0645 \u0646\u0642\u0644 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>Orders<\/code> \u0627\u06af\u0631\u0686\u06c1 \u062c\u0632\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u0645\u0631\u06a9\u0648\u0632 \u06c1\u06d2\u060c <code>Inventory<\/code> \u0627\u0648\u0631 <code>Payments<\/code> \u0627\u0646 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u0648\u0627\u0642\u0639 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0633\u0633\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0641\u06cc \u0688\u06be\u0627\u0646\u0686\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0622\u067e \u06a9\u0648 \u062f\u06a9\u06be\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0648\u0642\u062a \u06a9\u06c1\u0627\u06ba \u06af\u0632\u0631\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u0648 \u0633\u0633\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06c1\u0645\u0627\u0631\u0627 \u0645\u0642\u0635\u062f \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0645 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u06c1\u0631 \u06a9\u0627\u0645 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0628\u0646\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u067e\u0646\u0627 \u0648\u0642\u062a \u06a9\u06c1\u0627\u06ba \u06af\u0632\u0627\u0631 \u0631\u06c1\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06c1\u0645 \u0627\u06cc \u06a9\u0627\u0645\u0631\u0633 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0646\u06c1\u06cc\u06ba \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u0627\u0646\u06c1 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0645\u0633\u0627\u0626\u0644 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0641\u06cc \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 Node.js \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u0627\u0648\u0631 NestJS CLI \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4 \u0622\u067e \u06a9\u0648 OpenTelemetry \u06cc\u0627 \u06a9\u0633\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 APM \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u0648 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0646\u06c1 \u06c1\u06cc \u0622\u067e \u06a9\u0648 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-create-the-nestjs-application\">NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0628\u0627\u0642\u0627\u0639\u062f\u06c1 NestJS \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">$ npm i -g @nestjs\/cli # if not installed yet\n$ nest new nest-observe-demo\n$ cd nest-observe-demo\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>nest new<\/code> \u062d\u06a9\u0645 \u06c1\u06d2 &quot;<strong>\u06a9\u06cc\u0627 \u0622\u067e \u0622\u0679\u0648 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u0688 \u0622\u0628\u0632\u0631\u0648\u06cc\u0628\u0644\u0679\u06cc (@nestjs\/observe) \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06ba \u06af\u06d2\u061f<\/strong> \u062c\u0628 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u06c1\u0627\u06ba \u06a9\u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">$ npm run start:dev\n<\/code><\/pre>\n<p>\u0627\u0628 Nest CLI \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u067e\u0646\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">$ nest g module orders\n$ nest g controller orders\n$ nest g service orders\n\n$ nest g module inventory\n$ nest g service inventory\n\n$ nest g module payments\n$ nest g service payments\n<\/code><\/pre>\n<p>\u0622\u067e \u06a9\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u062a\u0642\u0631\u06cc\u0628\u0627 \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">src\/\n\u251c\u2500\u2500 app.module.ts\n\u251c\u2500\u2500 main.ts\n\u2502\n\u251c\u2500\u2500 orders\/\n\u2502   \u251c\u2500\u2500 orders.controller.ts\n\u2502   \u251c\u2500\u2500 orders.service.ts\n\u2502   \u2514\u2500\u2500 orders.module.ts\n\u2502\n\u251c\u2500\u2500 inventory\/\n\u2502   \u251c\u2500\u2500 inventory.service.ts\n\u2502   \u2514\u2500\u2500 inventory.module.ts\n\u2502\n\u2514\u2500\u2500 payments\/\n    \u251c\u2500\u2500 payments.service.ts\n    \u2514\u2500\u2500 payments.module.ts\n<\/code><\/pre>\n<p>\u06c1\u0645\u0627\u0631\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0648\u06ba \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0644\u06cc\u0679\u06cc\u0646\u0633\u06cc \u06a9\u06cc \u0646\u0642\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-tsx\">import { Injectable } from '@nestjs\/common';\n\n@Injectable()\nexport class PaymentsService {\n  async charge(amount: number) {\n    await new Promise((resolve) =>\n      setTimeout(resolve, 750),\n    );\n\n    return {\n      id: `payment_${Date.now()}`,\n      amount,\n      status: 'succeeded',\n    };\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u06c1\u0645 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4 <code>setTimeout()<\/code>. \u06c1\u0645 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0633\u0633\u062a \u0627\u0646\u062d\u0635\u0627\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u06cc\u06c1 \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a<\/p>\n<\/li>\n<li>\n<p>\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631<\/p>\n<\/li>\n<li>\n<p>\u0641\u0631\u06cc\u0642 \u062b\u0627\u0644\u062b APIs<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0633\u0631\u0648\u0633<\/p>\n<\/li>\n<\/ul>\n<p>\u06c1\u0645\u0627\u0631\u06d2 \u0645\u0642\u0627\u0635\u062f \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062a\u0627\u062e\u06cc\u0631 \u06a9\u06cc \u0648\u062c\u06c1 \u0627\u06c1\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-add-inventory\">\u0627\u0633\u0679\u0627\u06a9 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06c1\u0645\u0627\u0631\u06cc \u0627\u0646\u0648\u06cc\u0646\u0679\u0631\u06cc \u0633\u0631\u0648\u0633 \u0628\u06c1\u062a \u062a\u06cc\u0632 \u06c1\u0648\u06af\u06cc:<\/p>\n<pre><code class=\"language-tsx\">import { Injectable } from '@nestjs\/common';\n\n@Injectable()\nexport class InventoryService {\n  async reserve(productId: string) {\n    await new Promise((resolve) =>\n      setTimeout(resolve, 40),\n    );\n\n    return {\n      productId,\n      reserved: true,\n    };\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u067e\u06be\u0631\u060c \u062a\u0627\u062e\u06cc\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u0639\u0645\u0627\u0644 \u06a9\u06cc \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-create-the-orders-service\">\u0622\u0631\u0688\u0631\u0646\u06af \u0633\u0631\u0648\u0633 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0627\u0628 \u0622\u0626\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0645\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-tsx\">\/\/ src\/orders.service.ts\nimport { Injectable } from '@nestjs\/common';\nimport { InventoryService } from '..\/inventory\/inventory.service';\nimport { PaymentsService } from '..\/payments\/payments.service';\n\n@Injectable()\nexport class OrdersService {\n  constructor(\n    private readonly inventoryService: InventoryService,\n    private readonly paymentsService: PaymentsService,\n  ) {}\n\n  async createOrder(\n    productId: string,\n    amount: number,\n  ) {\n    const inventory =\n      await this.inventoryService.reserve(productId);\n\n    const payment =\n      await this.paymentsService.charge(amount);\n\n    return {\n      id: `order_${Date.now()}`,\n      productId,\n      amount,\n      inventory,\n      payment,\n    };\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u06c1\u0645 \u0646\u06a9\u0627\u062a \u067e\u0631 \u062a\u0648\u062c\u06c1 \u062f\u06cc\u06ba\u06d4 \u06cc\u06c1\u0627\u06ba \u06a9\u0648\u0626\u06cc \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u06a9\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u0628\u06be\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0635\u0631\u0641 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648\u0688 \u06c1\u06d2!<\/p>\n<h3 id=\"heading-create-the-controller\">\u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba\u060c \u062f\u0631\u062c \u0630\u06cc\u0644 \u062f\u0631\u062c \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-tsx\">import { Body, Controller, Post } from '@nestjs\/common';\nimport { OrdersService } from '.\/orders.service';\n\n@Controller('orders')\nexport class OrdersController {\n  constructor(\n    private readonly ordersService: OrdersService,\n  ) {}\n\n  @Post()\n  create(\n    @Body()\n    body: {\n      productId: string;\n      amount: number;\n    },\n  ) {\n    return this.ordersService.createOrder(\n      body.productId,\n      body.amount,\n    );\n  }\n}\n<\/code><\/pre>\n<p>\u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u067e\u062a\u0644\u0627 \u06c1\u06d2\u06d4 HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0642\u0628\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>productId<\/code> \u0627\u0648\u0631 <code>amount<\/code>\u0627\u0635\u0644 \u06a9\u0627\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0633\u0648\u0646\u067e\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>OrdersService<\/code>.<\/p>\n<p>\u06a9\u06c1 <code>OrdersService<\/code> NestJS \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 (DI) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0646\u0633\u0679\u0631\u06a9\u0679\u0631 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u06c1\u0645 \u062a\u062e\u0644\u06cc\u0642 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2\u06d4 <code>new OrdersService()<\/code> \u06c1\u0645 \u062e\u0648\u062f \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c Nest \u0627\u06cc\u06a9 \u0633\u0631\u0648\u0633 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0648 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0648 HTTP \u0645\u0633\u0627\u0626\u0644 \u067e\u0631 \u062a\u0648\u062c\u06c1 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 Nest \u06a9\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u06cc \u062d\u062f\u0648\u062f \u0645\u06cc\u06ba \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u06a9\u0648 \u0642\u0627\u0628\u0644 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4 <code>OrdersModule<\/code> \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06cc\u06ba <code>OrdersService<\/code> \u0628\u0631\u0622\u0645\u062f \u0634\u062f\u06c1 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u06cc\u06ba\u06d4 <code>InventoryService<\/code> \u0627\u0648\u0631 <code>PaymentsService<\/code>. \u0648\u06c1 <code>exports<\/code> \u0633\u0631\u0648\u0633 \u06a9\u0648 \u0627\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633\u06d2 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0633 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 NestJS DI \u06a9\u0627 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0633\u0627 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4 \u0645\u062a\u0639\u0644\u0642\u06c1 NestJS \u0648\u0633\u0627\u0626\u0644 \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba \u062c\u0628 \u0622\u067e \u0645\u0632\u06cc\u062f \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646 \u0633\u0633\u0679\u0645 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0645\u0627\u0688\u06cc\u0648\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u0637\u0644\u0648\u0628\u06c1 \u062e\u062f\u0645\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06cc\u06c1\u0627\u06ba Nest \u0645\u06cc\u06ba DI \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0645\u0632\u06cc\u062f \u062c\u0627\u0646 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648\u0688:<\/p>\n<pre><code class=\"language-tsx\">import { Module } from '@nestjs\/common';\nimport { OrdersController } from '.\/orders.controller';\nimport { OrdersService } from '.\/orders.service';\nimport { InventoryModule } from '..\/inventory\/inventory.module';\nimport { PaymentsModule } from '..\/payments\/payments.module';\n\n@Module({\n  imports: [\n    InventoryModule,\n    PaymentsModule,\n  ],\n  controllers: [OrdersController],\n  providers: [OrdersService],\n})\nexport class OrdersModule {}\n<\/code><\/pre>\n<p>\u0627\u0633 \u0645\u0627\u0688\u06cc\u0648\u0644 \u0633\u06d2 \u0633\u0631\u0648\u0633 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>OrdersModule<\/code> \u0622\u067e \u06a9\u06be\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-tsx\">@Module({\n  providers: [InventoryService],\n  exports: [InventoryService],\n})\nexport class InventoryModule {}\n<\/code><\/pre>\n<p>\u0627\u0648\u0631:<\/p>\n<pre><code class=\"language-tsx\">@Module({\n  providers: [PaymentsService],\n  exports: [PaymentsService],\n})\nexport class PaymentsModule {}\n<\/code><\/pre>\n<p>\u0622\u062e\u0631\u06cc \u062f\u0631\u0622\u0645\u062f <code>OrdersModule<\/code> ~ \u0645\u06cc\u06ba <code>AppModule<\/code>. \u06cc\u06c1 CLI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0622\u067e \u0646\u06d2 CLI \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-test-the-application\">\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686<\/h3>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u0626\u06cc\u06d2 \u067e\u06c1\u0644\u06d2 \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062e\u0648\u062f \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0686\u06cc\u06a9 \u0622\u0624\u0679 \u06a9\u0627 \u067e\u0648\u0631\u0627 \u0631\u0627\u0633\u062a\u06c1 \u0686\u0644\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631 \u06a9\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0648\u0635\u0648\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c <code>OrdersService<\/code> \u062c\u0628 \u0622\u067e \u0627\u0646\u0648\u06cc\u0646\u0679\u0631\u06cc\u060c \u067e\u06be\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc\u0648\u06ba \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 API \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0646\u062a\u06cc\u062c\u06c1 \u0644\u0648\u0679\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0642\u0631\u06cc\u0628\u0627\u064b 790ms \u06a9\u0627 \u062c\u0648\u0627\u0628\u06cc \u0648\u0642\u062a \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u06c1\u06d2\u06d4 \u062c\u0628 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0641\u0639\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u0633\u0627\u0626\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 <code>$ npm run start:dev<\/code>.<\/p>\n<p>\u067e\u06be\u0631 \u06a9\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">curl -X POST http:\/\/localhost:3000\/orders \n  -H \"Content-Type: application\/json\" \n  -d '{\"productId\":\"book-123\",\"amount\":49}'\n<\/code><\/pre>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u0633 \u0633\u06d2 \u0645\u0644\u062a\u06d2 \u062c\u0644\u062a\u06d2 \u0646\u062a\u0627\u0626\u062c \u0645\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-tsx\">{\n  \"id\": \"order_...\",\n  \"productId\": \"book-123\",\n  \"amount\": 49,\n  \"inventory\": {\n    \"productId\": \"book-123\",\n    \"reserved\": true\n  },\n  \"payment\": {\n    \"id\": \"payment_...\",\n    \"amount\": 49,\n    \"status\": \"succeeded\"\n  }\n}\n<\/code><\/pre>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 40ms + 750ms \u2252 790ms \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-we-already-have-a-problem-at-a-smaller-scale\">\u06c1\u0645\u0627\u0631\u06d2 \u067e\u0627\u0633 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0686\u06be\u0648\u0679\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0627\u06cc\u06a9 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/h3>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u06a9 \u0635\u0627\u0631\u0641 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 <strong>&quot;\u0622\u0631\u0688\u0631 \u062a\u062e\u0644\u06cc\u0642 \u0633\u0633\u062a \u06c1\u06d2\u06d4&#8221;<\/strong><\/p>\n<ul>\n<li>\n<p>\u0645\u06cc\u06ba \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u0634 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u0648\u06ba\u06d4 <code>POST \/orders \u2248 800ms<\/code><\/p>\n<\/li>\n<li>\n<p>\u067e\u06be\u0631 \u0633\u0648\u0627\u0644 \u06cc\u06c1 \u0628\u0646\u062a\u0627 \u06c1\u06d2\u060c &quot;\u0648\u06c1 800ms \u06a9\u06c1\u0627\u06ba \u06af\u0626\u06d2\u061f&#8221; \u06cc\u0642\u06cc\u0646\u0627\u064b \u06c1\u0645 \u0627\u0633 \u06a9\u0627 \u062c\u0648\u0627\u0628 \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06c1\u0645 \u0646\u06d2 \u06cc\u06c1 \u0628\u0631\u0627 \u06a9\u0648\u0688 \u0644\u06a9\u06be\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0644\u06cc\u06a9\u0646 \u062f\u0648\u0633\u0631\u06cc \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba. \u0622\u067e \u06a9\u06cc \u062e\u062f\u0645\u062a \u06a9\u0686\u06be \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622 \u0633\u06a9\u062a\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-markdown\">OrdersService\n    |\n    +-- PostgreSQL\n    |\n    +-- Redis\n    |\n    +-- Inventory service\n    |\n    +-- Tax service\n    |\n    +-- Payment provider\n    |\n    +-- Fraud service\n<\/code><\/pre>\n<p>\u0627\u0628 \u06a9\u06cc\u0627\u061f \u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u06c1\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-basic-solution-logging\">\u0628\u0646\u06cc\u0627\u062f\u06cc \u062d\u0644: \u0644\u0627\u06af\u0646\u06af<\/h3>\n<p>\u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">console.log('Starting inventory');\nawait this.inventoryService.reserve(productId);\nconsole.log('Inventory complete');\nconsole.log('Starting payment');\nawait this.paymentsService.charge(amount);\nconsole.log('Payment complete');\n<\/code><\/pre>\n<p>\u0627\u0628 \u0644\u0627\u06af \u0627\u0633 \u0637\u0631\u062d \u0644\u06af\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-markdown\">Starting inventory\nInventory complete\nStarting payment\nPayment complete\n<\/code><\/pre>\n<p>\u06c1\u0645 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0646\u0648\u06cc\u0646\u0679\u0631\u06cc \u0646\u0633\u0628\u062a\u0627\u064b \u062a\u06cc\u0632 \u062a\u06be\u06cc \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0633\u0633\u062a \u062a\u06be\u06cc\u060c \u0644\u06cc\u06a9\u0646 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 \u06c1\u0645 \u06a9\u06cc\u0627 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0637\u0644\u0627\u0642 \u06a9\u06cc \u0645\u0646\u0637\u0642 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0622\u0644\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0691\u06be\u062a\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u06c1\u0646\u06af\u06cc \u06c1\u0648\u062a\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0648\u0631 \u06c1\u0645 \u0646\u06d2 \u0627\u0628\u06be\u06cc \u062a\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0626\u06cc \u0645\u0646\u0638\u0645 \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u0646\u06c1\u06cc\u06ba \u0628\u0646\u0627\u0626\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-what-a-trace-gives-us\">\u06c1\u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u0646\u0634\u0627\u0646\u0627\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u0679\u0631\u06cc\u0633 \u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u0627 \u062f\u0631\u062e\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">POST \/orders\n\u2502\n\u2514\u2500\u2500 OrdersController.create()\n    \u2502\n    \u2514\u2500\u2500 OrdersService.createOrder()\n        \u2502\n        \u251c\u2500\u2500 InventoryService.reserve()\n        \u2502\n        \u2514\u2500\u2500 PaymentsService.charge()\n<\/code><\/pre>\n<p>\u0627\u0628 \u0645\u0646\u0633\u0644\u06a9 \u0648\u0642\u062a \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders                       ~790ms\n\u2502\n\u2514\u2500\u2500 OrdersController.create        ~790ms\n    \u2502\n    \u2514\u2500\u2500 OrdersService.createOrder  ~790ms\n        \u2502\n        \u251c\u2500\u2500 InventoryService        ~40ms\n        \u2502\n        \u2514\u2500\u2500 PaymentsService        ~750ms\n<\/code><\/pre>\n<p>\u0645\u0633\u0626\u0644\u06c1 \u0648\u0627\u0636\u062d \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0645\u0642\u0627\u0645\u0627\u062a \u0627\u0628 \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0633\u0633\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0622\u067e \u06a9\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0641\u0631\u0642 \u06c1\u06d2\u06d4 <strong>\u0644\u0627\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be<\/strong> \u0627\u0648\u0631 <strong>\u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u0627<\/strong>.<\/p>\n<h2 id=\"heading-lets-put-observe-to-work\">\u0622\u0626\u06cc\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0648 \u06a9\u0627\u0645 \u067e\u0631 \u0644\u06af\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u067e\u0631 <code>$ nest new<\/code> \u062c\u0628 \u0622\u067e \u06a9\u0645\u0627\u0646\u0688 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0627\u067e\u0646\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u06cc\u0627 \u06c1\u0648\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u06d2 \u0642\u0628\u0648\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062e\u0631\u0627\u0628\u06cc \u0646\u0638\u0631 \u0622 \u0633\u06a9\u062a\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-bash\">[Nest] 87392  - 09\/13\/2026, 9:09:11 PM   ERROR [ObserveAgentWorker] Error: Telemetry rejected (401). Check that appKey and appSecret are valid; the application is taken from the key. Credentials are read once at start-up, so this will not recover without a restart - further rejections are counted, not logged.\n<\/code><\/pre>\n<p>\u0627\u0628 \u0622\u0626\u06cc\u06d2 \u062e\u0648\u062f \u0628\u06be\u06cc \u06cc\u06c1\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u0628\u0632\u0631\u0648\u06cc \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0622\u0644\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">$ npm install @nestjs\/observe\n<\/code><\/pre>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u067e\u06cc\u06a9\u062c Nest \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u06a9\u0648 \u0636\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062f\u062f\u06af\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0628 <code>src\/observe.ts<\/code> src \u0641\u0648\u0644\u0688\u0631 \u0645\u06cc\u06ba\u060c \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u0648\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-tsx\">import { createObserveModule } from '@nestjs\/observe';\n\nexport const {\n  ObserveModule,\n  ObserveInstrument,\n} = createObserveModule();\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06c1\u0645\u06cc\u06ba NestJS \u0627\u0646\u0636\u0645\u0627\u0645 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u06c1\u0645\u06cc\u06ba \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-configure-observe\">\u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u06cc \u062a\u0631\u06a9\u06cc\u0628<\/h3>\n<p>\u0627\u067e \u0688\u06cc\u0679 <code>app.module.ts<\/code>:<\/p>\n<pre><code class=\"language-tsx\">import { Module } from '@nestjs\/common';\nimport { ConfigModule, ConfigService } from '@nestjs\/config';\nimport { AppController } from '.\/app.controller';\nimport { AppService } from '.\/app.service';\nimport { OrdersModule } from '.\/orders\/orders.module';\nimport { InventoryModule } from '.\/inventory\/inventory.module';\nimport { PaymentsModule } from '.\/payments\/payments.module';\nimport { ObserveModule } from '.\/observe';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot({ isGlobal: true }),\n    \/\/ we're loading secrets from env file - which is an async operation (hence we use forRootAsync()\n    ObserveModule.forRootAsync({\n      inject: [ConfigService],\n      \/\/ useFactory defers reading the env vars until Nest has loaded .env, instead of evaluating process.env when the @Module decorator first runs \n      useFactory: (config: ConfigService) => ({\n        appKey: config.getOrThrow<string>('OBSERVE_APP_KEY'),\n        appSecret: config.getOrThrow<string>('OBSERVE_APP_SECRET'),\n        serviceId: config.getOrThrow<string>('OBSERVE_SERVICE_ID'),\n      }),\n    }),\n    OrdersModule,\n    InventoryModule,\n    PaymentsModule,\n  ],\n  controllers: [AppController],\n  providers: [AppService],\n})\nexport class AppModule {}\n<\/string><\/string><\/string><\/code><\/pre>\n<p>\u0627\u0633 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u06ba\u060c \u062a\u06cc\u0646 \u0686\u06cc\u0632\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba:<\/p>\n<p><code>ConfigModule.forRoot({ isGlobal: true })<\/code>    \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 <code>ConfigService<\/code> \u067e\u0648\u0631\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u06d4<\/p>\n<p><code>ObserveModule.forRootAsync()<\/code>    Nest \u06a9\u0648 \u0641\u06a9\u0633\u0688 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0641\u06cc\u06a9\u0679\u0631\u06cc \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u0646\u0636\u0645\u0627\u0645 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06af\u06be\u0648\u06ba\u0633\u0644\u0627 \u0627\u0646\u062c\u06a9\u0634\u0646 <code>ConfigService<\/code> \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u06cc \u0627\u0633\u0646\u0627\u062f \u06a9\u0648 \u0627\u0633 \u0641\u06cc\u06a9\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0644\u0648\u0688 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u06cc \u067e\u0691\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u062e\u0631 \u06a9\u0627\u0631 <code>serviceId<\/code> \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0634\u0646\u0627\u062e\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0622\u0628\u0632\u0631\u0648\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u0648 \u0645\u0639\u0644\u0648\u0645 \u06c1\u0648 \u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0627 \u062a\u0639\u0644\u0642 \u06a9\u0633 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\/\u0633\u0631\u0648\u0633 \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>getOrThrow()<\/code> \u0648\u06c1 \u0628\u06be\u06cc \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631\u06d4 \u0627\u06af\u0631 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u06a9 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0642\u062f\u0631 \u063a\u0627\u0626\u0628 \u06c1\u06d2 \u062a\u0648\u060c \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u06cc\u06a9 \u0646\u0627\u0645\u06a9\u0645\u0644 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0633\u0679\u0627\u0631\u0679 \u0627\u067e \u0645\u06cc\u06ba \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u0648\u0626\u06cc \u0633\u0631\u0648\u0633 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0622\u0628\u0632\u0631\u0648\u06cc \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0633\u06d2 \u0627\u0633\u0646\u0627\u062f \u062d\u0627\u0635\u0644 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u0628\u0632\u0631\u0648\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u067e\u0631 \u062c\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0627\u067e\u0646\u06d2 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e Nest \u0627\u06cc\u06a9\u0648 \u0633\u0633\u0679\u0645 \u0645\u06cc\u06ba \u0646\u0626\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u06a9\u0648\u0688 \u06a9\u06d2 \u0679\u06a9\u0691\u0648\u06ba \u0645\u06cc\u06ba \u062f\u06cc \u06af\u0626\u06cc \u062a\u0641\u0635\u06cc\u0644 \u067e\u0631 \u062a\u0648\u062c\u06c1 \u062f\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633\u06d2 \u0627\u067e\u0646\u06d2 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">OBSERVE_APP_KEY=...\nOBSERVE_APP_SECRET=...\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0631\u0627\u0632 \u06a9\u06cc \u0637\u0631\u062d \u0633\u0644\u0648\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-instrument-the-nest-application\">Nest \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0627 \u0622\u0644\u06c1<\/h3>\n<p>\u0627\u0628\u06be\u06cc \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>main.ts<\/code>:<\/p>\n<pre><code class=\"language-tsx\">import { NestFactory } from '@nestjs\/core';\nimport { AppModule } from '.\/app.module';\nimport { ObserveInstrument } from '.\/observe';\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule, {\n    instrument: ObserveInstrument,\n  });\n  await app.listen(process.env.PORT ?? 3000);\n}\nvoid bootstrap();\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u06cc\u06c1 \u062f\u0644\u0686\u0633\u067e \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0645 \u0646\u06d2 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u067e\u06cc\u06a9 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627\u06d4 <code>OrdersController.create()<\/code> \u06cc\u0627 <code>OrdersService.createOrder()<\/code> \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u06a9\u0648\u0688 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c NestJS \u0627\u0646\u0679\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0622\u067e \u06a9\u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u0646\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0686\u06cc\u0632 \u0627\u0633 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u0648 \u06c1\u0631 \u062c\u06af\u06c1 \u0644\u0627\u06af\u0646\u06af \u06a9\u06d2 \u0628\u06cc\u0627\u0646\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-generate-some-traffic\">\u06a9\u0686\u06be \u0679\u0631\u06cc\u0641\u06a9 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-bash\">$ npm run start:dev\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0633\u06cc \u0642\u0633\u0645 \u06a9\u06d2 \u0628\u0648\u062c\u06be \u06a9\u0648 \u0646\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u0646\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-bash\">for i in {1..20}; do\n  curl -s -X POST http:\/\/localhost:3000\/orders \n    -H \"Content-Type: application\/json\" \n    -d '{\"productId\":\"book-123\",\"amount\":49}' \n    > \/dev\/null\ndone\n<\/code><\/pre>\n<p>\u0627\u0628 \u0627\u067e\u0646\u06d2 \u0622\u0628\u0632\u0631\u0648\u06cc \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u06a9\u0627 \u0645\u0639\u0627\u0626\u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u060c \u06cc\u06c1 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u0679 \u06a9\u06cc \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/10\/1791265308_54_NestJS-\u0645\u0634\u0627\u06c1\u062f\u06c1-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u06cc\u0633\u06d2-\u06a9\u0631\u06cc\u06ba-\u0688\u0648\u06cc\u0644\u067e\u0631\u0632-\u06a9\u06d2-\u0644\u06cc\u06d2-\u0627\u06cc\u06a9.png\" alt=\"\u0634\u06a9\u0644 3: \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0645\u06cc\u06ba \/ \u0622\u0631\u0688\u0631 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634\" style=\"display: block;\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u0622\u0628\u0632\u0631\u0648\u06cc \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2: <code>\/orders<\/code> \u06cc\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0633\u0631\u06af\u0631\u0645\u06cc \u0627\u0648\u0631 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0627 \u0627\u06cc\u06a9 \u0627\u0639\u0644\u06cc\u0670 \u0633\u0637\u062d\u06cc \u0646\u0638\u0627\u0631\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0622\u067e \u06cc\u06c1 \u062a\u062d\u0642\u06cc\u0642 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u06a9\u0646 \u062d\u0635\u0648\u06ba \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0642\u062a \u0644\u06af \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u067e\u0631\u0648\u0688\u06a9\u0679 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0639\u06cc\u0646 \u0645\u0637\u0627\u0628\u0642 UI \u0627\u0648\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0622\u0631\u0627\u0621 \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0628 \u06c1\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0627 \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<strong>\u06a9\u0648\u0646 \u0633\u0627 \u0628\u0644\u0627\u06a9 800ms \u0645\u06cc\u06ba \u0633\u06d2 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0642\u062a \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u061f<\/strong>\u062d\u0642\u06cc\u0642\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u062a\u062d\u062a \u06cc\u06c1 \u0627\u0648\u0631 \u0628\u06be\u06cc \u062f\u0644\u0686\u0633\u067e \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-the-important-part-isnt-the-dashboard\">\u0627\u06c1\u0645 \u062d\u0635\u06c1 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/h3>\n<p>\u0622\u067e \u0634\u0627\u06cc\u062f \u06cc\u06c1\u0627\u06ba \u0631\u06a9 \u06a9\u0631 \u06a9\u06c1\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06ba\u060c &quot;\u06cc\u06c1 \u0628\u06c1\u062a \u0627\u0686\u06be\u0627 \u06c1\u06d2\u060c NestJS \u0645\u06cc\u06ba \u0627\u0628 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06a9\u06cc \u0641\u0639\u0627\u0644\u06cc\u062a \u06c1\u06d2\u06d4&#8221; \u06cc\u06c1 \u062c\u0648 \u06c1\u0645 \u062f\u06cc\u06a9\u06be \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0633\u06d2 \u06a9\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u062f\u0644\u0686\u0633\u067e \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0630\u062e\u06cc\u0631\u06c1 \u0627\u0644\u0641\u0627\u0638\u06d4<\/p>\n<p>\u06c1\u0645 \u0635\u0631\u0641 HTTP \u06cc\u0627 Node.js \u06cc\u0627 db \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u06c1\u0645 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646\u060c \u062e\u062f\u0645\u0627\u062a \u0648\u063a\u06cc\u0631\u06c1 \u062c\u06cc\u0633\u06d2 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u062f\u06cc\u06a9\u06be \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1 \u0622\u0644\u0627\u062a \u06a9\u0627 \u0645\u0645\u06a9\u0646\u06c1 \u0641\u0627\u0626\u062f\u06c1 \u06c1\u06d2\u06d4 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0627\u0646 \u0627\u062c\u0632\u0627\u0621 \u06a9\u0648 \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0622\u0628\u0632\u0631\u0648\u06cc \u0627\u0633 \u0633\u0645\u062c\u06be \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0633\u0626\u0644\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u0648 750 \u0633\u06d2 2500 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u067e\u06be\u0631 \u0679\u0631\u06cc\u0641\u06a9 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0628 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 40ms + 2500ms \u2252 2540ms \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0627\u0646 \u0644\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u0627\u06cc\u06a9 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0648\u0627\u0642\u0639\u06c1 \u06a9\u0648 \u0688\u06cc\u0628\u06af \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u0648\u0631\u0633 \u06a9\u0648\u0688 \u06a9\u0648 \u0645\u062a \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u06d4 \u0627\u0646 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0679\u0631\u06cc\u06a9\u0646\u06af \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba: <code>\/orders<\/code> \u06a9\u06cc\u0627 \u0627\u0633 \u0645\u06cc\u06ba 2.5 \u0633\u06cc\u06a9\u0646\u0688 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u061f&#8221;<\/p>\n<p>\u0679\u0631\u06cc\u06a9\u0646\u06af \u0622\u067e \u06a9\u0648 \u06cc\u06c1\u0627\u06ba \u0633\u06d2 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06d2 \u06af\u06cc: <code>POST \/orders<\/code> \u06a9\u0648 <code>OrdersService.createOrder<\/code> \u06a9\u0648 <code>PaymentsService.charge<\/code> \u0633\u0633\u062a \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0627 \u0628\u06c1\u0627\u0624 \u06c1\u06d2 \u062c\u0648 \u0627\u0686\u06be\u06cc \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-go-beyond-the-first-trace\">\u067e\u06c1\u0644\u06d2 \u0646\u0634\u0627\u0646 \u0633\u06d2 \u0622\u06af\u06d2 \u06a9\u06cc\u0633\u06d2 \u062c\u0627\u0646\u0627 \u06c1\u06d2\u06d4<\/h2>\n<h3 id=\"heading-automatic-instrumentation-vs-manual-instrumentation\">\u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0648\u0631 \u062f\u0633\u062a\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634<\/h3>\n<p>\u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0644\u06c1 \u0637\u0627\u0642\u062a\u0648\u0631 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0633\u0628 \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u0633\u0645\u062c\u06be\u062a\u0627\u06d4 Nest \u0633\u0628 \u06a9\u0686\u06be \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 (HTTP\u060c \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u060c \u0648\u063a\u06cc\u0631\u06c1)\u06d4 \u0622\u067e \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u062d\u0633\u0648\u0633 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u062e\u0635\u0648\u0635\u06cc\u062a \u0622\u067e \u06a9\u06d2 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-tsx\">async calculateCheckoutDiscount(cart: Cart) {\n  \/\/ complicated business logic\n}\n<\/code><\/pre>\n<p>\u0627\u0633 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u0644\u06af \u0628\u06be\u06af 400ms \u0644\u06af \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06cc\u06c1 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u062d\u0635\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2\u06d4 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0636\u0631\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0646\u06c1\u06cc\u06ba \u0644\u06af\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u062f\u0633\u062a\u06cc \u0645\u06cc\u0679\u0631\u0648\u0644\u0648\u062c\u06cc \u06a9\u0627\u0645 \u0622\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0639\u0627\u0645 \u0645\u0627\u0688\u0644\u0632 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">Automatic instrumentation\n            +\nManual instrumentation\n            =\nUseful application telemetry\n<\/code><\/pre>\n<p>\u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u06cc\u0679\u0631\u0648\u0644\u0648\u062c\u06cc \u06c1\u0645\u06cc\u06ba \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0633\u062a\u06cc \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u06cc\u0634\u0646 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0645\u0639\u0646\u06cc \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u062c\u0627\u0644 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0622\u067e \u06a9\u0648 \u06a9\u0648\u0626\u06cc \u0679\u0631\u06cc\u0633 \u0645\u0644 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u06c1\u0631 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u0648 \u0622\u0644\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u06a9\u0634\u0634 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-tsx\">functionA()\nfunctionB()\nfunctionC()\nfunctionD()\nfunctionE()\nfunctionF()\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u0622\u067e \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 \u0645\u0642\u0635\u062f \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u067e\u06af\u0688\u0646\u0688\u06cc \u0628\u0646\u0627\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 <strong>\u0645\u0641\u06cc\u062f \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc\u06d4<\/strong>.<\/p>\n<p>\u062f\u0633\u062a\u06cc \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0627\u0686\u06be\u06d2 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p>\u0627\u06cc\u06a9 \u0645\u06c1\u0646\u06af\u0627 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631 \u0686\u0644\u0627\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0628\u06cc\u0631\u0648\u0646\u06cc \u06a9\u0631\u0646\u0633\u06cc<\/p>\n<\/li>\n<li>\n<p>\u062a\u0646\u0642\u06cc\u062f\u06cc \u0648\u0631\u06a9 \u0641\u0644\u0648<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9 \u0645\u06c1\u0646\u06af\u0627 \u062d\u0633\u0627\u0628<\/p>\n<\/li>\n<li>\n<p>\u062a\u0627\u062e\u06cc\u0631 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0627\u06c1\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646<\/p>\n<\/li>\n<li>\n<p>\u0627\u06c1\u0645 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u062a\u0642\u0631\u06cc\u0628<\/p>\n<\/li>\n<\/ul>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-plaintext\">checkout.calculatePrice\nfraud.evaluate\npayment.authorize\ninvoice.generate\n<\/code><\/pre>\n<p>\u0646\u0627\u0645 \u06a9\u06d2 \u0645\u0639\u0646\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-metrics-when-traces-arent-enough\">\u0645\u06cc\u0679\u0631\u06a9\u0633: \u062c\u0628 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/h3>\n<p>\u06c1\u0645 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u062a\u0646\u06d2 \u0622\u0631\u0688\u0631\u0632 \u062a\u06cc\u0627\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0679\u0631\u06cc\u06a9\u0646\u06af \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0679\u0648\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0645 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba: <code>orders.created<\/code> \u06cc\u0627 <code>payments.failed<\/code> \u06cc\u0627 <code>checkout.duration<\/code>. \u0645\u06cc\u0679\u0631\u06a9\u0633 \u06c1\u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-bash\">orders.created_total\n    12,430\npayment.failures_total\n    183\ncheckout_latency_p95\n    840ms\n<\/code><\/pre>\n<p>\u0627\u0628 \u06c1\u0645 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0686\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u06cc\u0633\u06d2\u060c &quot;\u06a9\u06cc\u0627 \u062d\u0627\u0644 \u06c1\u06cc \u0645\u06cc\u06ba \u0635\u0628\u062d 2 \u0628\u062c\u06d2 \u0631\u06cc\u0644\u06cc\u0632 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0633\u06d2 \u0633\u0633\u0679\u0645 \u062e\u0631\u0627\u0628 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u061f&#8221;<\/p>\n<p>\u0646\u0634\u0627\u0646\u0627\u062a \u06a9\u0627 \u062c\u0648\u0627\u0628 &quot;\u0627\u0633 \u0645\u062e\u0635\u0648\u0635 \u06a9\u0627\u0645 \u06a9\u0627 \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u061f&#8221; \u0627\u0648\u0631 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u062c\u0648\u0627\u0628 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba &quot;\u0633\u0633\u0679\u0645 \u0628\u06be\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u061f&#8221; \u062f\u0648\u0646\u0648\u06ba \u06c1\u06cc \u06a9\u0627\u0631\u0622\u0645\u062f \u06c1\u06cc\u06ba\u060c \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u062c\u0628 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0646\u06d2 \u06a9\u0686\u06be \u062a\u0648\u062c\u06c1 \u062d\u0627\u0635\u0644 \u06a9\u06cc \u06c1\u0648\u06d4<\/p>\n<h3 id=\"heading-errors-are-also-telemetry\">\u063a\u0644\u0637\u06cc\u0627\u06ba \u0628\u06be\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06a9 \u06c1\u06cc\u06ba\u06d4<\/h3>\n<p>\u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648\u0688 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-tsx\">try {\n  await this.paymentsService.charge(amount);\n} catch (error) {\n  return {\n    status: 'pending',\n  };\n}\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u062b\u0646\u06cc\u0670 \u06a9\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0633\u06d2 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0633\u06d2\u060c \u06c1\u0645\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc \u06af\u06c1\u0631\u06cc \u062a\u0634\u0648\u06cc\u0634 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0627\u06cc\u0633\u0627 \u06c1\u0648\u0627\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0641\u0631\u0642 \u06a9\u06cc \u0637\u0631\u0641 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062f\u0631\u0633\u062a\u06af\u06cc \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0645\u0631\u0626\u06cc\u062a \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc\u06d4<\/p>\n<p>\u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u0646\u0628\u06be\u0627\u0644\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0633\u0627\u062a\u06be \u06c1\u06cc \u06cc\u06c1 \u0645\u0634\u0646 \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 \u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u0634\u062f\u06c1 \u063a\u0644\u0637\u06cc\u0648\u06ba \u0627\u0648\u0631 \u063a\u06cc\u0631 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u06cc\u0634\u0632 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h3 id=\"heading-beyond-http-following-work-across-your-application\">HTTP \u0633\u06d2 \u0622\u06af\u06d2: \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u0627 \u0633\u0631\u0627\u063a \u0644\u06af\u0627\u0646\u0627<\/h3>\n<p>\u0627\u0628 \u062a\u06a9 \u06c1\u0645 \u0646\u06d2 \u0635\u0631\u0641 HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0627 \u06c1\u06d2\u06d4 \u0627\u0635\u0644 NestJS \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648\u06c1\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0631\u06a9\u062a\u06cc\u06d4 \u0627\u0633 \u0645\u06cc\u06ba \u0627\u06a9\u062b\u0631 BullMQ \u0679\u0627\u0633\u06a9\u060c \u0634\u06cc\u0688\u0648\u0644\u0688 \u0679\u0627\u0633\u06a9\u060c RPC \u06c1\u06cc\u0646\u0688\u0644\u0631\u0632\u060c GraphQL \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2\u060c \u0627\u0648\u0631 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u062f\u0648\u0633\u0631\u06cc \u0634\u06a9\u0644\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0622\u0628\u0632\u0631\u0648\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0627\u0646 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0686\u06be Nest \u06a9\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0631\u0627\u0633\u062a\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0622\u0644\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u0631\u0688\u0631 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u06a9\u06d2 \u0628\u06c1\u0627\u0624 \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0622\u0631\u0688\u0631 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0642\u0637\u0627\u0631 \u0644\u06af\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders -> Create order -> Queue payment -> BullMQ -> Payment worker\n<\/code><\/pre>\n<p>\u0627\u0628 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2\u060c &quot;\u0622\u067e \u06a9\u0627 \u0622\u0631\u0688\u0631 \u0628\u0646 \u06af\u06cc\u0627\u060c \u0644\u06cc\u06a9\u0646 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0645\u06cc\u06ba 10 \u0645\u0646\u0679 \u0644\u06af\u06d2\u06d4&#8221; HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u0648\u062f \u0686\u0646\u062f \u0633\u0648 \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u062a\u0627\u062e\u06cc\u0631 \u0642\u0637\u0627\u0631\u0648\u06ba\u060c \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba\u060c \u0628\u06c1\u0627\u0648 \u062e\u062f\u0645\u0627\u062a\u060c \u06cc\u0627 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0633\u0633\u062a HTTP \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u06c1\u062a \u0645\u062e\u062a\u0644\u0641 \u0688\u06cc\u0628\u06af\u0646\u06af \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4 \u0679\u0631\u06cc\u0633\u0646\u06af \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0648\u0642\u062a \u0645\u0641\u06cc\u062f \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u0645\u0646\u0637\u0642\u06cc \u0639\u0645\u0644 \u0639\u0645\u0644 \u06a9\u06cc \u062d\u062f \u06a9\u0648 \u0639\u0628\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u06c1\u0627\u0646\u06cc \u06a9\u06d2 \u0627\u06c1\u0645 \u062d\u0635\u06d2 \u0627\u0635\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0627\u06c1\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u06a9\u0648\u0626\u06cc \u06a9\u0627\u0645 \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u06c1 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06af\u0632\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u0679\u0631\u06cc\u06a9\u0646\u06af ID\u060c \u0627\u0633\u06a9\u0648\u067e ID\u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a ID\u060c \u0633\u0631\u0648\u0633\u060c \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a \u0627\u0648\u0631 \u0639\u0644\u0627\u0642\u06c1\u06d4<\/p>\n<pre><code class=\"language-plaintext\">HTTP request\n      |\n      +---- Service A\n      |\n      +---- Queue\n              |\n              +---- Worker\n                      |\n                      +---- Service B\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0633\u0631\u0648\u0633 \u06a9\u06d2 \u0644\u0627\u06af\u0632 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06d2 \u0622\u0626\u0679\u0645\u0632 \u0627\u06cc\u06a9 \u06c1\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u0633\u06d2 \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u06c1 \u0679\u0631\u06cc\u0633\u0646\u06af \u0622\u067e \u06a9\u0648 \u0627\u0646 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0622\u067e\u0633 \u0645\u06cc\u06ba \u062c\u0648\u0691\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 OpenTelemetry \u0645\u06cc\u06ba \u062a\u0642\u0633\u06cc\u0645 \u0634\u062f\u06c1 \u0679\u0631\u06cc\u06a9\u0646\u06af \u0627\u0648\u0631 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u062a\u0628\u0644\u06cc\u063a \u06a9\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06cc \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062c\u06c1\u062a \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u0648\u0642\u062a \u0627\u06c1\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646 \u0645\u06cc\u06ba \u06c1\u06cc \u0645\u0633\u0627\u0626\u0644 \u06c1\u0648\u06ba\u06d4<\/p>\n<p>\u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0679\u0631\u06cc\u06a9\u0646\u06af \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders\n\u2248 2 seconds\n<\/code><\/pre>\n<p>\u062a\u0627\u06c1\u0645\u060c \u06a9\u0648\u0626\u06cc \u0633\u0633\u062a \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u0648\u0627\u0644\u0627\u062a\u060c \u0633\u0633\u062a \u0628\u06cc\u0631\u0648\u0646\u06cc APIs\u060c \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631\u060c \u0627\u0648\u0631 \u0648\u0627\u0636\u062d \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06a9\u06cc\u0627 \u06c1\u0648\u06af\u0627 \u0627\u06af\u0631 Node.js \u0639\u0645\u0644 \u062e\u0648\u062f \u0645\u062a\u0627\u062b\u0631 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u061f<\/p>\n<p>\u0627\u0628 \u06c1\u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0642\u0633\u0645 \u06a9\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0622\u067e \u067e\u0648\u0686\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0639\u0645\u0644 \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06d2\u060c \u06a9\u06cc\u0627 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0628\u0691\u06be \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u06a9\u06cc\u0627 \u06a9\u0648\u0691\u0627 \u0627\u0679\u06be\u0627\u0646\u0627 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0648 \u0645\u062a\u0627\u062b\u0631 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u0622\u06cc\u0627 \u0627\u06cc\u0648\u0646\u0679 \u0644\u0648\u067e \u062f\u0628\u0627\u0624 \u0645\u06cc\u06ba \u06c1\u06d2\u060c \u06cc\u0627 \u0622\u06cc\u0627 \u0627\u06cc\u06a9 \u0641\u0646\u06a9\u0634\u0646 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u06ba CPU \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u062c\u06af\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0631\u0646 \u0679\u0627\u0626\u0645 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0627\u0648\u0631 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0646\u06af \u06a9\u0627\u0645 \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u06a9\u06d2 \u0639\u0644\u0627\u0648\u06c1\u060c \u0622\u0628\u0632\u0631\u0648\u06cc \u06a9\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0641\u06cc\u0686\u0631 \u0633\u06cc\u0679 \u0645\u06cc\u06ba \u0631\u0646 \u0679\u0627\u0626\u0645 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0627\u0648\u0631 \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0646\u06af \u0634\u0627\u0645\u0644 \u06c1\u06d2\u06d4 \u0644\u06c1\u0630\u0627\u060c \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u062e\u0648\u062f HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631 \u0631\u06a9\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u0645\u0633\u0626\u0644\u06c1 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0630\u06c1\u0646 \u0645\u06cc\u06ba \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06c1\u0645 \u062d\u062f\u0648\u062f \u0628\u06be\u06cc \u06c1\u06cc\u06ba\u06d4 \u0679\u0631\u06cc\u0633\u0646\u06af \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0628\u0646\u06cc\u0627\u062f\u06cc \u0648\u062c\u06c1 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06c1\u0645 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">POST \/orders       3 seconds\nPaymentsService    2.9 seconds\n<\/code><\/pre>\n<p>\u0627\u0633 \u0646\u06d2 \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0648 \u0645\u0642\u0627\u0645\u06cc \u0628\u0646\u0627\u06cc\u0627\u060c \u0644\u06cc\u06a9\u0646 \u0636\u0631\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u06d4 <code>PaymentsService<\/code> \u0633\u0633\u062a \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0642\u062a \u0644\u06af\u0646\u06d2\u060c \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06c1\u060c \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0648\u0644 \u06a9\u06cc \u062a\u06be\u06a9\u0646\u060c \u06cc\u0627 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0633\u0633\u062a \u0631\u0648\u06cc \u0648\u0627\u0642\u0639 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u062a\u0644\u0627\u0634 \u06a9\u06cc \u062c\u06af\u06c1 \u06a9\u0648 \u062a\u0646\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0627 \u0645\u062a\u0628\u0627\u062f\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u0627 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a \u06a9\u0648 \u062a\u06cc\u0632 \u062a\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u06c1 \u062a\u062d\u0642\u06cc\u0642\u0627\u062a \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-where-observe-fits-nestjs-opentelemetry-and-the-broader-ecosystem\">\u062c\u06c1\u0627\u06ba \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0641\u0679 \u0628\u06cc\u0679\u06be\u062a\u0627 \u06c1\u06d2: NestJS\u060c OpenTelemetry\u060c \u0627\u0648\u0631 Wider Ecosystem<\/h2>\n<p>\u0627\u0633 \u0645\u0642\u0627\u0645 \u067e\u0631\u060c \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u0628\u0691\u06d2 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u0627 \u0627\u0686\u06be\u0627 \u062e\u06cc\u0627\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u0648\u0631 \u0627\u0648\u067e\u0646 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0635\u0631\u0641 \u062f\u0648 \u0642\u0627\u0628\u0644 \u062a\u0628\u0627\u062f\u0644\u06c1 \u0645\u0635\u0646\u0648\u0639\u0627\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 OpenTelemetry \u0627\u06cc\u06a9 \u0648\u06cc\u0646\u0688\u0631 \u063a\u06cc\u0631 \u062c\u0627\u0646\u0628\u062f\u0627\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0679\u0648\u0644 \u06a9\u0679 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u0627\u0648\u0631 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0645\u06cc\u06ba \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0648 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2\u060c \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u0633\u0627\u0646 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">NestJS\n   |\nOpenTelemetry\n   |\nCollector\n   |\n   +---- Grafana\n   +---- Jaeger\n   +---- Datadog\n   +---- New Relic\n   +---- other backend\n<\/code><\/pre>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u0627\u0626\u06d2 \u0648\u0627\u0644\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">NestJS\n   |\nObserve\n   |\nObserve platform\n<\/code><\/pre>\n<p>\u0644\u06c1\u0630\u0627 \u062f\u0644\u0686\u0633\u067e \u0641\u0631\u0642 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 &quot;\u0627\u06cc\u06a9 \u06a9\u06d2 \u067e\u0627\u0633 \u0679\u0631\u06cc\u06a9\u0646\u06af \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06d2 \u067e\u0627\u0633 \u0646\u06c1\u06cc\u06ba&#8221;\u06d4 \u0645\u0632\u06cc\u062f \u0645\u0641\u06cc\u062f \u0633\u0648\u0627\u0644\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p>NestJS \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u0627 \u06a9\u062a\u0646\u0627 \u0622\u0644\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0633\u0645\u062c\u06be\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u061f<\/p>\n<\/blockquote>\n<p>OpenTelemetry \u06a9\u06cc \u0627\u06c1\u0645 \u0637\u0627\u0642\u062a \u0627\u0633 \u06a9\u06cc \u067e\u0648\u0631\u0679\u06cc\u0628\u0644\u0679\u06cc \u06c1\u06d2\u06d4 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u06a9 \u06a9\u0645\u067e\u0646\u06cc 8 NestJS \u0633\u0631\u0648\u0633\u0632\u060c 2 Go \u0633\u0631\u0648\u0633\u0632\u060c 4 Python \u0633\u0631\u0648\u0633\u0632\u060c \u0627\u0648\u0631 3 .NET \u0633\u0631\u0648\u0633\u0632 \u0686\u0644\u0627 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u0634\u0627\u06cc\u062f \u0686\u0627\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u062e\u062a\u0644\u0641 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0632 \u0646\u06c1\u06cc\u06ba \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0639\u0627\u0645 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc\u060c \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642\u060c \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a\u060c \u067e\u0633\u062f\u06cc\u062f\u060c \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0648\u06c1 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2 \u062c\u0633\u06d2 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 OpenTelemetry \u06a9\u0648 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u062a\u062c\u0627\u0631\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u062f\u0631\u062c\u0646 NestJS \u062e\u062f\u0645\u0627\u062a \u0627\u0648\u0631 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0642\u062f\u0631\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646\u060c \u0645\u0627\u0688\u06cc\u0648\u0644\u0632\u060c \u06af\u0627\u0631\u0688\u0632\u060c \u0627\u0646\u0679\u0631\u0633\u06cc\u067e\u0679\u0631\u0632\u060c \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0648\u06ba\u060c \u0642\u0637\u0627\u0631\u0648\u06ba \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 NestJS \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06d2 \u062d\u0648\u0627\u0644\u06d2 \u0633\u06d2 \u0633\u0648\u0686\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0679\u0648\u0644\u0632 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0646 \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0627 \u062a\u062c\u0631\u0628\u06c1 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u0627\u0646 \u0634\u0631\u0627\u0626\u0637 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633\u06d2 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0646 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0627 \u0645\u0642\u0627\u0628\u0644\u06c1 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u06a9\u0686\u06be \u0645\u0641\u06cc\u062f \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/10\/1791265308_162_NestJS-\u0645\u0634\u0627\u06c1\u062f\u06c1-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u06cc\u0633\u06d2-\u06a9\u0631\u06cc\u06ba-\u0688\u0648\u06cc\u0644\u067e\u0631\u0632-\u06a9\u06d2-\u0644\u06cc\u06d2-\u0627\u06cc\u06a9.png\" alt=\"\u0634\u06a9\u0644 4: \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 NestJS\u060c OpenTelemetry\u060c \u0627\u0648\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0633 \u0645\u0646\u0638\u0631 \u062f\u06a9\u06be\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4\" style=\"display: block;\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0628\u0627\u0644\u0627 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u0627\u06cc\u06a9 \u062a\u06c1\u06c1 \u062f\u0627\u0631 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba NestJS \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u0627 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c OpenTelemetry \u0645\u0639\u06cc\u0627\u0631\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0627\u0648\u0631 \u0627\u0646\u0679\u0631\u0622\u067e\u0631\u06cc\u0628\u0644\u0679\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u0648\u06cc\u0698\u0648\u0644\u0627\u0626\u0632\u06cc\u0634\u0646\u060c \u0627\u0644\u0631\u0679\u0646\u06af\u060c \u0627\u0648\u0631 \u062a\u062c\u0632\u06cc\u0627\u062a \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0627\u0648\u0631 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06d2 \u0622\u0644\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u0639\u0627\u0645 \u0633\u06cc\u0645\u0646\u0679\u06a9\u0633\u060c \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u062a\u0628\u0644\u06cc\u063a\u060c \u0627\u0648\u0631 \u0627\u0646\u0679\u0631\u0622\u067e\u0631\u06cc\u0628\u0644\u0679\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u067e\u0633\u062f\u06cc\u062f \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u0633\u0648\u0627\u0644\u0627\u062a\u060c \u062a\u0635\u0648\u0631\u0627\u062a\u060c \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a\u060c \u0627\u0648\u0631 \u062a\u062c\u0632\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0639\u0644\u06cc\u062d\u062f\u06af\u06cc \u0645\u0639\u0646\u06cc \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>NestJS \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0628\u06be\u06cc \u0627\u06a9\u06cc\u0644\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c .NET \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645 \u062a\u0634\u062e\u06cc\u0635 \u06c1\u06cc\u06ba \u062c\u06cc\u0633\u06d2: <code>Activity<\/code>\u06cc\u06c1 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0627\u0648\u0631 \u0644\u0627\u06af\u0646\u06af \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 OpenTelemetry \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0648 \u0628\u0627\u06c1\u0645 \u0645\u0631\u0628\u0648\u0637 \u0627\u0648\u0631 \u0628\u0631\u0622\u0645\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0627\u0648\u0627 \u0645\u06cc\u06ba \u0627\u0633\u067e\u0631\u0646\u06af \u0628\u0648\u0679 \u062c\u06cc\u0633\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0645\u06cc\u0679\u0631 \u062c\u06cc\u0633\u06cc \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0627\u0644\u063a \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0679\u0648\u0644\u0632 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>Python \u0645\u06cc\u06ba Django \u0627\u0648\u0631 FastAPI \u062c\u06cc\u0633\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 OpenTelemetry \u0627\u0646\u0636\u0645\u0627\u0645 \u06c1\u06d2\u060c \u062c\u0628\u06a9\u06c1 Go \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 HTTP\u060c gRPC\u060c \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u0645\u06cc\u06ba OpenTelemetry \u0622\u0644\u0627\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0646\u0641\u0627\u0630 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0648\u0633\u06cc\u0639 \u0633\u0645\u062a \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u06c1\u06d2\u06d4 <strong>\u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0645\u0627\u0688\u0644 \u0633\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u062c\u062a\u0646\u0627 \u0642\u0631\u06cc\u0628 \u06c1\u0648\u06af\u0627\u060c \u0627\u062a\u0646\u0627 \u06c1\u06cc \u0645\u0641\u06cc\u062f \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06cc\u06c1 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u067e\u06a9\u0691 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/strong><\/p>\n<p>\u06cc\u06c1 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062f\u0644\u0686\u0633\u067e \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u06d4 NestJS \u0646\u06d2 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627\u060c \u0627\u0648\u0631 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0622\u0644\u0627\u062a \u0648\u0633\u06cc\u0639 \u062a\u0631 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u06a9\u0627 \u0645\u062a\u0628\u0627\u062f\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0628\u0644\u06a9\u06c1\u060c NestJS \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u0634\u0631\u0637 \u0644\u06af\u0627 \u0631\u06c1\u0627 \u06c1\u06d2 \u06a9\u06c1 NestJS \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0645\u062d\u0633\u0648\u0633 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0642\u062f\u0631\u062a\u06cc \u062a\u062c\u0627\u0631\u062a \u06c1\u06d2\u06d4 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 NestJS \u06a9\u0648 \u062c\u062a\u0646\u0627 \u06af\u06c1\u0631\u0627 \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u06c1 NestJS \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062a\u0646\u0627 \u06c1\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0641\u06cc\u062f \u06c1\u0648 \u06af\u0627\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u062a\u062e\u0635\u0635 \u0627\u0633\u06d2 \u06a9\u0645 \u067e\u0648\u0631\u0679\u06cc\u0628\u0644 \u0628\u06be\u06cc \u0628\u0646\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 NestJS \u0645\u06cc\u06ba \u0627\u06c1\u0645 \u0633\u0631\u0645\u0627\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u0628\u06c1\u062a \u0627\u06c1\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0645\u062a\u0639\u062f\u062f \u0632\u0628\u0627\u0646\u0648\u06ba \u0645\u06cc\u06ba \u062f\u0631\u062c\u0646\u0648\u06ba \u062e\u062f\u0645\u0627\u062a \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u0639\u0627\u0645 OpenTelemetry \u067e\u0631 \u0645\u0628\u0646\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06c1\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062a\u0645\u0627\u0645 \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0632\u0648\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-evaluate-observe-in-a-real-application\">\u062d\u0642\u06cc\u0642\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06a9\u06cc\u0633\u06d2 \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>\u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062d\u0635\u06c1 \u062c\u0633\u06d2 \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0644\u0627\u06af\u062a \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06d2 \u062d\u0644 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a\u060c \u0644\u0648\u06af \u0627\u06a9\u062b\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">Tool A = $X\nTool B = $Y\nOpenTelemetry = free\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0646\u0627\u0645\u06a9\u0645\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u062d\u0644 \u06a9\u06cc \u0627\u0635\u0644 \u0642\u06cc\u0645\u062a \u0645\u06cc\u06ba \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631\u060c \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631\u060c \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u0627 \u0648\u0642\u062a\u060c \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644\u060c \u062a\u0631\u062a\u06cc\u0628\u060c \u0627\u0648\u0631 \u0648\u0627\u0642\u0639\u06c1 \u06a9\u06d2 \u0631\u062f\u0639\u0645\u0644 \u06a9\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>OpenTelemetry \u0628\u0630\u0627\u062a \u062e\u0648\u062f \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06af\u0631 \u0622\u067e \u0627\u0633 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0627\u06cc\u06a9 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u067e\u06be\u0631 \u0628\u06be\u06cc \u06a9\u0633\u06cc \u06a9\u0648 \u06a9\u0644\u06a9\u0679\u0631\u060c \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688\u0632\u060c \u0627\u0644\u0631\u0679\u0633\u060c \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc\u0627\u06ba\u060c \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u0627\u0648\u0631 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4<\/p>\n<p>\u0645\u06cc\u0632\u0628\u0627\u0646 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u0686\u06be \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0628\u0648\u062c\u06be \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0633\u06c1\u0648\u0644\u062a \u0642\u06cc\u0645\u062a \u067e\u0631 \u0622\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0631\u0639\u06a9\u0633\u060c \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0627\u0633\u0679\u06cc\u06a9 \u0622\u067e \u06a9\u0648 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0646 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u0633\u06d2 \u0628\u06be\u06cc \u062e\u0631\u0686 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06c1\u0630\u0627\u060c \u0622\u067e \u06a9\u0648 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u06a9\u0627 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0642\u06cc\u0645\u062a\u0648\u06ba \u06a9\u06d2 \u0635\u0641\u062d\u06c1 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u06a9\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u0642\u06cc\u0645\u062a\u0648\u06ba \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u0633 \u062a\u062d\u0631\u06cc\u0631 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642\u060c \u0622\u0628\u0632\u0631\u0648\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06c1\u0631 \u0645\u0627\u06c1 300,000 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u06d2 \u0645\u0641\u062a \u062f\u0631\u062c\u06d2 \u06a9\u06cc \u062a\u0634\u06c1\u06cc\u0631 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u062a\u062c\u0631\u0628\u0627\u062a \u06a9\u0648 \u0646\u0633\u0628\u062a\u0627\u064b \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0627\u06cc\u0648\u0646\u0679 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0642\u06cc\u0645\u062a\u0648\u06ba \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0627\u06c1\u0645 \u062a\u0635\u0648\u0631 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u06cc\u0627 \u06c1\u06d2: \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0648\u0627\u0644\u06cc\u0648\u0645\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0622\u067e\u0631\u06cc\u0634\u0646\u0632\u060c \u0645\u062a\u0639\u062f\u062f \u0627\u0633\u06a9\u0648\u067e\u0633\u060c \u0644\u0627\u06af\u0632\u060c \u063a\u0644\u0637\u06cc\u0627\u06ba \u0627\u0648\u0631 \u062f\u06cc\u06af\u0631 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u0679\u0631\u06cc\u0641\u06a9 \u0648\u0627\u0644\u06cc\u0648\u0645 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0628\u0691\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u06c1\u0630\u0627\u060c \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u06a9\u06cc \u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0632\u06cc\u0627\u062f\u06c1 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0627 \u0645\u0637\u0644\u0628 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0628\u06c1\u062a\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u0627\u06cc\u0648\u0646\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0645\u0646\u0633\u0644\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062a\u0635\u0648\u0631 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">userId\nrequestId\ntransactionId\ntenantId\nemail\n<\/code><\/pre>\n<p>\u0627\u06af\u0631\u0686\u06c1 \u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0639\u0644\u06cc\u0670 \u0642\u0644\u0628\u06cc\u060c \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06cc \u0628\u0691\u06be\u062a\u06cc \u06c1\u0648\u0626\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a\u060c \u0631\u0627\u0632\u062f\u0627\u0631\u06cc \u06a9\u06d2 \u062e\u062f\u0634\u0627\u062a\u060c \u0628\u0691\u06d2 \u0628\u0644\u060c \u0627\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0633\u0648\u0627\u0644\u0627\u062a \u0628\u06be\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0686\u06be \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0648 \u06a9\u0633\u06cc \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u067e\u0631 \u0628\u06d2 \u062f\u0631\u06cc\u063a \u0646\u06c1\u06cc\u06ba \u0628\u06be\u06cc\u062c\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u062a\u0648\u062b\u06cc\u0642\u06cc \u06c1\u06cc\u0688\u0631\u0632\u060c \u06a9\u0648\u06a9\u06cc\u0632\u060c \u067e\u0627\u0633 \u0648\u0631\u0688\u0632\u060c API \u06a9\u06cc\u0632\u060c \u0679\u0648\u06a9\u0646\u0632\u060c \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u060c \u0627\u0648\u0631 \u0630\u0627\u062a\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u067e\u0631 \u062e\u0627\u0635 \u062a\u0648\u062c\u06c1 \u062f\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u06cc\u06c1 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u0622\u0646\u06a9\u06be\u06cc\u06ba \u0628\u0646\u062f \u06a9\u0631\u06a9\u06d2 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<pre><code class=\"language-tsx\">span.setAttribute(\n  'headers',\n  JSON.stringify(request.headers),\n);\n<\/code><\/pre>\n<p>\u0622\u062e\u0631 \u06a9\u0627\u0631\u060c \u0622\u067e \u0627\u067e\u0646\u06d2 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u067e\u0631 \u0627\u06cc\u06a9 \u062a\u0635\u062f\u06cc\u0642\u06cc \u0679\u0648\u06a9\u0646 \u06cc\u0627 \u06a9\u0648\u06a9\u06cc \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0688\u06cc\u0679\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0637\u0631\u062d \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u0631\u06cc\u0641\u06a9 \u06a9\u06d2 \u062d\u062c\u0645 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0645\u0648\u0646\u06d2 \u0644\u06cc\u0646\u0627 \u0628\u06be\u06cc \u0627\u06c1\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0686\u06be\u0648\u0679\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u0644\u0627\u06af \u06a9\u0631\u0646\u0627 \u062f\u0631\u0633\u062a \u0633\u0645\u062c\u06be \u0645\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0641\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u06c1\u0632\u0627\u0631\u0648\u06ba \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u0633\u0679\u0645\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u0648 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06cc \u0645\u0642\u062f\u0627\u0631 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">100% of errors\n100% of slow requests\n10% of successful requests\n<\/code><\/pre>\n<p>\u062f\u0631\u0633\u062a \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4 \u0627\u06c1\u0645 \u0646\u06a9\u062a\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062e\u0648\u062f \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0648 \u0622\u067e \u06a9\u0648 \u06a9\u0628 \u0633\u0646\u062c\u06cc\u062f\u06af\u06cc \u0633\u06d2 NestJS Observe \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u061f<\/p>\n<p>NestJS \u06a9\u06cc \u0628\u0691\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0648\u0627\u0636\u062d \u0627\u0645\u06cc\u062f\u0648\u0627\u0631 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0686 \u06c1\u06d2 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0688\u06be\u0627\u0646\u0686\u06c1 \u0645\u0648\u062c\u0648\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u062e\u0648\u062f \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0628\u0646\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u0641\u06cc\u062f \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0645\u0631\u0626\u06cc\u062a \u0686\u0627\u06c1\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u062f\u0644\u0686\u0633\u067e \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0648\u0627\u06cc\u062a\u06cc HTTP APIs \u0633\u06d2 \u0622\u06af\u06d2 \u0628\u0691\u06be \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 BullMQ\u060c GraphQL\u060c \u0645\u0627\u0626\u06cc\u06a9\u0631\u0648 \u0633\u0631\u0648\u0633\u0632\u060c \u0634\u06cc\u0688\u0648\u0644\u0688 \u0679\u0627\u0633\u06a9\u060c \u06cc\u0627 \u062f\u06cc\u06af\u0631 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u067e\u0627\u062a\u06be\u0632 \u06a9\u0627 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0646\u06c1\u06cc\u06ba \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0633\u06d2 \u0622\u06af\u0627\u06c1 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 NestJS \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0641\u0637\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0628\u06be\u06cc \u0645\u0641\u06cc\u062f \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">OrdersController\nOrdersService\nPaymentService\n<\/code><\/pre>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u0627 \u06a9\u06c1 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0627\u0646\u06c1\u06cc \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u06cc \u0639\u06a9\u0627\u0633\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u0633\u06cc \u0648\u0627\u0642\u0639\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0627\u0648\u0631 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0639\u0644\u0645\u06cc \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 NestJS \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0627\u0633\u06d2 \u0627\u067e\u0646\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u06a9\u0644\u06a9\u0679\u0631\u0632\u060c \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688\u0632\u060c \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a\u060c SLOs\u060c \u0679\u0631\u06cc\u0633\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633\u060c \u0644\u0627\u06af\u0632\u060c \u0627\u0648\u0631 \u06a9\u0631\u0627\u0633 \u0633\u0631\u0648\u0633 \u0627\u0631\u062a\u0628\u0627\u0637 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0628\u0627\u0644\u063a OpenTelemetry \u067e\u0631 \u0645\u0628\u0646\u06cc \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0627\u0633\u0679\u06cc\u06a9 \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0648\u0633\u0631\u0627 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0646\u06d2 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0646\u0642\u0644 \u067e\u06cc\u062f\u0627 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0628\u06c1\u062a \u0633\u06d2 \u06a9\u062b\u06cc\u0631 \u0644\u0633\u0627\u0646\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0648\u06c1\u06cc \u062a\u062d\u0641\u0638\u0627\u062a \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u06a9\u0645\u067e\u0646\u06cc .NET, Go, Java, Python \u0627\u0648\u0631 Rust \u06a9\u06d2 \u0633\u0627\u062a\u06be NestJS \u0686\u0644\u0627\u062a\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u0627\u06cc\u06a9 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0633\u06c1\u0648\u0644\u062a \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06c1\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0633\u062f\u06cc\u062f \u0627\u0648\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u067e\u0631 \u0628\u06be\u06cc \u063a\u0648\u0631 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0646\u06d2 \u0627\u06cc\u06a9 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u067e\u0631 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0627\u0646\u0636\u0645\u0627\u0645 \u0627\u0648\u0631 \u0628\u0631\u0622\u0645\u062f\u06cc \u0645\u0627\u0688\u0644\u0632 \u0627\u06c1\u0645 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u062a\u0639\u0645\u06cc\u0644 \u06cc\u0627 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a\u06cc \u0648\u062c\u0648\u06c1\u0627\u062a \u06a9\u06cc \u0628\u0646\u0627 \u067e\u0631 \u0633\u06cc\u0644\u0641 \u06c1\u0648\u0633\u0679\u0646\u06af \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062a\u0648 \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u0627\u0646\u0633\u0679\u0631\u0648\u0645\u06cc\u0646\u0679\u06cc\u0634\u0646 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u06a9\u0627 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u06cc\u06c1 \u0645\u0637\u0644\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u06cc \u062e\u0648\u062f \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06a9\u06cc \u062c\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u062e\u0631 \u0645\u06cc\u06ba\u060c \u062a\u0645\u0627\u0645 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0646\u0641\u06cc\u0633 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0688\u0648\u06cc\u0644\u067e\u0631 \u0627\u0648\u0631 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0631\u0633\u06a9 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u0627 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc API \u0645\u06a9\u0645\u0644 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0627 \u062c\u0648\u0627\u0632 \u067e\u06cc\u0634 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u062c\u06cc\u0633\u06d2 \u0679\u0648\u0644\u0632 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u0627 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u0641\u06cc\u0686\u0631 \u0686\u06cc\u06a9 \u0644\u0633\u0679 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u067e\u0631 \u062a\u062c\u0631\u0628\u0627\u062a \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u06c1\u0645 \u0627\u06cc\u06a9 \u0646\u0645\u0627\u0626\u0646\u062f\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0686\u06be \u06a9\u0646\u0679\u0631\u0648\u0644 \u0634\u062f\u06c1 \u063a\u0644\u0637\u06cc\u0627\u06ba \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">1. Slow database query\n2. Slow external API\n3. Increased error rate\n4. CPU-heavy operation\n5. Slow background job\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0648\u0627\u0642\u0639\u06cc \u06a9\u06cc\u0627 \u0627\u06c1\u0645\u06cc\u062a \u06c1\u06d2\u06d4 <strong>\u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06a9\u0648 \u0648\u062c\u06c1 \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u06a9\u062a\u0646\u0627 \u0648\u0642\u062a \u0644\u06af\u06d2 \u06af\u0627\u061f<\/strong><\/p>\n<p>\u067e\u06c1\u0644\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u067e\u06be\u0631 \u0646\u06cc\u0627 \u0627\u0633\u0679\u06cc\u06a9 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688\u0632 \u06cc\u0627 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u0646\u06d2 \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0639\u0646\u06cc \u062e\u06cc\u0632 \u062a\u0634\u062e\u06cc\u0635 \u06c1\u06d2\u06d4 \u0645\u0634\u0627\u06c1\u062f\u06d2 \u06a9\u06cc \u0627\u0635\u0644 \u0642\u062f\u0631 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u062c \u06a9\u0633\u06cc \u0648\u0627\u0642\u0639\u06d2 \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u06ba 2 \u06af\u06be\u0646\u0679\u06d2 \u0627\u0648\u0631 \u0628\u06c1\u062a\u0631 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be 20 \u0645\u0646\u0679 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06cc\u06c1 \u0641\u0631\u0642 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0635\u0644 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0642\u062f\u0631 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-final-thoughts\">\u062d\u062a\u0645\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a<\/h2>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0627 \u0633\u0628 \u0633\u06d2 \u062f\u0644\u0686\u0633\u067e \u062d\u0635\u06c1 \u0635\u0631\u0641 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 NestJS \u06a9\u06d2 \u067e\u0627\u0633 \u0646\u0634\u0627\u0646\u0627\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4 \u06c1\u0645 \u0633\u0627\u0644\u0648\u06ba \u0633\u06d2 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06d2 \u067e\u06cc\u0634 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0632\u06cc\u0627\u062f\u06c1 \u062f\u0644\u0686\u0633\u067e \u062e\u06cc\u0627\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u062e\u0648\u062f \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0645\u0627\u0688\u0644 \u06a9\u0627 \u062d\u0635\u06c1 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632\u060c \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u067e\u0627\u0626\u067e\u0633\u060c \u0642\u0637\u0627\u0631 \u06a9\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0648\u063a\u06cc\u0631\u06c1 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0633\u0648\u0686\u06cc\u06ba \u062c\u0646 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba NestJS \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0679\u06a9\u0691\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0639\u0646\u06cc \u062e\u06cc\u0632 \u0627\u0637\u0644\u0627\u0642 \u06a9\u06cc \u062d\u062f \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0627\u0646 \u062d\u062f\u0648\u062f \u06a9\u0648 \u0633\u0645\u062c\u06be \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u06d2 \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u062a\u0631 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u0633\u06d2 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0644\u06af \u0646\u0645\u0627\u0626\u0646\u062f\u06af\u06cc \u0633\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0627\u0646 \u062a\u0635\u0648\u0631\u0627\u062a \u067e\u0631 \u0627\u0633\u062a\u0648\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0633\u0645\u062c\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u0628\u0691\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba\u060c \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0622\u06af\u0627\u06c1\u06cc \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0645\u0633\u0627\u0626\u0644 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06d2 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u062a\u0639\u0644\u0642 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 NestJS \u06a9\u0627 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 + APM + \u0644\u0627\u06af \u0627\u06cc\u06af\u0631\u06cc\u06af\u06cc\u0634\u0646 + \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 + \u0688\u0633\u0679\u0631\u06cc \u0628\u06cc\u0648\u0679\u0688 \u0679\u0631\u06cc\u06a9\u0646\u06af \u0648\u063a\u06cc\u0631\u06c1 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0645\u062e\u062a\u0644\u0641 \u062e\u062f\u0634\u0627\u062a \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642\u060c \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u060c \u0627\u062c\u0632\u0627\u0621 \u06a9\u06cc \u062d\u062f\u0648\u062f\u060c \u0627\u0648\u0631 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06d2 \u0622\u0644\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u06d2 \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u0639\u0627\u0645 \u0633\u06cc\u0645\u0646\u0679\u06a9\u0633\u060c \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u06cc \u062a\u0628\u0644\u06cc\u063a\u060c \u0627\u0646\u0679\u0631\u0622\u067e\u0631\u06cc\u0628\u0644\u0679\u06cc\u060c \u0627\u0648\u0631 \u0648\u06cc\u0646\u0688\u0631 \u06a9\u06cc \u063a\u06cc\u0631\u062c\u0627\u0646\u0628\u062f\u0627\u0631\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u0628\u0632\u0631\u0648\u06cc\u0628\u0644\u0679\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a\u060c \u062a\u0635\u0648\u0631\u0627\u062a\u060c \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u0627\u0648\u0631 \u062a\u062c\u0632\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0639\u0644\u06cc\u062d\u062f\u06af\u06cc \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u06c1\u0631 \u067e\u0631\u062a \u06a9\u0648 \u0627\u0633 \u0628\u0627\u062a \u067e\u0631 \u062a\u0648\u062c\u06c1 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1 \u06a9\u06cc\u0627 \u0628\u06c1\u062a\u0631 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06c1\u0630\u0627\u060c \u0627\u06af\u0631 \u0622\u067e \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0626\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0645\u06cc\u06ba \u062c\u0633 \u0633\u0627\u062f\u06c1 \u062a\u0631\u06cc\u0646 \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u0648\u06ba \u06af\u0627 \u0648\u06c1 \u06cc\u06c1 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">Logs\nWhat happened?\n\nMetrics\nHow often is it happening?\n\nTraces\nWhat happened during this operation?\n\nProfiles\nWhere is the runtime spending resources?\n\nFramework-aware instrumentation\nWhat does the framework already know about how this operation happened?\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0646\u06a9\u0634\u0646 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0631\u0648\u0627\u06cc\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06c1\u0645\u0627\u0631\u06cc \u0645\u062f\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0648\u062c\u0648\u062f \u06c1\u06cc\u06ba\u06d4 <strong>\u062a\u062d\u0631\u06cc\u0631<\/strong> \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06cc\u06c1 \u0631\u0648\u0679\u0646\u06af\u060c \u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u062c\u06cc\u06a9\u0634\u0646\u060c \u062a\u0648\u062b\u06cc\u0642\u060c \u0645\u0688\u0644 \u0648\u06cc\u0626\u0631\u060c \u062a\u0635\u062f\u06cc\u0642\u060c \u0642\u0637\u0627\u0631\u060c \u0634\u06cc\u0688\u0648\u0644\u0646\u06af\u060c \u0627\u0648\u0631 \u0628\u06c1\u062a \u0633\u06d2 \u062f\u0648\u0633\u0631\u06d2 \u0627\u062c\u0632\u0627\u0621 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06cc\u06c1 \u0628\u06be\u06cc \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633 \u06a9\u06d2 \u067e\u0631\u0632\u06d2 \u06a9\u06cc\u0633\u06d2 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0648\u06c1\u06cc \u0639\u0644\u0645 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u06c1\u0645\u0627\u0631\u06cc \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635\u060c \u067e\u0631\u0648\u0641\u0627\u0626\u0644\u060c \u0679\u0631\u06cc\u0633\u060c \u067e\u06cc\u0645\u0627\u0626\u0634 \u0627\u0648\u0631 \u0688\u06cc\u0628\u06af \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u06c1\u0645\u0627\u0631\u06cc \u0645\u062f\u062f \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u0635\u0631\u0641 \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u0627 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u0633\u0627\u062e\u062a \u06a9\u06cc\u0633\u06d2 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0686\u06be \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 <strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/strong>.<\/p>\n<p>\u0627\u0648\u0631 \u06cc\u06c1 \u0642\u06cc\u0645\u062a\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06c1\u06d2\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0627\u0648\u0631 NestJS \u06cc\u0642\u06cc\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06d2 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06c1\u0644\u0627 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0644\u06cc\u06a9\u0646 NestJS Observe \u062f\u0644\u0686\u0633\u067e \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u062e\u0635\u0648\u0635 \u0633\u0648\u0627\u0644\u0627\u062a \u067e\u0648\u0686\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u0633\u0645\u062c\u06be\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u061f \u0646\u0641\u0627\u0630 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u0626\u06cc\u06d2 \u0645\u0633\u0626\u0644\u06c1 \u0637\u06d2 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":30428,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-30427","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/30427","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=30427"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/30427\/revisions"}],"predecessor-version":[{"id":30429,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/30427\/revisions\/30429"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media\/30428"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=30427"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=30427"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=30427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}