{"id":91505,"date":"2025-01-06T10:42:29","date_gmt":"2025-01-06T07:12:29","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/"},"modified":"2025-01-06T10:42:29","modified_gmt":"2025-01-06T07:12:29","slug":"code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/","title":{"rendered":"\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u06a9\u0646\u06cc\u062f: \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f"},"content":{"rendered":"<div data-article-id=\"2029699\" id=\"article-body\">\n<p>\u062f\u0631 \u0642\u0644\u0645\u0631\u0648 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0648 \u0631\u06cc\u0632\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u062a\u062c\u0633\u0645 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 \u062d\u06cc\u0627\u062a\u06cc\u200c\u062a\u0631 \u0627\u0632 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0633\u062a\u06cc \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u06af\u0630\u0634\u062a\u0647 \u0627\u0633\u062a. \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams Python\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u06a9\u062f \u0645\u062d\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u062a\u06a9\u0627\u0645\u0644 \u0645\u06cc \u06cc\u0627\u0628\u0646\u062f. \u0686\u0646\u062f \u062e\u0637 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0631\u0627\u06cc \u062a\u062c\u0633\u0645 \u0645\u0639\u0645\u0627\u0631\u06cc \u0647\u0627\u06cc \u0627\u0628\u0631\u06cc\u060c \u062a\u0648\u067e\u0648\u0644\u0648\u0698\u06cc \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u06cc\u0627 \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a. \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u06a9\u0647 \u0627\u0633\u0646\u0627\u062f \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u062f\u0642\u06cc\u0642 \u0648 \u0628\u0647\u200c\u0631\u0648\u0632 \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f\u060c \u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0686\u0646\u062f \u0627\u0628\u0631\u06cc\u060c \u0686\u0647 \u062e\u0648\u0634\u0647\u200c\u0647\u0627\u06cc Kubernetes \u06cc\u0627 \u0631\u0627\u0647\u200c\u062d\u0644\u200c\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u0628\u06cc \u062f\u0631\u062f\u0633\u0631 \u0628\u0631\u0627\u06cc \u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0634\u0645\u0627 \u0628\u0627 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0634\u0645\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a\u060c \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645\u060c \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0637\u0631\u062d\u200c\u0647\u0627\u06cc \u0633\u0637\u062d \u0628\u0627\u0644\u0627 (HLD) \u0628\u0631\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0648 \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06af\u0630\u0627\u0631\u06cc\u0645.<\/p>\n<ul>\n<li>\n<strong>\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646:<\/strong> \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0627\u0632 \u06a9\u062f \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u0646\u0647\u0627 \u0628\u0627 \u0633\u06cc\u0633\u062a\u0645 \u062f\u0631 \u062d\u0627\u0644 \u062a\u06a9\u0627\u0645\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u0645\u0627\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u06a9\u0646\u062a\u0631\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc:<\/strong> \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0647\u0646\u062f \u06a9\u0647 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0635\u0631\u06cc \u0628\u0627 \u067e\u0627\u06cc\u062a\u0648\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u0648 \u06a9\u0646\u062a\u0631\u0644 \u062f\u0642\u06cc\u0642\u06cc \u0628\u0631 \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0627\u0635\u0631 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f.<\/li>\n<li>\n<strong>\u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0628\u0631\u06cc:<\/strong> \u0627\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc AWS\u060c Azure\u060c GCP \u0648 on-premise \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0627\u0628\u0632\u0627\u0631\u06cc \u0647\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc \u062a\u062c\u0633\u0645 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u0686\u0646\u062f \u0627\u0628\u0631\u06cc \u0648 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0645\u0642\u06cc\u0627\u0633 \u067e\u0630\u06cc\u0631:<\/strong> \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9 \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062a\u0648\u0632\u06cc\u0639 \u0634\u062f\u0647 \u0628\u0632\u0631\u06af\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0633\u0637\u0648\u062d \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u0646\u062f.<\/li>\n<\/ul>\n<ul>\n<li>OnPrem<\/li>\n<li>AWS<\/li>\n<li>\u0644\u0627\u062c\u0648\u0631\u062f\u06cc<\/li>\n<li>GCP<\/li>\n<li>IBM<\/li>\n<li>Kubernetes (K8s)<\/li>\n<li>AlibabaCloud<\/li>\n<li>OCI (Oracle Cloud Infrastructure)<\/li>\n<li>OpenStack<\/li>\n<li>Firebase<\/li>\n<li>DigitalOcean<\/li>\n<li>\u0627\u0644\u0627\u0633\u062a\u06cc\u06a9<\/li>\n<li>\u062e\u0627\u0631\u062c \u0627\u0632 \u0645\u0642\u06cc\u0627\u0633<\/li>\n<li>\u0639\u0645\u0648\u0645\u06cc<\/li>\n<li>\u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc<\/li>\n<li>SaaS<\/li>\n<li>\u0645\u062f\u0644 C4<\/li>\n<li>\u0633\u0641\u0627\u0631\u0634\u06cc<\/li>\n<\/ul>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0628\u0627 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u060c \u0628\u0627\u06cc\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 0: \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627<\/strong><\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams Python \u062f\u0631 MacOS\/Windows\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f Graphviz \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f. Graphviz \u0627\u0628\u0632\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0646\u0645\u0627\u06cc\u0634 \u0647\u0627\u06cc \u0628\u0635\u0631\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0627\u0632 macOS \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Graphviz \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Homebrew \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>brew install graphviz\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0627\u0632 \u0648\u06cc\u0646\u062f\u0648\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u0631\u0627\u062d\u0644 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f<\/p>\n<ol>\n<li>\u0646\u0635\u0628 \u06af\u0631 Graphviz \u0631\u0627 \u0627\u0632 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0631\u0633\u0645\u06cc Graphviz Download Page \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0646\u0635\u0628 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0631\u0627\u062d\u0644 \u0646\u0635\u0628 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062f\u0631 \u062d\u06cc\u0646 \u0646\u0635\u0628\u060c \u062d\u062a\u0645\u0627 \u06af\u0632\u06cc\u0646\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 Graphviz \u0631\u0627 \u0628\u0647 PATH \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0639\u0644\u0627\u0645\u062a \u0628\u0632\u0646\u06cc\u062f.<\/li>\n<\/ol>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 1: \u0646\u0635\u0628<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"n\">pip<\/span> <span class=\"n\">install<\/span> <span class=\"n\">diagrams<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0645\u0631\u062d\u0644\u0647 2: \u0627\u0648\u0644\u06cc\u0646 \u0646\u0645\u0648\u062f\u0627\u0631 \u0634\u0645\u0627<\/strong><\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0646\u0645\u0648\u062f\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u0645\u0639\u0645\u0627\u0631\u06cc \u0627\u0633\u0627\u0633\u06cc \u0648\u0628 \u0631\u0627 \u062f\u0631 AWS \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">diagrams<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Diagram<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">EC2<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.network<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ELB<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.database<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RDS<\/span>\n\n<span class=\"k\">with<\/span> <span class=\"nc\">Diagram<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Simple AWS Architecture<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">show<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">lb<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">ELB<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Load Balancer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">web<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">EC2<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Web Server<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">db<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">RDS<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Database<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">lb<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">web<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">db<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u062f\u0627\u0642\u0644 \u06a9\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u062d\u0648\u0647 \u062c\u0631\u06cc\u0627\u0646 \u062a\u0631\u0627\u0641\u06cc\u06a9 \u0627\u0632 Load Balancer \u0628\u0647 \u0648\u0628 \u0633\u0631\u0648\u0631 \u0648 \u0633\u067e\u0633 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u062a\u062c\u0633\u0645 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0642\u062f\u0631\u062a \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams \u0627\u0633\u062a: \u0633\u0631\u06cc\u0639\u060c \u0634\u0647\u0648\u062f\u06cc \u0648 \u0628\u0633\u06cc\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0646\u0638\u06cc\u0645 \u0627\u0633\u062a. \u0648 \u0627\u06cc\u0646 \u062a\u0627\u0632\u0647 \u0634\u0631\u0648\u0639 \u0627\u0633\u062a\u2014 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627 \u0648 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u062a\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0647 \u062f\u0631 \u0628\u062e\u0634\u200c\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0622\u0646\u0647\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\" >\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%DA%AF%D8%B1%D9%88%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D9%88%D9%84%D9%81%D9%87_%D9%87%D8%A7_%D8%AE%D9%88%D8%B4%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\" >\u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0645\u0648\u0644\u0641\u0647 \u0647\u0627 (\u062e\u0648\u0634\u0647 \u0628\u0646\u062f\u06cc)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA_%D9%87%D8%A7\" >\u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_%DA%86%D9%86%D8%AF_%D8%A7%D8%A8%D8%B1%DB%8C_%D9%88_%D8%AF%D8%B1_%D9%85%D8%AD%D9%84\" >\u062a\u0631\u06a9\u06cc\u0628 \u0645\u0639\u0645\u0627\u0631\u06cc \u0647\u0627\u06cc \u0686\u0646\u062f \u0627\u0628\u0631\u06cc \u0648 \u062f\u0631 \u0645\u062d\u0644<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%DA%86%D8%A7%D9%84%D8%B4_%D9%87%D8%A7_%D9%88_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7\" >\u0686\u0627\u0644\u0634 \u0647\u0627 \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D9%85%D8%AE%D8%B2%D9%86_GitHub\" >\u0645\u062e\u0632\u0646 GitHub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D9%85%D8%B1%D8%AC%D8%B9\" >\u0645\u0631\u062c\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/code-your-diagrams-automate-architecture-with-pythons-diagrams-library-4o5o\/#%D8%B3%D9%84%D8%A8_%D9%85%D8%B3%D8%A6%D9%88%D9%84%DB%8C%D8%AA\" >\u0633\u0644\u0628 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a:<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%DB%8C%DA%98%DA%AF%DB%8C_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87\"><\/span>\n<p>  \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"%DA%AF%D8%B1%D9%88%D9%87_%D8%A8%D9%86%D8%AF%DB%8C_%D9%85%D9%88%D9%84%D9%81%D9%87_%D9%87%D8%A7_%D8%AE%D9%88%D8%B4%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0645\u0648\u0644\u0641\u0647 \u0647\u0627 (\u062e\u0648\u0634\u0647 \u0628\u0646\u062f\u06cc)<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0648\u0644\u0641\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0634\u0647 \u0647\u0627\u06cc\u06cc \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0633\u0637\u0648\u062d \u0645\u062e\u062a\u0644\u0641 \u06cc\u0627 \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0639\u0645\u0627\u0631\u06cc \u062e\u0648\u062f \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">diagrams<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Cluster<\/span><span class=\"p\">,<\/span> <span class=\"n\">Diagram<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">EC2<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.network<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ELB<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.database<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RDS<\/span>\n\n<span class=\"k\">with<\/span> <span class=\"nc\">Diagram<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">AWS Architecture with Clustering<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">show<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Web Tier<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">lb<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">ELB<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Load Balancer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">web_servers<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span><span class=\"nc\">EC2<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Web 1<\/span><span class=\"sh\">\"<\/span><span class=\"p\">),<\/span> <span class=\"nc\">EC2<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Web 2<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)]<\/span>\n\n    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Database Tier<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">db_primary<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">RDS<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Primary DB<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">db_replica<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">RDS<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Replica DB<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"n\">lb<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">web_servers<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">db_primary<\/span>\n    <span class=\"n\">db_primary<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">db_replica<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmquowwvm52b52f8ybnx7.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"615\" title=\"\"><\/p>\n<p>\u0645\u0627 \u0627\u0632 Cluster() \u0628\u0631\u0627\u06cc \u06af\u0631\u0648\u0647 \u0628\u0646\u062f\u06cc \u0648\u0628 \u0633\u0631\u0648\u0631\u0647\u0627 \u0648 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0627 \u062a\u062c\u0633\u0645 \u0644\u0627\u06cc\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u062f\u0631\u06a9 \u0646\u0645\u0648\u062f\u0627\u0631 \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%DA%A9%D8%A7%D9%85%D9%BE%D9%88%D9%86%D9%86%D8%AA_%D9%87%D8%A7\"><\/span>\n<p>  \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0628\u0631\u0686\u0633\u0628 \u0647\u0627\u060c \u0631\u0646\u06af \u0647\u0627 \u0648 \u062d\u062a\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0627\u062c\u0632\u0627\u06cc \u062e\u0627\u0635 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u062e\u0627\u0631\u062c\u06cc \u0631\u0627 \u0627\u0632 \u0645\u062d\u0644\u06cc \u06cc\u0627 \u062d\u062a\u06cc \u0627\u0632 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<ul>\n<li><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0646\u0645\u0627\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0645\u062d\u0644\u06cc<\/strong><\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u0646\u0645\u0627\u062f\u06cc \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c a <code>custom_icon.png<\/code> \u0641\u0627\u06cc\u0644)\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u062c\u0632\u0621 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u062f\u0631 \u0646\u0645\u0648\u062f\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u06a9\u062f \u0632\u06cc\u0631 \u0646\u062d\u0648\u0647 \u0627\u0641\u0632\u0648\u062f\u0646 \u06cc\u06a9 \u0646\u0645\u0627\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0641\u0627\u06cc\u0644 \u0645\u062d\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">diagrams.custom<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Custom<\/span>\n<span class=\"k\">with<\/span> <span class=\"nc\">Diagram<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Custom Service Architecture<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">show<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">custom_service<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Custom<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">My Custom Service<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">.\/custom_icon.png<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><code>.\/custom_icon.png<\/code>  \u0645\u0633\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0644\u06cc \u0634\u0645\u0627 \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feka1jnlccxxr0chrdcf2.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"768\" height=\"598\" title=\"\"><\/p>\n<ul>\n<li><strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0646\u0645\u0627\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0631\u0627\u0647 \u062f\u0648\u0631<\/strong><\/li>\n<\/ul>\n<p>\u0628\u0647 \u0637\u0648\u0631 \u0645\u0634\u0627\u0628\u0647\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 \u06cc\u06a9 \u0645\u0646\u0628\u0639 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u06cc \u062f\u0627\u0646\u0644\u0648\u062f \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 URL \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0646\u0645\u0648\u062f\u0627\u0631 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062f\u0627\u062f\u0646 \u0645\u0633\u06cc\u0631 \u0631\u0627\u0647 \u062f\u0648\u0631 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0627\u0632 \u0646\u0645\u0627\u062f\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0632 \u06cc\u06a9 URL \u0631\u0627\u0647 \u062f\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">diagrams<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Diagram<\/span><span class=\"p\">,<\/span> <span class=\"n\">Cluster<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.custom<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Custom<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">urllib.request<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">urlretrieve<\/span>\n\n<span class=\"k\">with<\/span> <span class=\"nc\">Diagram<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Custom with remote icons<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">show<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">,<\/span> <span class=\"n\">filename<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">custom_remote<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">direction<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">LR<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n\n  <span class=\"c1\"># download the icon image file\n<\/span>  <span class=\"n\">diagrams_url<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">https:\/\/github.com\/mingrammer\/diagrams\/raw\/master\/assets\/img\/diagrams.png<\/span><span class=\"sh\">\"<\/span>\n  <span class=\"n\">diagrams_icon<\/span> <span class=\"o\">=<\/span> <span class=\"sh\">\"<\/span><span class=\"s\">diagrams.png<\/span><span class=\"sh\">\"<\/span>\n  <span class=\"nf\">urlretrieve<\/span><span class=\"p\">(<\/span><span class=\"n\">diagrams_url<\/span><span class=\"p\">,<\/span> <span class=\"n\">diagrams_icon<\/span><span class=\"p\">)<\/span>\n\n  <span class=\"n\">diagrams<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Custom<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Diagrams<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">diagrams_icon<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjecxb81oxe1w1fwx0lhx.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"636\" height=\"598\" title=\"\"><\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u0639\u0637\u0627\u0641 \u067e\u0630\u06cc\u0631\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc \u0633\u0627\u0632\u0645\u0627\u0646 \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B1%DA%A9%DB%8C%D8%A8_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_%DA%86%D9%86%D8%AF_%D8%A7%D8%A8%D8%B1%DB%8C_%D9%88_%D8%AF%D8%B1_%D9%85%D8%AD%D9%84\"><\/span>\n<p>  \u062a\u0631\u06a9\u06cc\u0628 \u0645\u0639\u0645\u0627\u0631\u06cc \u0647\u0627\u06cc \u0686\u0646\u062f \u0627\u0628\u0631\u06cc \u0648 \u062f\u0631 \u0645\u062d\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0648 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0628\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u0627\u06cc\u0646 \u0639\u0646\u0627\u0635\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u0645\u0627\u06cc \u0648\u0627\u062d\u062f \u0622\u0633\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0639\u0645\u0627\u0631\u06cc \u0647\u0627\u06cc \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u062a\u062c\u0633\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight python\"><code><span class=\"kn\">from<\/span> <span class=\"n\">diagrams<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Diagram<\/span><span class=\"p\">,<\/span> <span class=\"n\">Cluster<\/span><span class=\"p\">,<\/span> <span class=\"n\">Edge<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">EC2<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.network<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ELB<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.aws.database<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">RDS<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.gcp.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">GCE<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.azure.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">VM<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.onprem.compute<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Server<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.onprem.client<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">User<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.generic.network<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Firewall<\/span><span class=\"p\">,<\/span> <span class=\"n\">Switch<\/span><span class=\"p\">,<\/span> <span class=\"n\">Router<\/span>\n<span class=\"kn\">from<\/span> <span class=\"n\">diagrams.generic.storage<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Storage<\/span>  \n\n<span class=\"k\">with<\/span> <span class=\"nc\">Diagram<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Multi-Cloud and On-Prem Architecture<\/span><span class=\"sh\">\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">show<\/span><span class=\"o\">=<\/span><span class=\"bp\">False<\/span><span class=\"p\">):<\/span>\n\n    <span class=\"c1\"># On-premise infrastructure\n<\/span>    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">On-Premise Data Center<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">users<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">User<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Users<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">firewall<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Firewall<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Firewall<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Router<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Router<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">switch<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Switch<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Switch<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">onprem_server<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Server<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Local Server<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">storage<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Storage<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Storage<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"n\">users<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">firewall<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">router<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">switch<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">onprem_server<\/span>\n        <span class=\"n\">onprem_server<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">storage<\/span>\n\n    <span class=\"c1\"># AWS infrastructure\n<\/span>    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">AWS Cloud<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">aws_lb<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">ELB<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Load Balancer<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">aws_ec2<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">EC2<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">App Servers<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">aws_rds<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">RDS<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Database<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"n\">aws_lb<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">aws_ec2<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">aws_rds<\/span>\n\n    <span class=\"c1\"># GCP infrastructure\n<\/span>    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">GCP Cloud<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">gcp_gce<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">GCE<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Compute Engine<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">gcp_storage<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Storage<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">GCP Storage<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"n\">gcp_gce<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">gcp_storage<\/span>\n\n    <span class=\"c1\"># Azure infrastructure\n<\/span>    <span class=\"k\">with<\/span> <span class=\"nc\">Cluster<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Azure Cloud<\/span><span class=\"sh\">\"<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">azure_vm<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">VM<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Virtual Machines<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">azure_storage<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Storage<\/span><span class=\"p\">(<\/span><span class=\"sh\">\"<\/span><span class=\"s\">Azure Storage<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"n\">azure_vm<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"n\">azure_storage<\/span>\n\n    <span class=\"c1\"># Connecting on-prem to cloud components via VPN\n<\/span>    <span class=\"n\">router<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"nc\">Edge<\/span><span class=\"p\">(<\/span><span class=\"n\">label<\/span><span class=\"o\">=<\/span><span class=\"sh\">\"<\/span><span class=\"s\">VPN<\/span><span class=\"sh\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"p\">[<\/span><span class=\"n\">aws_lb<\/span><span class=\"p\">,<\/span> <span class=\"n\">gcp_gce<\/span><span class=\"p\">,<\/span> <span class=\"n\">azure_vm<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fas9tr42u1ilj2o2v77kh.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"681\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%A7%D9%84%D8%B4_%D9%87%D8%A7_%D9%88_%D9%85%D8%AD%D8%AF%D9%88%D8%AF%DB%8C%D8%AA_%D9%87%D8%A7\"><\/span>\n<p>  \u0686\u0627\u0644\u0634 \u0647\u0627 \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631\u0686\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0639\u0645\u0644\u06a9\u0631\u062f:<\/strong> \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0628\u0632\u0631\u06af \u0628\u0627 \u0635\u062f\u0647\u0627 \u062c\u0632\u0621 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0646\u062f \u0628\u0627\u0634\u062f.<\/li>\n<li>\n<strong>\u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0633\u0627\u0632\u06cc:<\/strong> \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 Diagrams \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0627\u062c\u0632\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f\u060c \u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u0646\u0627\u0635\u0631 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0627\u0631 \u0627\u0636\u0627\u0641\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<li>\n<strong>\u062e\u0631\u0648\u062c\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9:<\/strong> \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062b\u0627\u0628\u062a \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u06af\u0631 \u0628\u0647 \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u062a\u0639\u0627\u0645\u0644\u06cc \u06cc\u0627 \u0628\u0644\u0627\u062f\u0631\u0646\u06af \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams Python \u0627\u0628\u0632\u0627\u0631\u06cc \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u0627\u0633\u062a. \u0628\u0627 \u0627\u062f\u063a\u0627\u0645 \u0622\u0646 \u062f\u0631 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062e\u0648\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062e\u0648\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. \u0686\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0645\u0633\u062a\u0646\u062f\u0633\u0627\u0632\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0628\u0627\u0634\u06cc\u062f \u0648 \u0686\u0647 \u0645\u0639\u0645\u0627\u0631\u06cc \u0647\u0627\u06cc \u0645\u06cc\u06a9\u0631\u0648\u0633\u0631\u0648\u06cc\u0633 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0631\u0627 \u0628\u0647 \u062a\u0635\u0648\u06cc\u0631 \u0628\u06a9\u0634\u06cc\u062f\u060c \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627 \u0631\u0648\u0634\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0648 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u062a\u062c\u0633\u0645 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0634\u0645\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftz9kapmws7zvhg85d5s.jpg\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" loading=\"lazy\" width=\"800\" height=\"800\" title=\"\"><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AE%D8%B2%D9%86_GitHub\"><\/span>\n<p>  \u0645\u062e\u0632\u0646 GitHub<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u0645\u0646\u0628\u0639 \u06a9\u0627\u0645\u0644 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0648\u0628\u0644\u0627\u06af \u062f\u0631 GitHub \u0645\u0646 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AC%D8%B9\"><\/span>\n<p>  \u0645\u0631\u062c\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D9%84%D8%A8_%D9%85%D8%B3%D8%A6%D9%88%D9%84%DB%8C%D8%AA\"><\/span>\n<p>  \u0633\u0644\u0628 \u0645\u0633\u0626\u0648\u0644\u06cc\u062a:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0648\u0628\u0644\u0627\u06af \u0634\u062e\u0635\u06cc \u0627\u0633\u062a. \u0646\u0638\u0631\u0627\u062a \u0648 \u0646\u0638\u0631\u0627\u062a \u0628\u06cc\u0627\u0646 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0641\u0642\u0637 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0627\u0633\u062a \u0648 \u0628\u06cc\u0627\u0646\u06af\u0631 \u0646\u0638\u0631\u0627\u062a \u0647\u06cc\u0686 \u0633\u0627\u0632\u0645\u0627\u0646 \u06cc\u0627 \u0641\u0631\u062f\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062d\u0631\u0641\u0647 \u0627\u06cc \u06cc\u0627 \u0634\u062e\u0635\u06cc \u0628\u0627 \u0622\u0646\u0647\u0627 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0642\u0644\u0645\u0631\u0648 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0648 \u0631\u06cc\u0632\u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627 \u062d\u06a9\u0645\u0631\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u062a\u062c\u0633\u0645 \u0645\u0639\u0645\u0627\u0631\u06cc\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0628\u0633\u06cc\u0627\u0631 \u062d\u06cc\u0627\u062a\u06cc\u200c\u062a\u0631 \u0627\u0632 \u0647\u0645\u06cc\u0634\u0647 \u0627\u0633\u062a. \u0632\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0633\u062a\u06cc \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u0645\u0639\u0645\u0627\u0631\u06cc \u06af\u0630\u0634\u062a\u0647 \u0627\u0633\u062a. \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Diagrams Python\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0648\u062f\u0627\u0631\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u06a9\u062f \u0645\u062d\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u06a9\u0646\u0627\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u062a\u06a9\u0627\u0645\u0644 \u0645\u06cc \u06cc\u0627\u0628\u0646\u062f. \u0686\u0646\u062f \u062e\u0637 \u067e\u0627\u06cc\u062a\u0648\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":91506,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-91505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=91505"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/91505\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/91506"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=91505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=91505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=91505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}