ازگر کا استعمال کرتے ہوئے سسٹم ڈیزائن ڈایاگرام کیسے بنایا جائے۔

سسٹم آرکیٹیکچر ڈیزائن ڈایاگرام بنانا تکنیکی دستاویزات کا ایک اہم حصہ ہے۔ جیسے جیسے نظام کی پیچیدگی بڑھتی ہے، ٹیموں کے اندر وضاحت زیادہ اہم ہو جاتی ہے۔

تاہم، کینوس جیسے ٹولز کا استعمال کرتے ہوئے شروع سے ڈایاگرام بنانا ہمیشہ کارگر نہیں ہوتا ہے۔

خوش قسمتی سے، diagram-as-code اپروچ کا استعمال کرتے ہوئے ڈایاگرام بنانے کا ایک اور طریقہ ہے۔ اس نقطہ نظر میں، خاکہ کے اجزاء کو ڈرائنگ کرنے کے بجائے، آپ ان کی وضاحت کے لیے پہلے سے طے شدہ نحو کا استعمال کرتے ہیں۔

انڈیکس

کوڈ ڈایاگرام کے فوائد:

  • تبدیلیاں ورژن کنٹرول کے ذریعے ٹریک کی جاتی ہیں۔

  • شروع سے ڈرائنگ وقت بچاتا ہے، یا دستی فارمیٹنگ ٹول سے وقت نکالتی ہے۔

  • کوڈ ٹولز کے طور پر زیادہ تر ڈایاگرامنگ معیاری ٹکنالوجی کے آئیکنز جیسے ڈیٹا بیس، اسٹوریج بکٹس، لوڈ بیلنسرز وغیرہ کو سپورٹ کرتی ہے۔

  • آپ اپنی CI/CD پائپ لائن یا کوڈ کا استعمال کرتے ہوئے دستاویز کی تعمیر سے خود بخود خاکے تیار کر سکتے ہیں۔

شرائط اور تنصیب

اس ٹیوٹوریل میں، آپ سیکھیں گے کہ Python کا استعمال کرتے ہوئے ڈایاگرام کیسے بنانا ہے۔ خاکہ لائبریری بنیادی شرائط یہ ہیں:

  • Python 3.7+

  • بیج Python پیکجوں کو انسٹال کرنے کے لیے

  • گراف کا تصور آؤٹ پٹ امیجز پیش کرنے کے لیے آپریٹنگ سسٹم پر انسٹال کیا گیا ہے۔

  • ازگر پیکج:

    pip install diagrams
    
  • ٹرمینل اس طرح فائل چلا رہا ہے:

    python diagram.py
    

خاکہ کیا ہے؟

ڈائیگرام ایک Python لائبریری ہے جو آپ کو Python کوڈ کے ساتھ کلاؤڈ سسٹم آرکیٹیکچر بنانے کی اجازت دیتی ہے۔ متعدد فراہم کنندگان کو سپورٹ کرتا ہے جیسے Azure، GCP، AWS، وغیرہ۔

اس ٹیوٹوریل کے اختتام تک آپ سمجھ جائیں گے کہ یہ خاکہ کیسے بنایا گیا تھا۔

پہلا خاکہ

سب سے پہلے، یقینی بنائیں کہ ترتیبات کو شرائط کے مطابق مکمل کیا گیا ہے. پھر استعمال کرتے ہوئے ایک ازگر فائل بنائیں: .py ایکسٹینشن شامل کریں اور درج ذیل کوڈ شامل کریں:

from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Practice Architecture"):
    EC2("api-server")

آئیے پروگرام کو لائن بہ سطر سمجھیں۔

سب سے پہلے، وہاں درآمدات ہیں. Diagram:

from diagrams import Diagram

سوچو Diagram ایک خالی کینوس کی طرح، آپ جو کچھ بھی کھینچتے ہیں وہ اس میں چلا جاتا ہے۔ Diagram عالمی خاکہ سیاق و سباق کی نمائندگی کرتا ہے۔

پھر نوڈ کی قسم حاصل کریں۔ کوئی راستہ نہیں لفظ فن تعمیر کے ایک جزو کی نمائندگی کرتا ہے۔ مثال کے طور پر، ECS، Lambda، Service، اور Firewall وسائل کی اقسام ہیں۔

from diagrams.aws.compute import EC2

نوڈ آبجیکٹ تین حصوں پر مشتمل ہے: فراہم کنندہ, وسائل کی قسماور نام. اوپر کی مثال میں EC2 قسم کے وسائل کا ایک نوڈ۔ compute یہ فراہم کی جاتی ہے۔ aws فراہم کنندہ

