7 个开源图表代码工具,值得一试


7 个开源图表代码工具,值得一试

仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接

无论你是在设计基础架构、解释应用程序流程,还是记录云架构,图表都是技术交流的重要组成部分。然而,传统的图表工具可能会成为瓶颈,手动编辑、版本控制问题以及缺乏可重复性往往会拖慢团队的进度。这时,“图表即代码”就应运而生了。
“图表即代码”工具使你能够直接从代码生成架构图。它们具有版本控制、可自动化且跨团队保持一致。在本文中,云朵君将和大家一起探索七款支持“图表即代码”的开源工具,用于云和软件架构,并特别关注基于AWS的基础设施。
我们首先了解一下我们将尝试在每个工具中复制的图表示例数据。
本文中,我们所有的制图均是将使用一个示例架构,该架构反映了托管在AWS上的典型Web应用程序。以下是其组件:
Route53:你的域的DNS路由。
ElasticLoadBalancer(ELB):弹性负载均衡器(ELB)分配传入流量。
TwoEC2instances:托管应用程序后端。
Lambdafunction:用于身份验证逻辑。
IAMRole:与Lambda链接以获得安全权限。
PrimaryRDSDB:主应用程序数据库。
ReplicaRDSDB:读取副本以获得更好的性能。
每个工具都会生成相同的逻辑结构来横向比较性能。
Diagrams[ 1]是一个基于Python的开源库,可以将简单的Python代码转换为美观的系统架构图。它支持AWS、Azure和GCP等主流云提供商,以及Kubernetes和Docker等本地工具。它是直接从代码自动化架构文档编写的最简单方法之一。
开箱即用,支持大量云和DevOps图标。
对于熟悉Python的开发人员来说很容易使用。
与CI/CD工具良好集成,实现自动文档生成。
布局和样式的定制有限。
不支持实时协作或GUI。
图表依赖于Graphviz来渲染架构图。使用diagramsPython包之前,需要先安装Graphviz。
如果你使用的是macOS系统,可以使用Homebrew。其他平台请参考Graphviz官方安装指南:https ://graphviz. org/download/
将此代码片段保存在文件aws. py中
运行以下命令
PlantUML[ 2]是一种成熟而灵活的工具,你使可以用简单而强大的文本语言定义图表。它支持序列图、用例图、类图、组件图等,使其适用于软件开发和基础设施建模。
基于文本且版本控制友好。
与markdown、文档工具和IDE配合良好。
灵活并支持多种图表类型。
需要学习其语法。
对于大规模图表来说可能会变得冗长。
你可以使用Docker在本地运行PlantUML,也可以直接在浏览器中使用官方的基于Web的编辑器:https ://editor. plantuml.com/
通过Docker进行本地设置:

云朵君除非必要,只用Markdown撰写报告或文章,因为非常钟爱这款工具,建议你也尝试一下😊。
与markdown文件无缝协作。
对于初学者来说语法简单。
许多平台都原生支持。
不适合大型、复杂的图表。
有限的视觉定制选项。
你可以在许多基于markdown的平台(如GitHub、GitLab、Notion和Obsidian)中直接使用Mermaid,而无需安装任何东西。
如需快速测试或在线共享图表,请使用其官方游乐场:https ://www. mermaidchart.com/play
Structurizr[ 4]DSL是一种功能强大的文本领域特定语言(DSL),可基于C4模型创建软件架构图。它更注重概念的清晰度而非视觉上的完美,非常适合企业级系统的建模。
如果你对C4模型比较了解,那么这款工具将是你的首选!
完全支持C4建模标准。
模型和视图的明确分离。
鼓励建筑领域的最佳实践。
学习曲线更陡峭。
需要了解C4模型。
你可以直接在浏览器中使用StructurizrDSL,也可以在本地安装。
Web编辑器:https ://structurizr. com/dsl本地安装指南:https ://structurizr. com/help/dsl
AWSDiagram-as-Code[ 5]是由AWS实验室构建的一款基于YAML的开源工具。它专注于使用原生服务标识符和关系来表示AWS基础设施。该工具非常适合AWS负载繁重的环境,能够以结构化的YAML格式输出静态架构镜像。
简单且声明性的YAML语法。
专为AWS服务量身定制。
轻量级且由CLI驱动。
仅限于AWS。
定制和布局控制很少。
你可以使用Homebrew轻松地在macOS上安装AWSDiagram-as-Code:
对于其他系统或更高级的使用,请参考官方文档:https ://github. com/awslabs/diagram-as-code[ 6]
将其保存为aws. yaml并运行以下命令
D2[ 7]是由Terrastruct开发的一种现代图表脚本语言。它强调简洁性和清晰度,非常适合那些希望以最少的精力创建优雅图表的开发人员。它支持在VSCode扩展程序或浏览器中实时渲染。
具有自动布局的简单语法。
支持主题和注释。
渲染速度快,开发人员体验极佳。
社区和生态系统仍在不断发展。
缺少开箱即用的AWS特定图标。
你可以在本地安装D2或使用基于Web的游乐场进行快速可视化:https ://play. d2lang.com/
Kroki是一个图表渲染引擎,它为20多种流行的图表格式(例如Mermaid、PlantUML、Graphviz等)提供后端服务。如果你想在CI/CD或文档平台中实现跨不同格式的图表渲染标准化,它是理想的选择。
多种格式的集中渲染。
在管道、文档或应用程序上运行良好。
使用Docker轻松实现自托管。
仍然需要外部语法(Mermaid、PlantUML等)。
需要配置自托管部署。
你可以使用Docker在本地运行Kroki,或者直接调用其远程API进行快速渲染。
图表即代码工具正在改变开发人员、DevOps工程师、架构师甚至技术文档撰写者沟通复杂基础设施和系统设计的方式。在当今快节奏的工程环境中,系统不断发展,以可复制、版本控制的格式记录架构已不再是奢侈,而是必需品。
通过为你的工作流程选择正确的工具,你不仅可以提高文档质量,还可以释放自动化可能性,例如直接从CI/CD管道渲染图表或在内部门户中嵌入最新的视觉效果。
你可以选择适合你个人工作流程或团队设置的工具。对我来说,Diagrams非常适合,因为我熟悉Python,我能够轻松地将图表生成功能集成到我现有的基于Python的工作流程中。
无论你选择哪种工具,采用“图表即代码”都会使你的设计更易于维护、更易于扩展,并且更易于在团队之间共享。非常建议你尝试一下,如果觉得好用,一键三连支持一下呀❤️
参考资料
Diagrams:https ://diagrams. mingrammer.com/
PlantUML:https ://plantuml. com/
Mermaid:https ://mermaid. js.org/
Structurizr:https ://structurizr. com/
AWSDiagram-as-Code:https ://github. com/awslabs/diagram-as-code
https ://github. com/awslabs/diagram-as-code:https ://github. com/awslabs/aws-diagram-as-code
D2:https ://d2lang. com/
长按👇关注-数据STUDIO-设为星标,干货速递


文章作者: ZejunCao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ZejunCao !
  目录