Explore and Document Your Cloud Infrastructure with multicloud-diagrams


license PyPI version python version tests pages release

As Professional Architects, Developers and DevOps with experience in operating on Public Cloud Providers, we all recognize the crucial importance of well-documented Infrastructure and Architecture in a representable form for driving successful projects.

multicloud-diagrams is a framework that combines multiple approaches: Diagrams as a Code (Dac), resources ingestion from external yaml sources, interaction through programmatic API integration.

It allows to store the Infrastructure snippet in drawio format, which is editable vector-based representation. Since source file is not a Raster form, it is easy to edit, customize, position elements based on our needs and track the history.


Supported Nodes Landscape (Autogenerated on-release):

AWS nodes:

lambda_function.jpg iam_role.jpg iam_policy.jpg iam_permission.jpg dynamo.jpg dynamo_stream.jpg api_gw.jpg s3.jpg kms.jpg ssm.jpg client_vpn.jpg certificate_manager.jpg ecs.jpg ecs_service.jpg ecs_task.jpg ec2.jpg kafka.jpg redis.jpg postgresql.jpg mysql.jpg ecr.jpg elasticsearch_service.jpg aurora.jpg glacier.jpg glacier_standard.jpg glacier_deep_archival.jpg glacier_instant_retrival.jpg chime_voice_connector.jpg chime_sdk.jpg neptune.jpg eks.jpg backup.jpg datasync.jpg exchange.jpg access_analyzer.jpg resource_access_manager.jpg security_hub.jpg app_runner.jpg

AWS2024 nodes:

AWS2024 / Application Integration

app_sync.jpg step_functions.jpg sqs.jpg sns.jpg mq.jpg event_bridge.jpg appflow.jpg

AWS2024 / Network & Content Delivery

route_53.jpg direct_connect.jpg cloudfront.jpg vpc_privatelink.jpg vpc.jpg vpc_lattice.jpg app_mesh.jpg site_to_site_vpn.jpg cloud_map.jpg private_5g.jpg cloud_wan.jpg global_accelerator.jpg transit_gateway.jpg network_load_balancer.jpg elastic_network_adapter.jpg

AWS2024 / Compute

outpost.jpg elastic_beanstalk.jpg elastic_fabric_adapter.jpg local_zones.jpg lightsail.jpg elastic_load_balancing.jpg auto_scaling2.jpg fargate.jpg

AWS2024 / Analytics

glue.jpg lake_formation.jpg kinesis_video_stream.jpg apache_flink.jpg data_brew.jpg data_pipeline.jpg quicksight.jpg

AWS2024 / Machine Learning

sagemaker_ground_truth.jpg lex.jpg bedrock.jpg codeguru.jpg codewhisperer.jpg comprehend.jpg comprehend_medical.jpg textract.jpg

AWS2024 / AR & VR

sumerian.jpg ar_vr.jpg

AWS2024 / Database

timestream.jpg managed_casandra.jpg db_migration.jpg quantum_ledger.jpg redshift.jpg

AWS2024 / Developer Tools

codepipeline.jpg codeartifact.jpg codebuild.jpg codecommit.jpg codedeploy.jpg codestar.jpg coretto.jpg cloud9.jpg xray.jpg application_composer.jpg tools_and_sdks.jpg command_line_interface.jpg codecatalyst.jpg

ONPREM nodes:

http.jpg mq_broker.jpg docker.jpg github_code.jpg git_repository.jpg



Support OS Project:

Support from sponsors is invaluable for the continued maintenance and development of open-source projects. You can use any of most popular platforms: Patreon or Buy me a Cofee, by following these links:

  • patreon
  • Buy Me A Coffee

Examples of diagrams generated using multicloud-diagrams:

End-to-End with AWS resources:

draw-e2e.gif


API Gateway with integrations:

draw-apigw.gif


DynamoDB Insights:

drawio-dynamodb.gif


Augment Diagram from UML:

drawio-uml.gif