یہ ہے EC2 AWS کمپیوٹ گروپ میں ایک نوڈ۔ ہم اس کلاس کو EC2 نوڈ بنانے کے لیے استعمال کریں گے۔

diagrams.aws.compute درآمدی راستہ ہے اور آپ کو اس کا مقام بتاتا ہے۔ EC2 آئیکن واقع ہے۔

diagrams
└── aws
    └── compute
        └── EC2

آپ یہاں مختلف فراہم کنندگان کے لیے مزید سرکاری نوڈ کی اقسام کو تلاش کر سکتے ہیں۔

آئیے فرض کریں کہ آپ کا خاکہ AWS کے تجزیاتی جزو کا استعمال کرتا ہے۔ سب سے پہلے، اوپر اشتراک کردہ نوڈ اقسام کی فہرست میں تجزیات تلاش کریں۔ آپ کی آمدنی کا بیان درج ذیل ہے: from diagrams.aws.analytics import Analytics.

پھر یہ استعمال کرتے ہوئے ایک خاکہ سیاق و سباق بنائیں: with Diagram:

with Diagram("Practice Architecture"):

اپنی مثال پر واپس جائیں، ہم اس طرح ایک خاکہ کے ساتھ ختم کریں گے: Practice Architecture. سب کچھ نیچے انڈینٹ کیا گیا ہے۔ with Diagram یہ اس خاکہ سے تعلق رکھتا ہے۔

اب ایک نوڈ بنائیں۔

EC2("api-server")

یہ اس طرح کے لیبل کے ساتھ ایک EC2 نوڈ بنائے گا: api-server اس کے نیچے.

اور آخر میں، کوڈ کو چلانے کی کوشش کریں۔ اگر آپ نے اپنی ازگر کوڈ فائل کو اس طرح محفوظ کیا ہے: test.pyاسے استعمال کرتے ہوئے چلائیں: python test.py. ڈایاگرام موجودہ فولڈر میں تصویری فائلیں بناتا ہے۔

نوڈس آبجیکٹ کا استعمال کرتے ہوئے ایک نوڈ کی مثال

مختصر میں، عمل مندرجہ ذیل ہے:

Diagrams لائبریری اور Graphviz کا استعمال کرتے ہوئے تصاویر بنانے کے لیے عمل کا بہاؤ

براہ کرم نوٹ کریں کہ ہم بنیادی ڈھانچے کو دستی طور پر ڈرائنگ کرنے کے بجائے بیان کر رہے ہیں۔ میں شبیہیں بنانے اور ترتیب دینے کے بارے میں نہیں سوچتا۔ اس کے بجائے، آپ کو صرف کوڈ کرنا ہے۔ EC2("api-server") خاکہ اس بات کا تعین کرتا ہے کہ اسے کیسے پیش کیا جاتا ہے۔

دو EC2 مثالوں کو شامل کرنے کے لیے ہم اوپر کی مثال کو قدرے بڑھا سکتے ہیں۔

from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Practice Architecture"):
    EC2("api-server")
    EC2("worker")

نوڈس آبجیکٹ کا استعمال کرتے ہوئے دو نوڈس کی مثال

آپ متغیرات کو نوڈ مثالیں تفویض کرسکتے ہیں۔ اس طرح آپ آسانی سے اس کا حوالہ دے سکتے ہیں۔

ذیل کی مثال متغیر تفویض کو ظاہر کرتی ہے۔

from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Practice Architecture"):
    api_server = EC2("api-server")
    worker = EC2("worker")

نوڈس اور ڈیٹا فلوز کو کیسے جوڑیں۔

آپ نے نوڈ بنانے کا طریقہ سیکھا۔ اب دیکھتے ہیں کہ جڑنے کا طریقہ۔

سمت درج ذیل علامتوں سے ظاہر ہوتی ہے۔

  • >> بائیں سے دائیں بہاؤ

  • << مخالف سمت (دائیں سے بائیں)

  • - غیر ہدایت کنکشن کے لیے

آئیے مل کر اس کی ایک مثال دیکھیں۔

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("The three directions"):
    load_balancer = ELB("load-balancer")
    web_server = EC2("web-server")
    database = RDS("database")
    backup_server = EC2("backup-server")

    load_balancer >> web_server
    web_server << database
    database - backup_server

نوڈس کے درمیان رابطوں پر توجہ دیں۔

# Connects load balancer to web server with a left to right arrow
load_balancer >> web_server
    
# Connects web server and database using a right to left arrow
web_server << database

