في هذه المقالة، سأرشدك خطوة بخطوة لإنشاء وثائق مرئية ديناميكية وتفاعلية باستخدام أدوات Diagram-as-Code. بدلاً من الصور الثابتة، سنقوم بإنشاء الرسوم البيانية برمجيًا، مما يضمن تحديثها دائمًا وسهولة صيانتها.
المخطط كرمز هو أسلوب يسمح لك بإنشاء رسوم بيانية من خلال التعليمات البرمجية بدلاً من أدوات الرسوم التقليدية. بدلاً من إنشاء الرسوم التخطيطية يدويًا، يمكنك كتابة تعليمات برمجية في ملف نصي لتحديد بنية الرسوم التخطيطية ومكوناتها واتصالاتها.
تتم بعد ذلك ترجمة هذا الرمز إلى صور رسومية، مما يسهل التكامل والتوثيق في مشاريع البرامج، حيث يكون مفيدًا بشكل خاص لإنشاء وتحديث المخططات المعمارية والتدفقية برمجيًا.
المخططات هي مكتبة بايثون التي تطبق نهج المخطط كرمز، مما يتيح لك إنشاء مخططات البنية التحتية المعمارية وأنواع أخرى من المخططات من خلال التعليمات البرمجية. باستخدام المخططات، يمكنك بسهولة تحديد مكونات البنية التحتية السحابية (مثل AWS وAzure وGCP) وعناصر الشبكة وخدمات البرامج والمزيد، كل ذلك باستخدام بضعة أسطر فقط من التعليمات البرمجية.
كنت أستخدم حاليًا الإصدار '0.23.4' لهذا البرنامج التعليمي.
!pip install diagrams=='0.23.4'
تتيح لك المكتبة إنشاء مخططات معمارية برمجيًا، باستخدام العقد لتمثيل مكونات وخدمات البنية التحتية المختلفة.
تمثل العقد الموجودة في المخططات مكونات من مقدمي خدمات سحابية مختلفين بالإضافة إلى عناصر معمارية أخرى. فيما يلي الفئات الرئيسية للعقد المتاحة:
تسمح لك مكتبة الرسوم البيانية باستخدام عقد مختلفة لتمثيل لغات البرمجة المختلفة. تعتبر هذه العقد مفيدة للإشارة في مخططاتك إلى ما إذا كان أي جزء من بنيتك يستخدم نصوصًا برمجية أو مكونات تم تطويرها بلغة برمجة معينة.
وفيما يلي سنعرض جميع اللغات المتوفرة في المكتبة. إذا كانت هناك أي لغة مفقودة، فيمكنك إضافة عقد مخصصة عن طريق تحميل الشعار المقابل في مجلد محدد.
# Create the diagram object with diagrams.Diagram("Programming Languages", show=False, filename="languages"): # Get all the languages available in this library languages = [item for item in dir(diagrams.programming.language) if item[0] != '_'] # Divide the representation in two lines mid_index = len(languages) // 2 first_line = languages[:mid_index] second_line = languages[mid_index:] # Add nodes in the first row prev_node = None for language in first_line: current_node = eval(f"diagrams.programming.language.{language}(language)") if prev_node is not None: prev_node >> current_node prev_node = current_node # Add nodes in the second row prev_node = None for language in second_line: current_node = eval(f"diagrams.programming.language.{language}(language)") if prev_node is not None: prev_node >> current_node prev_node = current_node Image("languages.png")
يمكننا استخدام عقد أمازون، والتي يتم تنظيمها في عدة فئات، مثل:
بعد ذلك، سنمثل إحدى هذه الفئات لتصور العقد المتاحة داخل قاعدة بيانات aws.
from diagrams import Diagram from IPython.display import Image import diagrams.aws.database as aws_database database_components = [] for item in dir(aws_database): if item[0] != '_': if not any(comp.startswith(item) or item.startswith(comp) for comp in database_components): database_components.append(item) with Diagram("AWS Database", show=False, filename="aws_database"): mid_index = len(database_components) // 2 first_line = database_components[:mid_index] second_line = database_components[mid_index:] prev_node = None for item_database in first_line: current_node = eval(f"aws_database.{item_database}(item_database)") if prev_node is not None: prev_node >> current_node prev_node = current_node prev_node = None for item_database in second_line: current_node = eval(f"aws_database.{item_database}(item_database)") if prev_node is not None: prev_node >> current_node prev_node = current_node Image("aws_database.png")
الآن، دعونا ننشئ مخططًا بسيطًا يتوافق مع استيراد مجموعة بيانات وتدريب نموذج التعلم الآلي على AWS.
from diagrams import Diagram, Cluster from diagrams.aws.storage import S3 from diagrams.aws.analytics import Glue, Athena import diagrams.aws.ml as ml from diagrams.aws.integration import StepFunctions from diagrams.aws.compute import Lambda from diagrams.aws.network import APIGateway from IPython.display import Image with Diagram("AWS Data Processing Pipeline", show=False): lambda_raw = Lambda('Get Raw Data') # Buckets de S3 with Cluster("Data Lake"): s3_rawData = S3("raw_data") s3_stage = S3("staging_data") s3_data_capture = S3("data_capture") athena = Athena("Athena") s3_rawData >> athena s3_stage >> athena s3_data_capture >> athena # Step Functions Pipeline with Cluster("Data Processing Pipeline"): step_functions = StepFunctions("Pipeline") # Glue Jobs in Step Functions with Cluster("Glue Jobs"): data_quality = Glue("job_data_quality") transform = Glue("job_data_transform") dataset_preparation = Glue("job_dataset_model") # Define Step Functions Flows step_functions >> data_quality >> transform >> dataset_preparation s3_rawData >> data_quality # SageMaker for model training and deployment with Cluster("SageMaker Model Deployment"): train_model = ml.SagemakerTrainingJob("job_train_model") eval_model = ml.SagemakerGroundTruth("job_evaluate_model") endpoint = ml.SagemakerModel("model_enpoint") # API Gateway and Lambda for the endpoint api_gateway = APIGateway("API_gateway") lambda_fn = Lambda("invoke_endpoint") # Connection lambda_raw >> s3_rawData s3_stage >> train_model >> eval_model >> endpoint endpoint >> lambda_fn >> api_gateway endpoint >> s3_data_capture dataset_preparation >> train_model Image("aws_data_processing_pipeline.png")
يوجد أدناه الرابط لجميع الأكواد، إذا وجدت أنه مفيد، يمكنك ترك نجمة ⭐️ ومتابعتي لتلقي إشعارات بالمقالات الجديدة. سيساعدني هذا على النمو في مجتمع التكنولوجيا وإنشاء المزيد من المحتوى.
المخطط كرمز هو أسلوب يسمح لك بإنشاء رسوم بيانية من خلال التعليمات البرمجية بدلاً من أدوات الرسوم التقليدية. بدلاً من إنشاء الرسوم البيانية يدويًا، يمكنك كتابة التعليمات البرمجية في ملف نصي لتحديد بنية الرسوم البيانية ومكوناتها واتصالاتها.
تتم بعد ذلك ترجمة هذا الرمز إلى صور رسومية، مما يسهل التكامل والتوثيق في مشاريع البرامج، حيث يكون مفيدًا بشكل خاص لإنشاء وتحديث المخططات المعمارية والتدفقية برمجيًا.
المخططات هي مكتبة بايثون التي تطبق نهج المخطط كرمز، مما يتيح لك إنشاء مخططات البنية التحتية المعمارية وأنواع أخرى من المخططات من خلال التعليمات البرمجية. باستخدام المخططات، يمكنك بسهولة تحديد مكونات البنية التحتية السحابية (مثل AWS وAzure وGCP) وعناصر الشبكة وخدمات البرامج والمزيد، كل ذلك باستخدام بضعة أسطر فقط من التعليمات البرمجية.
إذا كنت تريد معرفة كيفية تنفيذ موقع التوثيق باستخدام هذا المسار، يمكنك قراءة المقالة التي نشرتها في الرابط التالي
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3