この記事では、Diagram-as-Code ツールを使用して動的でインタラクティブなビジュアル ドキュメントを作成する方法を段階的に説明します。静的な画像の代わりに、プログラムで図を生成し、常に最新の状態に保たれ、保守が容易になります。
Diagram as Code は、従来のグラフィック ツールの代わりにコードを通じて図を作成できるアプローチです。図を手動で構築する代わりに、テキスト ファイルにコードを記述して、図の構造、コンポーネント、接続を定義できます。
このコードはグラフィック イメージに変換されるため、ソフトウェア プロジェクトへの統合と文書化が容易になります。特に、アーキテクチャ図やフロー図をプログラムで作成および更新する場合に役立ちます。
Diagrams は、Diagram as Code アプローチを実装する ?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 ノードを使用できます。
次に、これらのカテゴリの 1 つを表して、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")
以下はすべてのコードへのリンクです。役に立ったと思われる場合は、スター ⭐️ を残してフォローして、新しい記事の通知を受け取ることができます。これは、テクノロジー コミュニティで成長し、より多くのコンテンツを作成するのに役立ちます。
Diagram as Code は、従来のグラフィック ツールの代わりにコードを通じて図を作成できるアプローチです。図を手動で構築する代わりに、テキスト ファイルにコードを記述して、図の構造、コンポーネント、接続を定義できます。
このコードはグラフィック イメージに変換されるため、ソフトウェア プロジェクトへの統合と文書化が容易になります。特に、アーキテクチャ図やフロー図をプログラムで作成および更新する場合に役立ちます。
Diagrams は、Diagram as Code アプローチを実装する ?Python ライブラリ で、コードを通じてアーキテクチャ インフラストラクチャ ダイアグラムやその他のタイプのダイアグラムを作成できるようにします。図を使用すると、わずか数行のコードでクラウド インフラストラクチャ コンポーネント (AWS、Azure、GCP など)、ネットワーク要素、ソフトウェア サービスなどを簡単に定義できます。
このパイプラインを使用してドキュメント サイトを実装する方法を知りたい場合は、次のリンクで公開した記事を読むことができます
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3