# connects database and web server using a straight line
database - backup_server

نوڈس کو تین طریقوں سے جوڑیں: بائیں سے دائیں تیر، دائیں سے بائیں تیر، اور غیر ہدایت شدہ کنکشن۔

ڈیٹا فلو گروپنگ

آپ ایک نوڈ کو متعدد نوڈس سے جوڑنے کے لیے ازگر کی فہرستیں بھی استعمال کر سکتے ہیں۔ یہ انفرادی نوڈس کو ایک ایک کرکے دوسرے نوڈس سے جوڑنے کی ضرورت کو ختم کرتا ہے۔

آئیے فرض کریں کہ آپ درج ذیل فن تعمیر کو نافذ کرتے ہیں:

                    ┌──► web-1 ───┐
load-balancer ──────┼──► web-2 ───┼──► database
                    └──► web-3 ───┘

سب سے پہلے، لوڈ بیلنسر بنائیں.

load_balancer = ELB("entry-point")

پھر متعدد سرورز بنائیں۔ اس طرح تین الگ الگ متغیر بنانے کے بجائے:

server1 = EC2("web-1")
server2 = EC2("web-2")
server3 = EC2("web-3")

آپ اسے ازگر کی فہرست میں ڈال سکتے ہیں:

web_servers = [
    EC2("web-1"),
    EC2("web-2"),
    EC2("web-3")
]

پھر LB نوڈ کو listload_balancer >> web_servers سے جوڑیں

load_balancer >> web_servers

اس طرح آپ کو دستی طور پر لکھنے کی ضرورت نہیں ہے:

load_balancer >> web_servers[0]
load_balancer >> web_servers[1]
load_balancer >> web_servers[2]

اب ہم پوری فہرست کو ڈیٹا بیس سے جوڑتے ہیں۔

web_servers >> database

یہ نقطہ نظر کوڈ کی فالتو پن کو کم کرنے کے لیے مفید ہے۔ یہ دہرائے جانے والے اجزاء کو نشانہ بنانے میں مدد کرتا ہے جیسے کہ متعدد پوڈز، ورکرز وغیرہ۔

مکمل کوڈ ذیل میں ہے:

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Scaled Web App"):
    load_balancer = ELB("entry-point")

    web_servers = [
        EC2("web-1"),
        EC2("web-2"),
        EC2("web-3")
    ]

    database = RDS("orders-db")

    load_balancer >> web_servers >> database

ڈایاگرام ایک لوڈ بیلنسر دکھا رہا ہے جو تین ویب سرورز سے منسلک ہے جو ایک ڈیٹا بیس سے جڑے ہوئے ہیں۔

کلسٹر

کلسٹرز آپ کو لیبل والے خانوں کے اندر متعلقہ نوڈس کو گروپ کرنے کی اجازت دیتے ہیں۔ کلسٹر کے اندر نوڈس اب بھی بیرونی نوڈس سے جڑ سکتے ہیں۔

چیزوں کو آپس میں منسلک کرنے کے لیے گروپ بندی ضروری ہے۔ یہ تصورات کے اظہار میں مدد کرتا ہے جیسے:

  • درخواست کی پرت

  • ڈیٹا بیس پرت

  • دستیابی زون

  • علاقہ

  • ماحول

  • مائیکرو سروس گروپ

  • کارکنوں کے گروپ

کلسٹر بنانے کے لیے نحو ہے:

with Cluster("Cluster name"):

اس کے نیچے دیے گئے آئٹمز کلسٹر کا حصہ بن جاتے ہیں۔

یہاں ایک مثال ہے جو کلسٹر دکھا رہی ہے:

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS

with Diagram("Shop Platform"):
    with Cluster("Application Tier"):
        apps = [
            EC2("app-1"),
            EC2("app-2")
        ]

    with Cluster("Database Tier"):
        primary_db = RDS("primary-db")
        replica_db = RDS("read-replica")

    apps >> primary_db
    primary_db - replica_db

دو مختلف کلسٹرز کو جوڑنے کی مثال

آپ مندرجہ ذیل نحو کا استعمال کرتے ہوئے گھوںسلا کلسٹر بھی بنا سکتے ہیں:

with Cluster("Production"):

    with Cluster("Backend"):

        with Cluster("API"):
            ...

آئیے اوور لیپنگ کلسٹرز کی ایک زیادہ حقیقت پسندانہ مثال دیکھیں۔

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS

with Diagram("Production Platform"):

    with Cluster("Production Region"):

        with Cluster("Application Tier"):

            with Cluster("API Servers"):
                api1 = EC2("api-1")
                api2 = EC2("api-2")

        database = RDS("main-db")

        api1 >> database
        api2 >> database

یہ مثال دکھاتی ہے: Production Platform بشمول Production Regionیہاں Application Tier. کہ Application Tier دو مزید API سرورز کو گروپ کریں۔ ایک علیحدہ RDS ڈیٹا بیس پروڈکشن کے علاقے میں واقع ہے اور دونوں API سرور اس سے جڑتے ہیں۔

آپ کلسٹرز کو ایک ساتھ انڈینٹ کر کے گھوںسلا کر سکتے ہیں۔ ذیل میں کوڈ کا ٹکڑا دیکھیں۔

with Cluster("Production Region"):

        with Cluster("Application Tier"):

            with Cluster("API Servers"):
                api1 = EC2("api-1")
                api2 = EC2("api-2")

کلسٹر گھونسلے کی مثال

کنارے

کنارے نوڈس کو جوڑنے کا ایک اور طریقہ فراہم کرتے ہیں۔ جنرل کے برعکس >> یا <<کنارے آپ کو خصوصیات شامل کرنے کی اجازت دیتے ہیں جیسے لیبل، رنگ، اور سٹائل۔

میں نے پہلے استعمال کیا:

from diagrams import Diagram

کونے استعمال کرنے کے لیے، شامل کریں:

from diagrams import Diagram, Edge

ابھی جڑیں۔ app کو database کونوں کا استعمال کریں:

# Labeling an edge
app >> Edge(label="SQL queries") >> database

یہ جوڑتا ہے۔ app کو database لیبل شدہ کناروں کا استعمال کرتے ہوئے "SQL queries".

دو نوڈس کو جوڑنے والے کنارے پر لیبل لگائیں۔

آپ کنارے کے رنگ کو بھی اپنی مرضی کے مطابق بنا سکتے ہیں۔

app >> Edge(label="SQL", color="red") >> database

کناروں کو سرخ رنگ دیں۔

آپ لائن سٹائل میں بھی ترمیم کر سکتے ہیں۔

app >> Edge(style="dashed") >> database

دو نوڈس کو جوڑنے کے لیے ڈاٹڈ لائن اسٹائل کا استعمال کریں۔

دیگر دستیاب ایج اسٹائل میں شامل ہیں:

Edge(style="dotted")
Edge(style="bold")

ذیل کی مثال ایک سے زیادہ کنارے کی طرزوں کو یکجا کرتی ہے۔

from diagrams import Diagram, Edge
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS

with Diagram("Payment Service"):
    api = EC2("payment-api")
    database = RDS("payments-db")

    api >> Edge(
        label="payment records",
        color="darkgreen",
        style="dashed"
    ) >> database

ایج اسٹائل، رنگ اور لیبل کو یکجا کرنے کی مثال

کنارے بھی استعمال کیا جا سکتا ہے: << اور -.

نتیجہ

اس ٹیوٹوریل میں، آپ نے سیکھا کہ ڈایاگرام کے طور پر کوڈ کے نقطہ نظر کو استعمال کرنے کا طریقہ بامعنی، مستقل خاکے بنانے کے لیے جو آپ کی ٹیم میں اچھی طرح سے پیمانے پر ہیں۔ یہ معیار اور دیگر ترقیاتی یا دیکھ بھال کے کاموں پر سمجھوتہ کیے بغیر کارکردگی کو بڑھاتا ہے۔

اس ٹیوٹوریل میں بنیادی طور پر AWS اجزاء کا استعمال کیا گیا ہے۔ آپ اس گائیڈ میں دیگر دستیاب فراہم کنندگان کو تلاش کر سکتے ہیں اور اپنی ضروریات کے مطابق خاکے بنا سکتے ہیں۔

آخر تک پڑھنے کا شکریہ۔ اگر آپ کو مضمون سے کچھ حاصل ہوا ہے تو براہ کرم اسے دوسروں کے ساتھ شیئر کریں۔

جڑے رہیں اور اپنا سیکھنے کا سفر جاری رکھیں!

مجھے جوڑیں:

  • LinkedIn: میں Linux، cybersecurity، اور DevOps سے متعلق مواد کا اشتراک کرتا ہوں۔ اگر آپ کو مضمون کارآمد معلوم ہوا تو براہ کرم LinkedIn پر ایک لائک کریں۔

  • ایکس: ہم پری لانچ اپ ڈیٹس اور پردے کے پیچھے کی کہانیاں شیئر کرتے ہیں۔

مبارک کوڈنگ!

اوپر تک سکرول کریں۔