Project Evolution Timeline

gantt
       dateFormat  YYYY-MM-DD
       title MultiCloud Diagrams

       section Core
       aws components, multicloud core    :crit, des1, 2023-05-01,2023-05-14
       coords reload                      :active, des2, after des1, 2023-05-15
       dynamodb from boto                 :done, des3, after des2, 2023-05-17
       read from YAML                     :crit, des4, after des3, 2023-05-17
       added list                         :done, des5, after des4, 2023-06-15
       more aws services, persistent coords :done, des6, after des5, 2023-07-24
       github test runner, more aws services : active, des7, after des6, 2023-08-01
       layers support, snapshot : crit, des8, after des7, 2023-08-01
       docs generated from tests, online documentation, landscape :active, des9, after des8, `2023-08-08`
       added map, customization  :done, des10, after des9, 2023-08-20
       vpn, cert manager  :done, des11, after des10, 2023-09-17
       load from mermaid UML  :crit, des12, after des11, 2023-09-30
       load from plant UML  :crit, des13, after des12, 2023-11-18

       section Releases
       v.0.1.0              :done, 2023-05-14, 3d
       v.0.2.0              :done, 2023-05-15, 3d
       v.0.2.4              :done, 2023-05-15, 3d
       v.0.2.5              :done, 2023-05-16, 3d
       v.0.3.2              :done, 2023-06-15, 3d
       v.0.3.9              :done, 2023-07-24, 3d
       v.3.14               :after 2023-09-17, 3d
       v.3.15               :after 2023-09-30, 3d
       v.3.17               :after 2023-10-24, 3d
       v.3.18               :after 2023-11-18, 3d

Supported Cloud Provides:

providersupported in multicloud-diagrams
aws provider[x] since project start
on premise provider[x] since v0.2.1
azure provider[ ]
gcp provider[ ]

Why multicloud-diagrams is written on Python?

The choice of Python as the programming language for our initial project was driven by several key factors that align seamlessly with our goals and requirements. Here’s why Python was selected as the foundation for our project’s development:

  • Seamless Integration and Data Ingestion using AWS Boto3 (official SDK for Amazon Web Services, developed in Python).
  • Simplicity: Python’s clean and readable syntax simplifies the development process. Its ease of use and elegant structure enable to focus on the core components without being bogged down by unnecessary complexities.
  • Broad Appeal among DevOps and Developers: Python’s popularity within the DevOps and Development communities is undeniable. Its extensive adoption is a testament to its effectiveness for building robust applications. By choosing Python, we cater to a broader audience, fostering collaboration and easing the learning curve for newcomers.
  • Cross-Platform Availability: Python’s cross-platform compatibility ensures that our project can be run on a wide array of environments without compatibility issues. Whether you’re working on Windows, macOS, or Linux, Python’s ubiquity guarantees consistent functionality across platforms.

Why multicloud-diagrams chooses drawio as the Output Format?

During my exploration of various tools on this journey, I’ve encountered several options, each with its own set of advantages and compromises. However, after careful consideration, the decision to adopt the drawio format emerged as the optimal choice for several compelling reasons:

  • Editable form of drawio format provides a great level of customization, enabling users to easily fine-tune diagrams to meet specific needs and scenarios.
  • Widespread Adoption: with a broad user base, drawio stands as one of the most widely used diagramming tools, ensuring familiarity and compatibility across diverse teams.
  • Enhanced Plugin and Tool Support: the format seamlessly integrates with a set of plugins and tools, enriching the ecosystem with expanded capabilities and possibilities.
  • Compact File Sizes: leveraging the drawio format results in compact file sizes, facilitating swift sharing and distribution without compromising visual quality.
  • Git-trackable Infrastructure Evolution: allowing for efficient tracking and visualization of infrastructure mutations over time.
  • Smooth Compilation to Raster and other formats: drawio supports out of the box converting to PNG, JPG, PDF, SVG, VSDX, XML