برنامه نویسی

نمودارهای خود را کدنویسی کنید: معماری را با کتابخانه نمودارهای پایتون به صورت خودکار انجام دهید

در قلمرو زیرساخت‌های مدرن، جایی که سرویس‌های ابری و ریزسرویس‌ها حکمرانی می‌کنند، مدیریت و تجسم معماری‌های پیچیده بسیار حیاتی‌تر از همیشه است.

زمان ایجاد و به‌روزرسانی دستی نمودارهای معماری گذشته است. با کتابخانه Diagrams Python، می توانید نمودارهای پویا و کد محور ایجاد کنید که در کنار زیرساخت شما تکامل می یابند. چند خط پایتون برای تجسم معماری های ابری، توپولوژی های شبکه یا تعاملات میکروسرویس کافی است. نمودارها تضمین می‌کنند که اسناد سیستم شما دقیق و به‌روز می‌مانند، چه در حال مدیریت استقرار چند ابری، چه خوشه‌های Kubernetes یا راه‌حل‌های داخلی باشید. این یک راه بی دردسر برای هماهنگی معماری شما با پایگاه کد شما است.

در این پست، قابلیت‌های کتابخانه Diagrams را بررسی می‌کنیم، نحوه ایجاد طرح‌های سطح بالا (HLD) برای زیرساخت‌های ابری و خودکارسازی فرآیند ایجاد نمودارهای معماری را به نمایش می‌گذاریم.

  • اتوماسیون: نمودارهای معماری را مستقیماً از کد خود ایجاد کنید و اطمینان حاصل کنید که آنها با سیستم در حال تکامل به روز می مانند.
  • کنترل برنامه ای: نمودارها به شما این امکان را می دهند که زیرساخت خود را به صورت بصری با پایتون تعریف کنید و کنترل دقیقی بر نحوه نمایش عناصر ارائه دهید.
  • پشتیبانی از چندین ارائه دهنده ابری: این کتابخانه از سیستم‌های AWS، Azure، GCP و on-premise پشتیبانی می‌کند و آن را به ابزاری همه کاره برای تجسم معماری‌های چند ابری و ترکیبی تبدیل می‌کند.
  • مقیاس پذیر: از پروژه های کوچک گرفته تا سیستم های توزیع شده بزرگ، نمودارها می توانند سطوح مختلفی از پیچیدگی را مدیریت کنند.
  • OnPrem
  • AWS
  • لاجوردی
  • GCP
  • IBM
  • Kubernetes (K8s)
  • AlibabaCloud
  • OCI (Oracle Cloud Infrastructure)
  • OpenStack
  • Firebase
  • DigitalOcean
  • الاستیک
  • خارج از مقیاس
  • عمومی
  • برنامه نویسی
  • SaaS
  • مدل C4
  • سفارشی

برای شروع کار با نمودارها، باید کتابخانه را نصب کرده و محیط خود را راه اندازی کنید.

مرحله 0: پیش نیازها

برای ایجاد نمودارها با استفاده از کتابخانه Diagrams Python در MacOS/Windows، ابتدا باید Graphviz را نصب کنید. Graphviz ابزاری است که کتابخانه Diagrams برای تولید نمایش های بصری زیرساخت شما استفاده می کند.

اگر از macOS استفاده می کنید، ساده ترین راه برای نصب Graphviz استفاده از Homebrew است:

brew install graphviz
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر از ویندوز استفاده می کنید، مراحل زیر را دنبال کنید

  1. نصب گر Graphviz را از وب سایت رسمی Graphviz Download Page دانلود کنید.
  2. نصب کننده را اجرا کنید و مراحل نصب را دنبال کنید.
  3. در حین نصب، حتما گزینه ای را که Graphviz را به PATH سیستم شما اضافه می کند، علامت بزنید.

مرحله 1: نصب

pip install diagrams
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: اولین نمودار شما

بیایید یک نمودار ساده ایجاد کنیم که یک معماری اساسی وب را در AWS نشان می دهد.

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

with Diagram("Simple AWS Architecture", show=False):
    lb = ELB("Load Balancer")
    web = EC2("Web Server")
    db = RDS("Database")

    lb >> web >> db

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

با این حداقل کد، می توانید نحوه جریان ترافیک از Load Balancer به وب سرور و سپس به پایگاه داده را تجسم کنید. این قدرت کتابخانه Diagrams است: سریع، شهودی و بسیار قابل تنظیم است. و این تازه شروع است— بسیاری از ویژگی‌ها و مؤلفه‌های پیشرفته‌تر وجود دارد که می‌توانید از آنها استفاده کنید، که در بخش‌های بعدی به بررسی آنها خواهیم پرداخت.

ویژگی های پیشرفته

گروه بندی مولفه ها (خوشه بندی)

شما می توانید مولفه ها را به خوشه هایی گروه بندی کنید تا سطوح مختلف یا گروه بندی های منطقی را در معماری خود نشان دهند.

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

with Diagram("AWS Architecture with Clustering", show=False):
    with Cluster("Web Tier"):
        lb = ELB("Load Balancer")
        web_servers = [EC2("Web 1"), EC2("Web 2")]

    with Cluster("Database Tier"):
        db_primary = RDS("Primary DB")
        db_replica = RDS("Replica DB")

    lb >> web_servers >> db_primary
    db_primary >> db_replica

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

ما از Cluster() برای گروه بندی وب سرورها و پایگاه های داده استفاده می کنیم و با تجسم لایه ها به طور جداگانه درک نمودار را آسان تر می کنیم.

سفارشی سازی کامپوننت ها

