在本文中,我将逐步指导您使用图表即代码工具创建动态和交互式可视化文档。我们将以编程方式生成图表,而不是静态图像,确保它们始终是最新的且易于维护。
图表即代码是一种允许您通过代码而不是传统图形工具创建图表的方法。您可以在文本文件中编写代码来定义图表的结构、组件和连接,而不是手动构建图表。
然后,该代码被转换为图形图像,从而更容易在软件项目中集成和记录,这对于以编程方式创建和更新架构和流程图特别有用。
Diagrams 是一个 ?Python 库,它实现了“图即代码”方法,使您能够通过代码创建架构基础设施图和其他类型的图。借助图表,您只需几行代码即可轻松定义云基础设施组件(例如 AWS、Azure 和 GCP)、网络元素、软件服务等。
我当前在本教程中使用版本“0.23.4”。
!pip install diagrams=='0.23.4'
该库允许您以编程方式创建架构图,使用节点来表示不同的基础设施组件和服务。
图中的节点代表来自不同云服务提供商的组件以及其他架构元素。以下是可用节点的主要类别:
Diagrams库允许您使用不同的节点来表示各种编程语言。这些节点有助于在图表中指示架构的任何部分是否使用以特定编程语言开发的脚本或组件。
下面,我们将展示库中所有可用的语言。如果缺少任何语言,您可以通过将相应的徽标上传到特定文件夹来添加自定义节点。
# 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")
我们可以使用Amazon节点,它分为几个类别,例如:
接下来,我们将代表这些类别之一以可视化 aws.database 中的可用节点。
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")
下面是全部代码的链接,如果觉得有用,可以给个star⭐️并关注我,接收新文章通知。这将帮助我在技术社区中成长并创造更多内容。
图表即代码是一种允许您通过代码而不是传统图形工具创建图表的方法。您可以在文本文件中编写代码来定义图表的结构、组件和连接,而不是手动构建图表。
然后,该代码被转换为图形图像,从而更容易在软件项目中集成和记录,这对于以编程方式创建和更新架构和流程图特别有用。
Diagrams 是一个 ?Python 库,它实现了“图即代码”方法,使您能够通过代码创建架构基础设施图和其他类型的图。借助图表,您只需几行代码即可轻松定义云基础设施组件(例如 AWS、Azure 和 GCP)、网络元素、软件服务等。
如果您想了解如何使用此管道实现文档站点,您可以阅读我在以下链接中发布的文章
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3