نمودارها به شما امکان می دهند برچسب ها، رنگ ها و حتی تصاویر سفارشی را برای نمایش اجزای خاص اضافه کنید. برای مثال، اگر می‌خواهید یک سرویس سفارشی را نشان دهید، می‌توانید تصاویر خارجی را از محلی یا حتی از راه دور اضافه کنید.

  • استفاده از یک نماد سفارشی از یک منبع محلی

اگر نمادی دارید که به صورت محلی ذخیره شده است (به عنوان مثال، a custom_icon.png فایل)، می توانید از آن برای نشان دادن جزء سفارشی خود در نمودار استفاده کنید. کد زیر نحوه افزودن یک نماد سفارشی از سیستم فایل محلی خود را نشان می دهد.

from diagrams.custom import Custom
with Diagram("Custom Service Architecture", show=False):
    custom_service = Custom("My Custom Service", "./custom_icon.png")
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

./custom_icon.png مسیر فایل تصویر محلی شما است.

توضیحات تصویر

  • استفاده از یک نماد سفارشی از یک منبع راه دور

به طور مشابه، می توانید از یک تصویر از یک منبع راه دور استفاده کنید. در اینجا نحوه ی دانلود تصویر از URL و استفاده از آن در نمودار آمده است.

همچنین می توانید با دادن مسیر راه دور به فایل ها از نمادهای سفارشی از یک URL راه دور استفاده کنید.

from diagrams import Diagram, Cluster
from diagrams.custom import Custom
from urllib.request import urlretrieve

with Diagram("Custom with remote icons", show=False, filename="custom_remote", direction="LR"):

  # download the icon image file
  diagrams_url = "https://github.com/mingrammer/diagrams/raw/master/assets/img/diagrams.png"
  diagrams_icon = "diagrams.png"
  urlretrieve(diagrams_url, diagrams_icon)

  diagrams = Custom("Diagrams", diagrams_icon)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

این امکان انعطاف پذیری بیشتری را در طراحی معماری متناسب با نیازهای سازمان شما فراهم می کند.

ترکیب معماری های چند ابری و در محل

ما همچنین می توانیم از ترکیبی از سیستم های داخلی و زیرساخت ابری استفاده کنیم، نمودارها ترکیب این عناصر را در یک نمای واحد آسان می کند. شما می توانید معماری های ترکیبی را به صورت یکپارچه تجسم کنید.

from diagrams import Diagram, Cluster, Edge
from diagrams.aws.compute import EC2
from diagrams.aws.network import ELB
from diagrams.aws.database import RDS
from diagrams.gcp.compute import GCE
from diagrams.azure.compute import VM
from diagrams.onprem.compute import Server
from diagrams.onprem.client import User
from diagrams.generic.network import Firewall, Switch, Router
from diagrams.generic.storage import Storage  

with Diagram("Multi-Cloud and On-Prem Architecture", show=False):

    # On-premise infrastructure
    with Cluster("On-Premise Data Center"):
        users = User("Users")
        firewall = Firewall("Firewall")
        router = Router("Router")
        switch = Switch("Switch")
        onprem_server = Server("Local Server")
        storage = Storage("Storage")

        users >> firewall >> router >> switch >> onprem_server
        onprem_server >> storage

    # AWS infrastructure
    with Cluster("AWS Cloud"):
        aws_lb = ELB("Load Balancer")
        aws_ec2 = EC2("App Servers")
        aws_rds = RDS("Database")

        aws_lb >> aws_ec2 >> aws_rds

    # GCP infrastructure
    with Cluster("GCP Cloud"):
        gcp_gce = GCE("Compute Engine")
        gcp_storage = Storage("GCP Storage")

        gcp_gce >> gcp_storage

    # Azure infrastructure
    with Cluster("Azure Cloud"):
        azure_vm = VM("Virtual Machines")
        azure_storage = Storage("Azure Storage")

        azure_vm >> azure_storage

    # Connecting on-prem to cloud components via VPN
    router >> Edge(label="VPN") >> [aws_lb, gcp_gce, azure_vm]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

چالش ها و محدودیت ها

اگرچه نمودارها ابزار قدرتمندی هستند، اما چالش هایی وجود دارد:

  • عملکرد: ایجاد نمودارهای بسیار بزرگ با صدها جزء می تواند کند باشد.
  • محدودیت های سفارشی سازی: در حالی که Diagrams طیف گسترده ای از اجزای از پیش تعریف شده را ارائه می دهد، افزودن عناصر بسیار سفارشی ممکن است نیاز به کار اضافی داشته باشد.
  • خروجی استاتیک: نمودارها تصاویر ثابت تولید می کنند. اگر به نمودارهای تعاملی یا بلادرنگ نیاز دارید، ممکن است لازم باشد آنها را با ابزارهای دیگر ادغام کنید.

نتیجه گیری

کتابخانه Diagrams Python ابزاری فوق العاده برای خودکارسازی ایجاد نمودارهای زیرساختی است. با ادغام آن در گردش کار خود، می توانید با تغییر زیرساخت خود نمودارهای معماری را به صورت پویا ایجاد کنید. چه در حال مستندسازی زیرساخت های ابری خود باشید و چه معماری های میکروسرویس پیچیده را به تصویر بکشید، نمودارها روشی قدرتمند و برنامه ای برای تجسم سیستم های شما ارائه می دهد.

توضیحات تصویر

مخزن GitHub

می توانید کد منبع کامل نمونه ها را در این وبلاگ در GitHub من پیدا کنید:

مرجع

سلب مسئولیت:

این یک وبلاگ شخصی است. نظرات و نظرات بیان شده در اینجا فقط متعلق به نویسنده است و بیانگر نظرات هیچ سازمان یا فردی نیست که نویسنده ممکن است به صورت حرفه ای یا شخصی با آنها در ارتباط باشد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا