Deploy website

Deploy website version based on 052da89ea7
gh-pages
mingrammer 2 weeks ago
parent b7a550aab6
commit 0e6822e1f1

@ -65,7 +65,7 @@
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Installation</h1></header><article><div><span><p><strong>diagrams</strong> requires <strong>Python 3.7</strong> or higher, check your Python version first.</p>
<p><strong>diagrams</strong> uses <a href="https://www.graphviz.org/">Graphviz</a> to render the diagram, so you need to <a href="https://graphviz.gitlab.io/download/">install Graphviz</a> to use it.</p>
<blockquote>
<p>macOS users using <a href="https://brew.sh">Homebrew</a> can install Graphviz via <code>brew install graphviz</code> . Similarly, Windows users with <a href="https://chocolatey.org">Chocolatey</a> installed can run <code>choco install graphviz</code>.</p>
<p>macOS users using <a href="https://brew.sh">Homebrew</a> can install Graphviz via <code>brew install graphviz</code> . Similarly, Windows users with <a href="https://chocolatey.org">Chocolatey</a> installed can run <code>choco install graphviz</code> or use <a href="https://learn.microsoft.com/windows/package-manager/">Winget</a> via <code>winget install Graphviz.Graphviz -i</code>.</p>
</blockquote>
<p>After installing Graphviz (or if you already have it), install <strong>diagrams</strong>:</p>
<pre><code class="hljs css language-shell"><span class="hljs-meta">#</span><span class="bash"> using pip (pip3)</span>
@ -76,6 +76,9 @@
<span class="hljs-meta">
#</span><span class="bash"> using poetry</span>
<span class="hljs-meta">$</span><span class="bash"> poetry add diagrams</span>
<span class="hljs-meta">
#</span><span class="bash"> using uv</span>
<span class="hljs-meta">$</span><span class="bash"> uv tool install diagrams</span>
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="quick-start"></a><a href="#quick-start" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Quick Start</h2>
<pre><code class="hljs css language-python"><span class="hljs-comment"># diagram.py</span>
@ -93,6 +96,10 @@
<p>This generates the diagram below:</p>
<p><img src="/img/web_service_diagram.png" alt="web service diagram"></p>
<p>It will be saved as <code>web_service.png</code> in your working directory.</p>
<h3><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>CLI</h3>
<p>With the <code>diagrams</code> CLI you can process one or more diagram files at once.</p>
<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> diagrams diagram1.py diagram2.py</span>
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="next"></a><a href="#next" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Next</h2>
<p>See more <a href="/docs/getting-started/examples">Examples</a> or see the <a href="/docs/guides/diagram">Guides</a> page for more details.</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/25/2024</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/getting-started/examples"><span>Examples</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#quick-start">Quick Start</a></li><li><a href="#next">Next</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/10/2025</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/getting-started/examples"><span>Examples</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#quick-start">Quick Start</a><ul class="toc-headings"><li><a href="#cli">CLI</a></li></ul></li><li><a href="#next">Next</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -65,7 +65,7 @@
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 id="__docusaurus" class="postHeaderTitle">Installation</h1></header><article><div><span><p><strong>diagrams</strong> requires <strong>Python 3.7</strong> or higher, check your Python version first.</p>
<p><strong>diagrams</strong> uses <a href="https://www.graphviz.org/">Graphviz</a> to render the diagram, so you need to <a href="https://graphviz.gitlab.io/download/">install Graphviz</a> to use it.</p>
<blockquote>
<p>macOS users using <a href="https://brew.sh">Homebrew</a> can install Graphviz via <code>brew install graphviz</code> . Similarly, Windows users with <a href="https://chocolatey.org">Chocolatey</a> installed can run <code>choco install graphviz</code>.</p>
<p>macOS users using <a href="https://brew.sh">Homebrew</a> can install Graphviz via <code>brew install graphviz</code> . Similarly, Windows users with <a href="https://chocolatey.org">Chocolatey</a> installed can run <code>choco install graphviz</code> or use <a href="https://learn.microsoft.com/windows/package-manager/">Winget</a> via <code>winget install Graphviz.Graphviz -i</code>.</p>
</blockquote>
<p>After installing Graphviz (or if you already have it), install <strong>diagrams</strong>:</p>
<pre><code class="hljs css language-shell"><span class="hljs-meta">#</span><span class="bash"> using pip (pip3)</span>
@ -76,6 +76,9 @@
<span class="hljs-meta">
#</span><span class="bash"> using poetry</span>
<span class="hljs-meta">$</span><span class="bash"> poetry add diagrams</span>
<span class="hljs-meta">
#</span><span class="bash"> using uv</span>
<span class="hljs-meta">$</span><span class="bash"> uv tool install diagrams</span>
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="quick-start"></a><a href="#quick-start" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Quick Start</h2>
<pre><code class="hljs css language-python"><span class="hljs-comment"># diagram.py</span>
@ -93,6 +96,10 @@
<p>This generates the diagram below:</p>
<p><img src="/img/web_service_diagram.png" alt="web service diagram"></p>
<p>It will be saved as <code>web_service.png</code> in your working directory.</p>
<h3><a class="anchor" aria-hidden="true" id="cli"></a><a href="#cli" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>CLI</h3>
<p>With the <code>diagrams</code> CLI you can process one or more diagram files at once.</p>
<pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> diagrams diagram1.py diagram2.py</span>
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="next"></a><a href="#next" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Next</h2>
<p>See more <a href="/docs/getting-started/examples">Examples</a> or see the <a href="/docs/guides/diagram">Guides</a> page for more details.</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/25/2024</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/getting-started/examples"><span>Examples</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#quick-start">Quick Start</a></li><li><a href="#next">Next</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/10/2025</em></div><div class="docs-prevnext"><a class="docs-next button" href="/docs/getting-started/examples"><span>Examples</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#quick-start">Quick Start</a><ul class="toc-headings"><li><a href="#cli">CLI</a></li></ul></li><li><a href="#next">Next</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -119,5 +119,116 @@
&gt;&gt; Edge(color=<span class="hljs-string">"darkorange"</span>) \
&gt;&gt; aggregator
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premises_colored.png" alt="advanced web service with on-premises diagram colored"></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 10/1/2024</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/cluster"><span class="arrow-prev"></span><span>Clusters</span></a><a class="docs-next button" href="/docs/nodes/onprem"><span class="function-name-prevnext">OnPrem</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#basic">Basic</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
<p><img src="/img/advanced_web_service_with_on-premise_colored.png" alt="advanced web service with on-premise diagram colored"></p>
<h2><a class="anchor" aria-hidden="true" id="less-edges"></a><a href="#less-edges" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Less Edges</h2>
<p>As you can see on the previous graph the edges can quickly become noisy. Below are two examples to solve this problem.</p>
<p>One approach is to get creative with the Node class to create blank placeholders, together with named nodes within Clusters, and then only pointing to single named elements within those Clusters.</p>
<p>Compare the output below to the example output above .</p>
<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> diagrams <span class="hljs-keyword">import</span> Cluster, Diagram, Node
<span class="hljs-keyword">from</span> diagrams.onprem.analytics <span class="hljs-keyword">import</span> Spark
<span class="hljs-keyword">from</span> diagrams.onprem.compute <span class="hljs-keyword">import</span> Server
<span class="hljs-keyword">from</span> diagrams.onprem.database <span class="hljs-keyword">import</span> PostgreSQL
<span class="hljs-keyword">from</span> diagrams.onprem.inmemory <span class="hljs-keyword">import</span> Redis
<span class="hljs-keyword">from</span> diagrams.onprem.aggregator <span class="hljs-keyword">import</span> Fluentd
<span class="hljs-keyword">from</span> diagrams.onprem.monitoring <span class="hljs-keyword">import</span> Grafana, Prometheus
<span class="hljs-keyword">from</span> diagrams.onprem.network <span class="hljs-keyword">import</span> Nginx
<span class="hljs-keyword">from</span> diagrams.onprem.queue <span class="hljs-keyword">import</span> Kafka
<span class="hljs-keyword">with</span> Diagram(<span class="hljs-string">"\nAdvanced Web Service with On-Premise Less edges"</span>, show=<span class="hljs-literal">False</span>) <span class="hljs-keyword">as</span> diag:
ingress = Nginx(<span class="hljs-string">"ingress"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Service Cluster"</span>):
serv1 = Server(<span class="hljs-string">"grpc1"</span>)
serv2 = Server(<span class="hljs-string">"grpc2"</span>)
serv3 = Server(<span class="hljs-string">"grpc3"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">""</span>):
blankHA = Node(<span class="hljs-string">""</span>, shape=<span class="hljs-string">"plaintext"</span>, width=<span class="hljs-string">"0"</span>, height=<span class="hljs-string">"0"</span>)
metrics = Prometheus(<span class="hljs-string">"metric"</span>)
metrics &lt;&lt; Grafana(<span class="hljs-string">"monitoring"</span>)
aggregator = Fluentd(<span class="hljs-string">"logging"</span>)
blankHA &gt;&gt; aggregator &gt;&gt; Kafka(<span class="hljs-string">"stream"</span>) &gt;&gt; Spark(<span class="hljs-string">"analytics"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Database HA"</span>):
db = PostgreSQL(<span class="hljs-string">"users"</span>)
db - PostgreSQL(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
blankHA &gt;&gt; db
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Sessions HA"</span>):
sess = Redis(<span class="hljs-string">"session"</span>)
sess - Redis(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
blankHA &gt;&gt; sess
ingress &gt;&gt; serv2 &gt;&gt; blankHA
diag
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premise_less_edges.png" alt="advanced web service with on-premise less edges"></p>
<h2><a class="anchor" aria-hidden="true" id="merged-edges"></a><a href="#merged-edges" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Merged Edges</h2>
<p>Yet another option is to set the graph_attr dictionary key &quot;concentrate&quot; to &quot;true&quot;.</p>
<p>Note the following restrictions:</p>
<ol>
<li>the Edge must end at the same headport</li>
<li>This only works when the &quot;splines&quot; graph_attr key is set to the value &quot;spline&quot;. It has no effect when the value was set to &quot;ortho&quot;, which is the default for the diagrams library.</li>
<li>this will only work with the &quot;dot&quot; layout engine, which is the default for the diagrams library.</li>
</ol>
<p>For more information see:</p>
<p><a href="https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate">https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate</a></p>
<p><a href="https://www.graphviz.org/pdf/dotguide.pdf">https://www.graphviz.org/pdf/dotguide.pdf</a> Section 3.3 Concentrators</p>
<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> diagrams <span class="hljs-keyword">import</span> Cluster, Diagram, Edge, Node
<span class="hljs-keyword">from</span> diagrams.onprem.analytics <span class="hljs-keyword">import</span> Spark
<span class="hljs-keyword">from</span> diagrams.onprem.compute <span class="hljs-keyword">import</span> Server
<span class="hljs-keyword">from</span> diagrams.onprem.database <span class="hljs-keyword">import</span> PostgreSQL
<span class="hljs-keyword">from</span> diagrams.onprem.inmemory <span class="hljs-keyword">import</span> Redis
<span class="hljs-keyword">from</span> diagrams.onprem.aggregator <span class="hljs-keyword">import</span> Fluentd
<span class="hljs-keyword">from</span> diagrams.onprem.monitoring <span class="hljs-keyword">import</span> Grafana, Prometheus
<span class="hljs-keyword">from</span> diagrams.onprem.network <span class="hljs-keyword">import</span> Nginx
<span class="hljs-keyword">from</span> diagrams.onprem.queue <span class="hljs-keyword">import</span> Kafka
graph_attr = {
<span class="hljs-string">"concentrate"</span>: <span class="hljs-string">"true"</span>,
<span class="hljs-string">"splines"</span>: <span class="hljs-string">"spline"</span>,
}
edge_attr = {
<span class="hljs-string">"minlen"</span>:<span class="hljs-string">"3"</span>,
}
<span class="hljs-keyword">with</span> Diagram(<span class="hljs-string">"\n\nAdvanced Web Service with On-Premise Merged edges"</span>, show=<span class="hljs-literal">False</span>,
graph_attr=graph_attr,
edge_attr=edge_attr) <span class="hljs-keyword">as</span> diag:
ingress = Nginx(<span class="hljs-string">"ingress"</span>)
metrics = Prometheus(<span class="hljs-string">"metric"</span>)
metrics &lt;&lt; Edge(minlen=<span class="hljs-string">"0"</span>) &lt;&lt; Grafana(<span class="hljs-string">"monitoring"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Service Cluster"</span>):
grpsrv = [
Server(<span class="hljs-string">"grpc1"</span>),
Server(<span class="hljs-string">"grpc2"</span>),
Server(<span class="hljs-string">"grpc3"</span>)]
blank = Node(<span class="hljs-string">""</span>, shape=<span class="hljs-string">"plaintext"</span>, height=<span class="hljs-string">"0.0"</span>, width=<span class="hljs-string">"0.0"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Sessions HA"</span>):
sess = Redis(<span class="hljs-string">"session"</span>)
sess - Redis(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Database HA"</span>):
db = PostgreSQL(<span class="hljs-string">"users"</span>)
db - PostgreSQL(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
aggregator = Fluentd(<span class="hljs-string">"logging"</span>)
aggregator &gt;&gt; Kafka(<span class="hljs-string">"stream"</span>) &gt;&gt; Spark(<span class="hljs-string">"analytics"</span>)
ingress &gt;&gt; [grpsrv[<span class="hljs-number">0</span>], grpsrv[<span class="hljs-number">1</span>], grpsrv[<span class="hljs-number">2</span>],]
[grpsrv[<span class="hljs-number">0</span>], grpsrv[<span class="hljs-number">1</span>], grpsrv[<span class="hljs-number">2</span>],] - Edge(headport=<span class="hljs-string">"w"</span>, minlen=<span class="hljs-string">"1"</span>) - blank
blank &gt;&gt; Edge(headport=<span class="hljs-string">"w"</span>, minlen=<span class="hljs-string">"2"</span>) &gt;&gt; [sess, db, aggregator]
diag
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premise_merged_edges.png" alt="advanced web service with on-premise merged edges"></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/cluster"><span class="arrow-prev"></span><span>Clusters</span></a><a class="docs-next button" href="/docs/nodes/onprem"><span class="function-name-prevnext">OnPrem</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#basic">Basic</a></li><li><a href="#less-edges">Less Edges</a></li><li><a href="#merged-edges">Merged Edges</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -119,5 +119,116 @@
&gt;&gt; Edge(color=<span class="hljs-string">"darkorange"</span>) \
&gt;&gt; aggregator
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premises_colored.png" alt="advanced web service with on-premises diagram colored"></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 10/1/2024</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/cluster"><span class="arrow-prev"></span><span>Clusters</span></a><a class="docs-next button" href="/docs/nodes/onprem"><span class="function-name-prevnext">OnPrem</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#basic">Basic</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
<p><img src="/img/advanced_web_service_with_on-premise_colored.png" alt="advanced web service with on-premise diagram colored"></p>
<h2><a class="anchor" aria-hidden="true" id="less-edges"></a><a href="#less-edges" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Less Edges</h2>
<p>As you can see on the previous graph the edges can quickly become noisy. Below are two examples to solve this problem.</p>
<p>One approach is to get creative with the Node class to create blank placeholders, together with named nodes within Clusters, and then only pointing to single named elements within those Clusters.</p>
<p>Compare the output below to the example output above .</p>
<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> diagrams <span class="hljs-keyword">import</span> Cluster, Diagram, Node
<span class="hljs-keyword">from</span> diagrams.onprem.analytics <span class="hljs-keyword">import</span> Spark
<span class="hljs-keyword">from</span> diagrams.onprem.compute <span class="hljs-keyword">import</span> Server
<span class="hljs-keyword">from</span> diagrams.onprem.database <span class="hljs-keyword">import</span> PostgreSQL
<span class="hljs-keyword">from</span> diagrams.onprem.inmemory <span class="hljs-keyword">import</span> Redis
<span class="hljs-keyword">from</span> diagrams.onprem.aggregator <span class="hljs-keyword">import</span> Fluentd
<span class="hljs-keyword">from</span> diagrams.onprem.monitoring <span class="hljs-keyword">import</span> Grafana, Prometheus
<span class="hljs-keyword">from</span> diagrams.onprem.network <span class="hljs-keyword">import</span> Nginx
<span class="hljs-keyword">from</span> diagrams.onprem.queue <span class="hljs-keyword">import</span> Kafka
<span class="hljs-keyword">with</span> Diagram(<span class="hljs-string">"\nAdvanced Web Service with On-Premise Less edges"</span>, show=<span class="hljs-literal">False</span>) <span class="hljs-keyword">as</span> diag:
ingress = Nginx(<span class="hljs-string">"ingress"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Service Cluster"</span>):
serv1 = Server(<span class="hljs-string">"grpc1"</span>)
serv2 = Server(<span class="hljs-string">"grpc2"</span>)
serv3 = Server(<span class="hljs-string">"grpc3"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">""</span>):
blankHA = Node(<span class="hljs-string">""</span>, shape=<span class="hljs-string">"plaintext"</span>, width=<span class="hljs-string">"0"</span>, height=<span class="hljs-string">"0"</span>)
metrics = Prometheus(<span class="hljs-string">"metric"</span>)
metrics &lt;&lt; Grafana(<span class="hljs-string">"monitoring"</span>)
aggregator = Fluentd(<span class="hljs-string">"logging"</span>)
blankHA &gt;&gt; aggregator &gt;&gt; Kafka(<span class="hljs-string">"stream"</span>) &gt;&gt; Spark(<span class="hljs-string">"analytics"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Database HA"</span>):
db = PostgreSQL(<span class="hljs-string">"users"</span>)
db - PostgreSQL(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
blankHA &gt;&gt; db
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Sessions HA"</span>):
sess = Redis(<span class="hljs-string">"session"</span>)
sess - Redis(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
blankHA &gt;&gt; sess
ingress &gt;&gt; serv2 &gt;&gt; blankHA
diag
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premise_less_edges.png" alt="advanced web service with on-premise less edges"></p>
<h2><a class="anchor" aria-hidden="true" id="merged-edges"></a><a href="#merged-edges" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Merged Edges</h2>
<p>Yet another option is to set the graph_attr dictionary key &quot;concentrate&quot; to &quot;true&quot;.</p>
<p>Note the following restrictions:</p>
<ol>
<li>the Edge must end at the same headport</li>
<li>This only works when the &quot;splines&quot; graph_attr key is set to the value &quot;spline&quot;. It has no effect when the value was set to &quot;ortho&quot;, which is the default for the diagrams library.</li>
<li>this will only work with the &quot;dot&quot; layout engine, which is the default for the diagrams library.</li>
</ol>
<p>For more information see:</p>
<p><a href="https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate">https://graphviz.gitlab.io/doc/info/attrs.html#d:concentrate</a></p>
<p><a href="https://www.graphviz.org/pdf/dotguide.pdf">https://www.graphviz.org/pdf/dotguide.pdf</a> Section 3.3 Concentrators</p>
<pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> diagrams <span class="hljs-keyword">import</span> Cluster, Diagram, Edge, Node
<span class="hljs-keyword">from</span> diagrams.onprem.analytics <span class="hljs-keyword">import</span> Spark
<span class="hljs-keyword">from</span> diagrams.onprem.compute <span class="hljs-keyword">import</span> Server
<span class="hljs-keyword">from</span> diagrams.onprem.database <span class="hljs-keyword">import</span> PostgreSQL
<span class="hljs-keyword">from</span> diagrams.onprem.inmemory <span class="hljs-keyword">import</span> Redis
<span class="hljs-keyword">from</span> diagrams.onprem.aggregator <span class="hljs-keyword">import</span> Fluentd
<span class="hljs-keyword">from</span> diagrams.onprem.monitoring <span class="hljs-keyword">import</span> Grafana, Prometheus
<span class="hljs-keyword">from</span> diagrams.onprem.network <span class="hljs-keyword">import</span> Nginx
<span class="hljs-keyword">from</span> diagrams.onprem.queue <span class="hljs-keyword">import</span> Kafka
graph_attr = {
<span class="hljs-string">"concentrate"</span>: <span class="hljs-string">"true"</span>,
<span class="hljs-string">"splines"</span>: <span class="hljs-string">"spline"</span>,
}
edge_attr = {
<span class="hljs-string">"minlen"</span>:<span class="hljs-string">"3"</span>,
}
<span class="hljs-keyword">with</span> Diagram(<span class="hljs-string">"\n\nAdvanced Web Service with On-Premise Merged edges"</span>, show=<span class="hljs-literal">False</span>,
graph_attr=graph_attr,
edge_attr=edge_attr) <span class="hljs-keyword">as</span> diag:
ingress = Nginx(<span class="hljs-string">"ingress"</span>)
metrics = Prometheus(<span class="hljs-string">"metric"</span>)
metrics &lt;&lt; Edge(minlen=<span class="hljs-string">"0"</span>) &lt;&lt; Grafana(<span class="hljs-string">"monitoring"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Service Cluster"</span>):
grpsrv = [
Server(<span class="hljs-string">"grpc1"</span>),
Server(<span class="hljs-string">"grpc2"</span>),
Server(<span class="hljs-string">"grpc3"</span>)]
blank = Node(<span class="hljs-string">""</span>, shape=<span class="hljs-string">"plaintext"</span>, height=<span class="hljs-string">"0.0"</span>, width=<span class="hljs-string">"0.0"</span>)
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Sessions HA"</span>):
sess = Redis(<span class="hljs-string">"session"</span>)
sess - Redis(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
<span class="hljs-keyword">with</span> Cluster(<span class="hljs-string">"Database HA"</span>):
db = PostgreSQL(<span class="hljs-string">"users"</span>)
db - PostgreSQL(<span class="hljs-string">"replica"</span>) &lt;&lt; metrics
aggregator = Fluentd(<span class="hljs-string">"logging"</span>)
aggregator &gt;&gt; Kafka(<span class="hljs-string">"stream"</span>) &gt;&gt; Spark(<span class="hljs-string">"analytics"</span>)
ingress &gt;&gt; [grpsrv[<span class="hljs-number">0</span>], grpsrv[<span class="hljs-number">1</span>], grpsrv[<span class="hljs-number">2</span>],]
[grpsrv[<span class="hljs-number">0</span>], grpsrv[<span class="hljs-number">1</span>], grpsrv[<span class="hljs-number">2</span>],] - Edge(headport=<span class="hljs-string">"w"</span>, minlen=<span class="hljs-string">"1"</span>) - blank
blank &gt;&gt; Edge(headport=<span class="hljs-string">"w"</span>, minlen=<span class="hljs-string">"2"</span>) &gt;&gt; [sess, db, aggregator]
diag
</code></pre>
<p><img src="/img/advanced_web_service_with_on-premise_merged_edges.png" alt="advanced web service with on-premise merged edges"></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/cluster"><span class="arrow-prev"></span><span>Clusters</span></a><a class="docs-next button" href="/docs/nodes/onprem"><span class="function-name-prevnext">OnPrem</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#basic">Basic</a></li><li><a href="#less-edges">Less Edges</a></li><li><a href="#merged-edges">Merged Edges</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -188,8 +188,12 @@
<strong>diagrams.aws.compute.ElasticBeanstalk</strong>, <strong>EB</strong> (alias)</p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-container.png" alt="ElasticContainerServiceContainer" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceContainer</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-service-connect.png" alt="ElasticContainerServiceServiceConnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceServiceConnect</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-service.png" alt="ElasticContainerServiceService" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceService</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-task.png" alt="ElasticContainerServiceTask" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceTask</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service.png" alt="ElasticContainerService" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerService</strong>, <strong>ECS</strong> (alias)</p>
<p><img width="30" src="/img/resources/aws/compute/elastic-kubernetes-service.png" alt="ElasticKubernetesService" style="float: left; padding-right: 5px;" >
@ -315,6 +319,8 @@
<strong>diagrams.aws.devtools.Cloud9Resource</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Cloud9</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/cloudshell.png" alt="Cloudshell" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Cloudshell</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/codeartifact.png" alt="Codeartifact" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Codeartifact</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/codebuild.png" alt="Codebuild" style="float: left; padding-right: 5px;" >
@ -435,8 +441,18 @@
<strong>diagrams.aws.integration.EventbridgeCustomEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-default-event-bus-resource.png" alt="EventbridgeDefaultEventBusResource" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeDefaultEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-event.png" alt="EventbridgeEvent" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeEvent</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-pipes.png" alt="EventbridgePipes" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgePipes</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-rule.png" alt="EventbridgeRule" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeRule</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-saas-partner-event-bus-resource.png" alt="EventbridgeSaasPartnerEventBusResource" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeSaasPartnerEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-scheduler.png" alt="EventbridgeScheduler" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeScheduler</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-schema.png" alt="EventbridgeSchema" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeSchema</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge.png" alt="Eventbridge" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.Eventbridge</strong></p>
<p><img width="30" src="/img/resources/aws/integration/express-workflows.png" alt="ExpressWorkflows" style="float: left; padding-right: 5px;" >
@ -697,6 +713,8 @@
<strong>diagrams.aws.management.TrustedAdvisorChecklist</strong></p>
<p><img width="30" src="/img/resources/aws/management/trusted-advisor.png" alt="TrustedAdvisor" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.TrustedAdvisor</strong></p>
<p><img width="30" src="/img/resources/aws/management/user-notifications.png" alt="UserNotifications" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.UserNotifications</strong></p>
<p><img width="30" src="/img/resources/aws/management/well-architected-tool.png" alt="WellArchitectedTool" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.WellArchitectedTool</strong></p>
<h2><a class="anchor" aria-hidden="true" id="awsmedia"></a><a href="#awsmedia" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>aws.media</h2>
@ -786,6 +804,8 @@
<strong>diagrams.aws.ml.Personalize</strong></p>
<p><img width="30" src="/img/resources/aws/ml/polly.png" alt="Polly" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Polly</strong></p>
<p><img width="30" src="/img/resources/aws/ml/q.png" alt="Q" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Q</strong></p>
<p><img width="30" src="/img/resources/aws/ml/rekognition-image.png" alt="RekognitionImage" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.RekognitionImage</strong></p>
<p><img width="30" src="/img/resources/aws/ml/rekognition-video.png" alt="RekognitionVideo" style="float: left; padding-right: 5px;" >
@ -808,6 +828,8 @@
<strong>diagrams.aws.ml.Textract</strong></p>
<p><img width="30" src="/img/resources/aws/ml/transcribe.png" alt="Transcribe" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Transcribe</strong></p>
<p><img width="30" src="/img/resources/aws/ml/transform.png" alt="Transform" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Transform</strong></p>
<p><img width="30" src="/img/resources/aws/ml/translate.png" alt="Translate" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Translate</strong></p>
<h2><a class="anchor" aria-hidden="true" id="awsmobile"></a><a href="#awsmobile" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>aws.mobile</h2>
@ -996,6 +1018,8 @@
<strong>diagrams.aws.security.SecurityHub</strong></p>
<p><img width="30" src="/img/resources/aws/security/security-identity-and-compliance.png" alt="SecurityIdentityAndCompliance" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.SecurityIdentityAndCompliance</strong></p>
<p><img width="30" src="/img/resources/aws/security/security-lake.png" alt="SecurityLake" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.SecurityLake</strong></p>
<p><img width="30" src="/img/resources/aws/security/shield-advanced.png" alt="ShieldAdvanced" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.ShieldAdvanced</strong></p>
<p><img width="30" src="/img/resources/aws/security/shield.png" alt="Shield" style="float: left; padding-right: 5px;" >
@ -1071,4 +1095,4 @@
<strong>diagrams.aws.storage.StorageGateway</strong></p>
<p><img width="30" src="/img/resources/aws/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.storage.Storage</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/23/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/onprem"><span class="arrow-prev"></span><span class="function-name-prevnext">OnPrem</span></a><a class="docs-next button" href="/docs/nodes/azure"><span>Azure</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#awsanalytics">aws.analytics</a></li><li><a href="#awsar">aws.ar</a></li><li><a href="#awsblockchain">aws.blockchain</a></li><li><a href="#awsbusiness">aws.business</a></li><li><a href="#awscompute">aws.compute</a></li><li><a href="#awscost">aws.cost</a></li><li><a href="#awsdatabase">aws.database</a></li><li><a href="#awsdevtools">aws.devtools</a></li><li><a href="#awsenablement">aws.enablement</a></li><li><a href="#awsenduser">aws.enduser</a></li><li><a href="#awsengagement">aws.engagement</a></li><li><a href="#awsgame">aws.game</a></li><li><a href="#awsgeneral">aws.general</a></li><li><a href="#awsintegration">aws.integration</a></li><li><a href="#awsiot">aws.iot</a></li><li><a href="#awsmanagement">aws.management</a></li><li><a href="#awsmedia">aws.media</a></li><li><a href="#awsmigration">aws.migration</a></li><li><a href="#awsml">aws.ml</a></li><li><a href="#awsmobile">aws.mobile</a></li><li><a href="#awsnetwork">aws.network</a></li><li><a href="#awsquantum">aws.quantum</a></li><li><a href="#awsrobotics">aws.robotics</a></li><li><a href="#awssatellite">aws.satellite</a></li><li><a href="#awssecurity">aws.security</a></li><li><a href="#awsstorage">aws.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 8/23/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/onprem"><span class="arrow-prev"></span><span class="function-name-prevnext">OnPrem</span></a><a class="docs-next button" href="/docs/nodes/azure"><span>Azure</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#awsanalytics">aws.analytics</a></li><li><a href="#awsar">aws.ar</a></li><li><a href="#awsblockchain">aws.blockchain</a></li><li><a href="#awsbusiness">aws.business</a></li><li><a href="#awscompute">aws.compute</a></li><li><a href="#awscost">aws.cost</a></li><li><a href="#awsdatabase">aws.database</a></li><li><a href="#awsdevtools">aws.devtools</a></li><li><a href="#awsenablement">aws.enablement</a></li><li><a href="#awsenduser">aws.enduser</a></li><li><a href="#awsengagement">aws.engagement</a></li><li><a href="#awsgame">aws.game</a></li><li><a href="#awsgeneral">aws.general</a></li><li><a href="#awsintegration">aws.integration</a></li><li><a href="#awsiot">aws.iot</a></li><li><a href="#awsmanagement">aws.management</a></li><li><a href="#awsmedia">aws.media</a></li><li><a href="#awsmigration">aws.migration</a></li><li><a href="#awsml">aws.ml</a></li><li><a href="#awsmobile">aws.mobile</a></li><li><a href="#awsnetwork">aws.network</a></li><li><a href="#awsquantum">aws.quantum</a></li><li><a href="#awsrobotics">aws.robotics</a></li><li><a href="#awssatellite">aws.satellite</a></li><li><a href="#awssecurity">aws.security</a></li><li><a href="#awsstorage">aws.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -188,8 +188,12 @@
<strong>diagrams.aws.compute.ElasticBeanstalk</strong>, <strong>EB</strong> (alias)</p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-container.png" alt="ElasticContainerServiceContainer" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceContainer</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-service-connect.png" alt="ElasticContainerServiceServiceConnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceServiceConnect</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-service.png" alt="ElasticContainerServiceService" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceService</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service-task.png" alt="ElasticContainerServiceTask" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerServiceTask</strong></p>
<p><img width="30" src="/img/resources/aws/compute/elastic-container-service.png" alt="ElasticContainerService" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.compute.ElasticContainerService</strong>, <strong>ECS</strong> (alias)</p>
<p><img width="30" src="/img/resources/aws/compute/elastic-kubernetes-service.png" alt="ElasticKubernetesService" style="float: left; padding-right: 5px;" >
@ -315,6 +319,8 @@
<strong>diagrams.aws.devtools.Cloud9Resource</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/cloud9.png" alt="Cloud9" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Cloud9</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/cloudshell.png" alt="Cloudshell" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Cloudshell</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/codeartifact.png" alt="Codeartifact" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.devtools.Codeartifact</strong></p>
<p><img width="30" src="/img/resources/aws/devtools/codebuild.png" alt="Codebuild" style="float: left; padding-right: 5px;" >
@ -435,8 +441,18 @@
<strong>diagrams.aws.integration.EventbridgeCustomEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-default-event-bus-resource.png" alt="EventbridgeDefaultEventBusResource" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeDefaultEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-event.png" alt="EventbridgeEvent" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeEvent</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-pipes.png" alt="EventbridgePipes" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgePipes</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-rule.png" alt="EventbridgeRule" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeRule</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-saas-partner-event-bus-resource.png" alt="EventbridgeSaasPartnerEventBusResource" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeSaasPartnerEventBusResource</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-scheduler.png" alt="EventbridgeScheduler" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeScheduler</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge-schema.png" alt="EventbridgeSchema" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.EventbridgeSchema</strong></p>
<p><img width="30" src="/img/resources/aws/integration/eventbridge.png" alt="Eventbridge" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.integration.Eventbridge</strong></p>
<p><img width="30" src="/img/resources/aws/integration/express-workflows.png" alt="ExpressWorkflows" style="float: left; padding-right: 5px;" >
@ -697,6 +713,8 @@
<strong>diagrams.aws.management.TrustedAdvisorChecklist</strong></p>
<p><img width="30" src="/img/resources/aws/management/trusted-advisor.png" alt="TrustedAdvisor" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.TrustedAdvisor</strong></p>
<p><img width="30" src="/img/resources/aws/management/user-notifications.png" alt="UserNotifications" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.UserNotifications</strong></p>
<p><img width="30" src="/img/resources/aws/management/well-architected-tool.png" alt="WellArchitectedTool" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.management.WellArchitectedTool</strong></p>
<h2><a class="anchor" aria-hidden="true" id="awsmedia"></a><a href="#awsmedia" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>aws.media</h2>
@ -786,6 +804,8 @@
<strong>diagrams.aws.ml.Personalize</strong></p>
<p><img width="30" src="/img/resources/aws/ml/polly.png" alt="Polly" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Polly</strong></p>
<p><img width="30" src="/img/resources/aws/ml/q.png" alt="Q" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Q</strong></p>
<p><img width="30" src="/img/resources/aws/ml/rekognition-image.png" alt="RekognitionImage" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.RekognitionImage</strong></p>
<p><img width="30" src="/img/resources/aws/ml/rekognition-video.png" alt="RekognitionVideo" style="float: left; padding-right: 5px;" >
@ -808,6 +828,8 @@
<strong>diagrams.aws.ml.Textract</strong></p>
<p><img width="30" src="/img/resources/aws/ml/transcribe.png" alt="Transcribe" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Transcribe</strong></p>
<p><img width="30" src="/img/resources/aws/ml/transform.png" alt="Transform" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Transform</strong></p>
<p><img width="30" src="/img/resources/aws/ml/translate.png" alt="Translate" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.ml.Translate</strong></p>
<h2><a class="anchor" aria-hidden="true" id="awsmobile"></a><a href="#awsmobile" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>aws.mobile</h2>
@ -996,6 +1018,8 @@
<strong>diagrams.aws.security.SecurityHub</strong></p>
<p><img width="30" src="/img/resources/aws/security/security-identity-and-compliance.png" alt="SecurityIdentityAndCompliance" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.SecurityIdentityAndCompliance</strong></p>
<p><img width="30" src="/img/resources/aws/security/security-lake.png" alt="SecurityLake" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.SecurityLake</strong></p>
<p><img width="30" src="/img/resources/aws/security/shield-advanced.png" alt="ShieldAdvanced" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.security.ShieldAdvanced</strong></p>
<p><img width="30" src="/img/resources/aws/security/shield.png" alt="Shield" style="float: left; padding-right: 5px;" >
@ -1071,4 +1095,4 @@
<strong>diagrams.aws.storage.StorageGateway</strong></p>
<p><img width="30" src="/img/resources/aws/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
<strong>diagrams.aws.storage.Storage</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/23/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/onprem"><span class="arrow-prev"></span><span class="function-name-prevnext">OnPrem</span></a><a class="docs-next button" href="/docs/nodes/azure"><span>Azure</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#awsanalytics">aws.analytics</a></li><li><a href="#awsar">aws.ar</a></li><li><a href="#awsblockchain">aws.blockchain</a></li><li><a href="#awsbusiness">aws.business</a></li><li><a href="#awscompute">aws.compute</a></li><li><a href="#awscost">aws.cost</a></li><li><a href="#awsdatabase">aws.database</a></li><li><a href="#awsdevtools">aws.devtools</a></li><li><a href="#awsenablement">aws.enablement</a></li><li><a href="#awsenduser">aws.enduser</a></li><li><a href="#awsengagement">aws.engagement</a></li><li><a href="#awsgame">aws.game</a></li><li><a href="#awsgeneral">aws.general</a></li><li><a href="#awsintegration">aws.integration</a></li><li><a href="#awsiot">aws.iot</a></li><li><a href="#awsmanagement">aws.management</a></li><li><a href="#awsmedia">aws.media</a></li><li><a href="#awsmigration">aws.migration</a></li><li><a href="#awsml">aws.ml</a></li><li><a href="#awsmobile">aws.mobile</a></li><li><a href="#awsnetwork">aws.network</a></li><li><a href="#awsquantum">aws.quantum</a></li><li><a href="#awsrobotics">aws.robotics</a></li><li><a href="#awssatellite">aws.satellite</a></li><li><a href="#awssecurity">aws.security</a></li><li><a href="#awsstorage">aws.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 8/23/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/onprem"><span class="arrow-prev"></span><span class="function-name-prevnext">OnPrem</span></a><a class="docs-next button" href="/docs/nodes/azure"><span>Azure</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#awsanalytics">aws.analytics</a></li><li><a href="#awsar">aws.ar</a></li><li><a href="#awsblockchain">aws.blockchain</a></li><li><a href="#awsbusiness">aws.business</a></li><li><a href="#awscompute">aws.compute</a></li><li><a href="#awscost">aws.cost</a></li><li><a href="#awsdatabase">aws.database</a></li><li><a href="#awsdevtools">aws.devtools</a></li><li><a href="#awsenablement">aws.enablement</a></li><li><a href="#awsenduser">aws.enduser</a></li><li><a href="#awsengagement">aws.engagement</a></li><li><a href="#awsgame">aws.game</a></li><li><a href="#awsgeneral">aws.general</a></li><li><a href="#awsintegration">aws.integration</a></li><li><a href="#awsiot">aws.iot</a></li><li><a href="#awsmanagement">aws.management</a></li><li><a href="#awsmedia">aws.media</a></li><li><a href="#awsmigration">aws.migration</a></li><li><a href="#awsml">aws.ml</a></li><li><a href="#awsmobile">aws.mobile</a></li><li><a href="#awsnetwork">aws.network</a></li><li><a href="#awsquantum">aws.quantum</a></li><li><a href="#awsrobotics">aws.robotics</a></li><li><a href="#awssatellite">aws.satellite</a></li><li><a href="#awssecurity">aws.security</a></li><li><a href="#awsstorage">aws.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -82,6 +82,8 @@
<strong>diagrams.gcp.analytics.Dataproc</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/genomics.png" alt="Genomics" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Genomics</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/looker.png" alt="Looker" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Looker</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/pubsub.png" alt="Pubsub" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Pubsub</strong>, <strong>PubSub</strong> (alias)</p>
<h2><a class="anchor" aria-hidden="true" id="gcpapi"></a><a href="#gcpapi" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.api</h2>
@ -94,6 +96,8 @@
<h2><a class="anchor" aria-hidden="true" id="gcpcompute"></a><a href="#gcpcompute" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.compute</h2>
<p><img width="30" src="/img/resources/gcp/compute/app-engine.png" alt="AppEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.AppEngine</strong>, <strong>GAE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/binary-authorization.png" alt="BinaryAuthorization" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.BinaryAuthorization</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/compute-engine.png" alt="ComputeEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.ComputeEngine</strong>, <strong>GCE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/container-optimized-os.png" alt="ContainerOptimizedOS" style="float: left; padding-right: 5px;" >
@ -106,8 +110,14 @@
<strong>diagrams.gcp.compute.GPU</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/kubernetes-engine.png" alt="KubernetesEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.KubernetesEngine</strong>, <strong>GKE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/os-configuration-management.png" alt="OSConfigurationManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSConfigurationManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/os-inventory-management.png" alt="OSInventoryManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSInventoryManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/os-patch-management.png" alt="OSPatchManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSPatchManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/run.png" alt="Run" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.Run</strong></p>
<strong>diagrams.gcp.compute.Run</strong>, <strong>CloudRun</strong> (alias)</p>
<h2><a class="anchor" aria-hidden="true" id="gcpdatabase"></a><a href="#gcpdatabase" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.database</h2>
<p><img width="30" src="/img/resources/gcp/database/bigtable.png" alt="Bigtable" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.database.Bigtable</strong>, <strong>BigTable</strong> (alias)</p>
@ -124,6 +134,8 @@
<h2><a class="anchor" aria-hidden="true" id="gcpdevtools"></a><a href="#gcpdevtools" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.devtools</h2>
<p><img width="30" src="/img/resources/gcp/devtools/build.png" alt="Build" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.Build</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/cloud-shell.png" alt="CloudShell" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.CloudShell</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/code-for-intellij.png" alt="CodeForIntellij" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.CodeForIntellij</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/code.png" alt="Code" style="float: left; padding-right: 5px;" >
@ -140,6 +152,8 @@
<strong>diagrams.gcp.devtools.Scheduler</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/sdk.png" alt="SDK" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.SDK</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/service-catalog.png" alt="ServiceCatalog" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.ServiceCatalog</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/source-repositories.png" alt="SourceRepositories" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.SourceRepositories</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/tasks.png" alt="Tasks" style="float: left; padding-right: 5px;" >
@ -155,7 +169,18 @@
<h2><a class="anchor" aria-hidden="true" id="gcpiot"></a><a href="#gcpiot" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.iot</h2>
<p><img width="30" src="/img/resources/gcp/iot/iot-core.png" alt="IotCore" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.iot.IotCore</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpmanagement"></a><a href="#gcpmanagement" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.management</h2>
<p><img width="30" src="/img/resources/gcp/management/billing.png" alt="Billing" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Billing</strong></p>
<p><img width="30" src="/img/resources/gcp/management/project.png" alt="Project" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Project</strong></p>
<p><img width="30" src="/img/resources/gcp/management/quotas.png" alt="Quotas" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Quotas</strong></p>
<p><img width="30" src="/img/resources/gcp/management/support.png" alt="Support" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Support</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpmigration"></a><a href="#gcpmigration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.migration</h2>
<p><img width="30" src="/img/resources/gcp/migration/migrate-compute-engine.png" alt="MigrateComputeEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.migration.MigrateComputeEngine</strong>, <strong>CE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/migration/transfer-appliance.png" alt="TransferAppliance" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.migration.TransferAppliance</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpml"></a><a href="#gcpml" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.ml</h2>
@ -197,6 +222,8 @@
<strong>diagrams.gcp.ml.TPU</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/translation-api.png" alt="TranslationAPI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.TranslationAPI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/vertex-ai.png" alt="VertexAI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.VertexAI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/video-intelligence-api.png" alt="VideoIntelligenceAPI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.VideoIntelligenceAPI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/vision-api.png" alt="VisionAPI" style="float: left; padding-right: 5px;" >
@ -206,6 +233,8 @@
<strong>diagrams.gcp.network.Armor</strong></p>
<p><img width="30" src="/img/resources/gcp/network/cdn.png" alt="CDN" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.CDN</strong></p>
<p><img width="30" src="/img/resources/gcp/network/cloud-ids.png" alt="CloudIDS" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.CloudIDS</strong>, <strong>IDS</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/network/dedicated-interconnect.png" alt="DedicatedInterconnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.DedicatedInterconnect</strong></p>
<p><img width="30" src="/img/resources/gcp/network/dns.png" alt="DNS" style="float: left; padding-right: 5px;" >
@ -218,16 +247,30 @@
<strong>diagrams.gcp.network.LoadBalancing</strong></p>
<p><img width="30" src="/img/resources/gcp/network/nat.png" alt="NAT" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NAT</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-connectivity-center.png" alt="NetworkConnectivityCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkConnectivityCenter</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-intelligence-center.png" alt="NetworkIntelligenceCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkIntelligenceCenter</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-security.png" alt="NetworkSecurity" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkSecurity</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-tiers.png" alt="NetworkTiers" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkTiers</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-topology.png" alt="NetworkTopology" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkTopology</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network.png" alt="Network" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Network</strong></p>
<p><img width="30" src="/img/resources/gcp/network/partner-interconnect.png" alt="PartnerInterconnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PartnerInterconnect</strong></p>
<p><img width="30" src="/img/resources/gcp/network/premium-network-tier.png" alt="PremiumNetworkTier" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PremiumNetworkTier</strong></p>
<p><img width="30" src="/img/resources/gcp/network/private-service-connect.png" alt="PrivateServiceConnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PrivateServiceConnect</strong>, <strong>PSC</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/network/router.png" alt="Router" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Router</strong></p>
<p><img width="30" src="/img/resources/gcp/network/routes.png" alt="Routes" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Routes</strong></p>
<p><img width="30" src="/img/resources/gcp/network/service-mesh.png" alt="ServiceMesh" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.ServiceMesh</strong></p>
<p><img width="30" src="/img/resources/gcp/network/standard-network-tier.png" alt="StandardNetworkTier" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.StandardNetworkTier</strong></p>
<p><img width="30" src="/img/resources/gcp/network/traffic-director.png" alt="TrafficDirector" style="float: left; padding-right: 5px;" >
@ -242,6 +285,16 @@
<p><img width="30" src="/img/resources/gcp/operations/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.operations.Monitoring</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpsecurity"></a><a href="#gcpsecurity" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.security</h2>
<p><img width="30" src="/img/resources/gcp/security/access-context-manager.png" alt="AccessContextManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.AccessContextManager</strong>, <strong>ACM</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/assured-workloads.png" alt="AssuredWorkloads" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.AssuredWorkloads</strong></p>
<p><img width="30" src="/img/resources/gcp/security/certificate-authority-service.png" alt="CertificateAuthorityService" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CertificateAuthorityService</strong></p>
<p><img width="30" src="/img/resources/gcp/security/certificate-manager.png" alt="CertificateManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CertificateManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/cloud-asset-inventory.png" alt="CloudAssetInventory" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CloudAssetInventory</strong></p>
<p><img width="30" src="/img/resources/gcp/security/iam.png" alt="Iam" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.Iam</strong></p>
<p><img width="30" src="/img/resources/gcp/security/iap.png" alt="IAP" style="float: left; padding-right: 5px;" >
@ -250,15 +303,21 @@
<strong>diagrams.gcp.security.KeyManagementService</strong>, <strong>KMS</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/resource-manager.png" alt="ResourceManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.ResourceManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/secret-manager.png" alt="SecretManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecretManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/security-command-center.png" alt="SecurityCommandCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityCommandCenter</strong>, <strong>SCC</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/security-health-advisor.png" alt="SecurityHealthAdvisor" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityHealthAdvisor</strong></p>
<p><img width="30" src="/img/resources/gcp/security/security-scanner.png" alt="SecurityScanner" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityScanner</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpstorage"></a><a href="#gcpstorage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.storage</h2>
<p><img width="30" src="/img/resources/gcp/storage/filestore.png" alt="Filestore" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.Filestore</strong></p>
<p><img width="30" src="/img/resources/gcp/storage/local-ssd.png" alt="LocalSSD" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.LocalSSD</strong>, <strong>SSD</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/storage/persistent-disk.png" alt="PersistentDisk" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.PersistentDisk</strong></p>
<p><img width="30" src="/img/resources/gcp/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.Storage</strong>, <strong>GCS</strong> (alias)</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 10/2/2024</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/azure"><span class="arrow-prev"></span><span>Azure</span></a><a class="docs-next button" href="/docs/nodes/ibm"><span>IBM</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gcpanalytics">gcp.analytics</a></li><li><a href="#gcpapi">gcp.api</a></li><li><a href="#gcpcompute">gcp.compute</a></li><li><a href="#gcpdatabase">gcp.database</a></li><li><a href="#gcpdevtools">gcp.devtools</a></li><li><a href="#gcpiot">gcp.iot</a></li><li><a href="#gcpmigration">gcp.migration</a></li><li><a href="#gcpml">gcp.ml</a></li><li><a href="#gcpnetwork">gcp.network</a></li><li><a href="#gcpoperations">gcp.operations</a></li><li><a href="#gcpsecurity">gcp.security</a></li><li><a href="#gcpstorage">gcp.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/13/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/azure"><span class="arrow-prev"></span><span>Azure</span></a><a class="docs-next button" href="/docs/nodes/ibm"><span>IBM</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gcpanalytics">gcp.analytics</a></li><li><a href="#gcpapi">gcp.api</a></li><li><a href="#gcpcompute">gcp.compute</a></li><li><a href="#gcpdatabase">gcp.database</a></li><li><a href="#gcpdevtools">gcp.devtools</a></li><li><a href="#gcpiot">gcp.iot</a></li><li><a href="#gcpmanagement">gcp.management</a></li><li><a href="#gcpmigration">gcp.migration</a></li><li><a href="#gcpml">gcp.ml</a></li><li><a href="#gcpnetwork">gcp.network</a></li><li><a href="#gcpoperations">gcp.operations</a></li><li><a href="#gcpsecurity">gcp.security</a></li><li><a href="#gcpstorage">gcp.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -82,6 +82,8 @@
<strong>diagrams.gcp.analytics.Dataproc</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/genomics.png" alt="Genomics" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Genomics</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/looker.png" alt="Looker" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Looker</strong></p>
<p><img width="30" src="/img/resources/gcp/analytics/pubsub.png" alt="Pubsub" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.analytics.Pubsub</strong>, <strong>PubSub</strong> (alias)</p>
<h2><a class="anchor" aria-hidden="true" id="gcpapi"></a><a href="#gcpapi" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.api</h2>
@ -94,6 +96,8 @@
<h2><a class="anchor" aria-hidden="true" id="gcpcompute"></a><a href="#gcpcompute" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.compute</h2>
<p><img width="30" src="/img/resources/gcp/compute/app-engine.png" alt="AppEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.AppEngine</strong>, <strong>GAE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/binary-authorization.png" alt="BinaryAuthorization" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.BinaryAuthorization</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/compute-engine.png" alt="ComputeEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.ComputeEngine</strong>, <strong>GCE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/container-optimized-os.png" alt="ContainerOptimizedOS" style="float: left; padding-right: 5px;" >
@ -106,8 +110,14 @@
<strong>diagrams.gcp.compute.GPU</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/kubernetes-engine.png" alt="KubernetesEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.KubernetesEngine</strong>, <strong>GKE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/compute/os-configuration-management.png" alt="OSConfigurationManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSConfigurationManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/os-inventory-management.png" alt="OSInventoryManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSInventoryManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/os-patch-management.png" alt="OSPatchManagement" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.OSPatchManagement</strong></p>
<p><img width="30" src="/img/resources/gcp/compute/run.png" alt="Run" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.compute.Run</strong></p>
<strong>diagrams.gcp.compute.Run</strong>, <strong>CloudRun</strong> (alias)</p>
<h2><a class="anchor" aria-hidden="true" id="gcpdatabase"></a><a href="#gcpdatabase" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.database</h2>
<p><img width="30" src="/img/resources/gcp/database/bigtable.png" alt="Bigtable" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.database.Bigtable</strong>, <strong>BigTable</strong> (alias)</p>
@ -124,6 +134,8 @@
<h2><a class="anchor" aria-hidden="true" id="gcpdevtools"></a><a href="#gcpdevtools" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.devtools</h2>
<p><img width="30" src="/img/resources/gcp/devtools/build.png" alt="Build" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.Build</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/cloud-shell.png" alt="CloudShell" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.CloudShell</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/code-for-intellij.png" alt="CodeForIntellij" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.CodeForIntellij</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/code.png" alt="Code" style="float: left; padding-right: 5px;" >
@ -140,6 +152,8 @@
<strong>diagrams.gcp.devtools.Scheduler</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/sdk.png" alt="SDK" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.SDK</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/service-catalog.png" alt="ServiceCatalog" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.ServiceCatalog</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/source-repositories.png" alt="SourceRepositories" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.devtools.SourceRepositories</strong></p>
<p><img width="30" src="/img/resources/gcp/devtools/tasks.png" alt="Tasks" style="float: left; padding-right: 5px;" >
@ -155,7 +169,18 @@
<h2><a class="anchor" aria-hidden="true" id="gcpiot"></a><a href="#gcpiot" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.iot</h2>
<p><img width="30" src="/img/resources/gcp/iot/iot-core.png" alt="IotCore" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.iot.IotCore</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpmanagement"></a><a href="#gcpmanagement" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.management</h2>
<p><img width="30" src="/img/resources/gcp/management/billing.png" alt="Billing" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Billing</strong></p>
<p><img width="30" src="/img/resources/gcp/management/project.png" alt="Project" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Project</strong></p>
<p><img width="30" src="/img/resources/gcp/management/quotas.png" alt="Quotas" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Quotas</strong></p>
<p><img width="30" src="/img/resources/gcp/management/support.png" alt="Support" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.management.Support</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpmigration"></a><a href="#gcpmigration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.migration</h2>
<p><img width="30" src="/img/resources/gcp/migration/migrate-compute-engine.png" alt="MigrateComputeEngine" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.migration.MigrateComputeEngine</strong>, <strong>CE</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/migration/transfer-appliance.png" alt="TransferAppliance" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.migration.TransferAppliance</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpml"></a><a href="#gcpml" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.ml</h2>
@ -197,6 +222,8 @@
<strong>diagrams.gcp.ml.TPU</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/translation-api.png" alt="TranslationAPI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.TranslationAPI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/vertex-ai.png" alt="VertexAI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.VertexAI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/video-intelligence-api.png" alt="VideoIntelligenceAPI" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.ml.VideoIntelligenceAPI</strong></p>
<p><img width="30" src="/img/resources/gcp/ml/vision-api.png" alt="VisionAPI" style="float: left; padding-right: 5px;" >
@ -206,6 +233,8 @@
<strong>diagrams.gcp.network.Armor</strong></p>
<p><img width="30" src="/img/resources/gcp/network/cdn.png" alt="CDN" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.CDN</strong></p>
<p><img width="30" src="/img/resources/gcp/network/cloud-ids.png" alt="CloudIDS" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.CloudIDS</strong>, <strong>IDS</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/network/dedicated-interconnect.png" alt="DedicatedInterconnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.DedicatedInterconnect</strong></p>
<p><img width="30" src="/img/resources/gcp/network/dns.png" alt="DNS" style="float: left; padding-right: 5px;" >
@ -218,16 +247,30 @@
<strong>diagrams.gcp.network.LoadBalancing</strong></p>
<p><img width="30" src="/img/resources/gcp/network/nat.png" alt="NAT" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NAT</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-connectivity-center.png" alt="NetworkConnectivityCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkConnectivityCenter</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-intelligence-center.png" alt="NetworkIntelligenceCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkIntelligenceCenter</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-security.png" alt="NetworkSecurity" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkSecurity</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-tiers.png" alt="NetworkTiers" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkTiers</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network-topology.png" alt="NetworkTopology" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.NetworkTopology</strong></p>
<p><img width="30" src="/img/resources/gcp/network/network.png" alt="Network" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Network</strong></p>
<p><img width="30" src="/img/resources/gcp/network/partner-interconnect.png" alt="PartnerInterconnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PartnerInterconnect</strong></p>
<p><img width="30" src="/img/resources/gcp/network/premium-network-tier.png" alt="PremiumNetworkTier" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PremiumNetworkTier</strong></p>
<p><img width="30" src="/img/resources/gcp/network/private-service-connect.png" alt="PrivateServiceConnect" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.PrivateServiceConnect</strong>, <strong>PSC</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/network/router.png" alt="Router" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Router</strong></p>
<p><img width="30" src="/img/resources/gcp/network/routes.png" alt="Routes" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.Routes</strong></p>
<p><img width="30" src="/img/resources/gcp/network/service-mesh.png" alt="ServiceMesh" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.ServiceMesh</strong></p>
<p><img width="30" src="/img/resources/gcp/network/standard-network-tier.png" alt="StandardNetworkTier" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.network.StandardNetworkTier</strong></p>
<p><img width="30" src="/img/resources/gcp/network/traffic-director.png" alt="TrafficDirector" style="float: left; padding-right: 5px;" >
@ -242,6 +285,16 @@
<p><img width="30" src="/img/resources/gcp/operations/monitoring.png" alt="Monitoring" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.operations.Monitoring</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpsecurity"></a><a href="#gcpsecurity" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.security</h2>
<p><img width="30" src="/img/resources/gcp/security/access-context-manager.png" alt="AccessContextManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.AccessContextManager</strong>, <strong>ACM</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/assured-workloads.png" alt="AssuredWorkloads" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.AssuredWorkloads</strong></p>
<p><img width="30" src="/img/resources/gcp/security/certificate-authority-service.png" alt="CertificateAuthorityService" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CertificateAuthorityService</strong></p>
<p><img width="30" src="/img/resources/gcp/security/certificate-manager.png" alt="CertificateManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CertificateManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/cloud-asset-inventory.png" alt="CloudAssetInventory" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.CloudAssetInventory</strong></p>
<p><img width="30" src="/img/resources/gcp/security/iam.png" alt="Iam" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.Iam</strong></p>
<p><img width="30" src="/img/resources/gcp/security/iap.png" alt="IAP" style="float: left; padding-right: 5px;" >
@ -250,15 +303,21 @@
<strong>diagrams.gcp.security.KeyManagementService</strong>, <strong>KMS</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/resource-manager.png" alt="ResourceManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.ResourceManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/secret-manager.png" alt="SecretManager" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecretManager</strong></p>
<p><img width="30" src="/img/resources/gcp/security/security-command-center.png" alt="SecurityCommandCenter" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityCommandCenter</strong>, <strong>SCC</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/security/security-health-advisor.png" alt="SecurityHealthAdvisor" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityHealthAdvisor</strong></p>
<p><img width="30" src="/img/resources/gcp/security/security-scanner.png" alt="SecurityScanner" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.security.SecurityScanner</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gcpstorage"></a><a href="#gcpstorage" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gcp.storage</h2>
<p><img width="30" src="/img/resources/gcp/storage/filestore.png" alt="Filestore" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.Filestore</strong></p>
<p><img width="30" src="/img/resources/gcp/storage/local-ssd.png" alt="LocalSSD" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.LocalSSD</strong>, <strong>SSD</strong> (alias)</p>
<p><img width="30" src="/img/resources/gcp/storage/persistent-disk.png" alt="PersistentDisk" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.PersistentDisk</strong></p>
<p><img width="30" src="/img/resources/gcp/storage/storage.png" alt="Storage" style="float: left; padding-right: 5px;" >
<strong>diagrams.gcp.storage.Storage</strong>, <strong>GCS</strong> (alias)</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 10/2/2024</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/azure"><span class="arrow-prev"></span><span>Azure</span></a><a class="docs-next button" href="/docs/nodes/ibm"><span>IBM</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gcpanalytics">gcp.analytics</a></li><li><a href="#gcpapi">gcp.api</a></li><li><a href="#gcpcompute">gcp.compute</a></li><li><a href="#gcpdatabase">gcp.database</a></li><li><a href="#gcpdevtools">gcp.devtools</a></li><li><a href="#gcpiot">gcp.iot</a></li><li><a href="#gcpmigration">gcp.migration</a></li><li><a href="#gcpml">gcp.ml</a></li><li><a href="#gcpnetwork">gcp.network</a></li><li><a href="#gcpoperations">gcp.operations</a></li><li><a href="#gcpsecurity">gcp.security</a></li><li><a href="#gcpstorage">gcp.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 9/13/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/azure"><span class="arrow-prev"></span><span>Azure</span></a><a class="docs-next button" href="/docs/nodes/ibm"><span>IBM</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#gcpanalytics">gcp.analytics</a></li><li><a href="#gcpapi">gcp.api</a></li><li><a href="#gcpcompute">gcp.compute</a></li><li><a href="#gcpdatabase">gcp.database</a></li><li><a href="#gcpdevtools">gcp.devtools</a></li><li><a href="#gcpiot">gcp.iot</a></li><li><a href="#gcpmanagement">gcp.management</a></li><li><a href="#gcpmigration">gcp.migration</a></li><li><a href="#gcpml">gcp.ml</a></li><li><a href="#gcpnetwork">gcp.network</a></li><li><a href="#gcpoperations">gcp.operations</a></li><li><a href="#gcpsecurity">gcp.security</a></li><li><a href="#gcpstorage">gcp.storage</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -85,6 +85,8 @@
<strong>diagrams.gis.data.IGN</strong></p>
<p><img width="30" src="/img/resources/gis/data/openstreetmap.png" alt="Openstreetmap" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.data.Openstreetmap</strong></p>
<p><img width="30" src="/img/resources/gis/data/overturemaps.png" alt="Overturemaps" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.data.Overturemaps</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gisdatabase"></a><a href="#gisdatabase" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gis.database</h2>
<p><img width="30" src="/img/resources/gis/database/postgis.png" alt="Postgis" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.database.Postgis</strong></p>
@ -204,4 +206,4 @@
<strong>diagrams.gis.server.QGISServer</strong></p>
<p><img width="30" src="/img/resources/gis/server/zooproject.png" alt="Zooproject" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.server.Zooproject</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/custom"><span class="arrow-prev"></span><span>Custom</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#giscli">gis.cli</a></li><li><a href="#gisdata">gis.data</a></li><li><a href="#gisdatabase">gis.database</a></li><li><a href="#gisdesktop">gis.desktop</a></li><li><a href="#gisformat">gis.format</a></li><li><a href="#gisgeocoding">gis.geocoding</a></li><li><a href="#gisgeorchestra">gis.georchestra</a></li><li><a href="#gisjava">gis.java</a></li><li><a href="#gisjavascript">gis.javascript</a></li><li><a href="#gismobile">gis.mobile</a></li><li><a href="#gisogc">gis.ogc</a></li><li><a href="#gisorganization">gis.organization</a></li><li><a href="#gispython">gis.python</a></li><li><a href="#gisrouting">gis.routing</a></li><li><a href="#gisserver">gis.server</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/6/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/custom"><span class="arrow-prev"></span><span>Custom</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#giscli">gis.cli</a></li><li><a href="#gisdata">gis.data</a></li><li><a href="#gisdatabase">gis.database</a></li><li><a href="#gisdesktop">gis.desktop</a></li><li><a href="#gisformat">gis.format</a></li><li><a href="#gisgeocoding">gis.geocoding</a></li><li><a href="#gisgeorchestra">gis.georchestra</a></li><li><a href="#gisjava">gis.java</a></li><li><a href="#gisjavascript">gis.javascript</a></li><li><a href="#gismobile">gis.mobile</a></li><li><a href="#gisogc">gis.ogc</a></li><li><a href="#gisorganization">gis.organization</a></li><li><a href="#gispython">gis.python</a></li><li><a href="#gisrouting">gis.routing</a></li><li><a href="#gisserver">gis.server</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -85,6 +85,8 @@
<strong>diagrams.gis.data.IGN</strong></p>
<p><img width="30" src="/img/resources/gis/data/openstreetmap.png" alt="Openstreetmap" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.data.Openstreetmap</strong></p>
<p><img width="30" src="/img/resources/gis/data/overturemaps.png" alt="Overturemaps" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.data.Overturemaps</strong></p>
<h2><a class="anchor" aria-hidden="true" id="gisdatabase"></a><a href="#gisdatabase" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>gis.database</h2>
<p><img width="30" src="/img/resources/gis/database/postgis.png" alt="Postgis" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.database.Postgis</strong></p>
@ -204,4 +206,4 @@
<strong>diagrams.gis.server.QGISServer</strong></p>
<p><img width="30" src="/img/resources/gis/server/zooproject.png" alt="Zooproject" style="float: left; padding-right: 5px;" >
<strong>diagrams.gis.server.Zooproject</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/custom"><span class="arrow-prev"></span><span>Custom</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#giscli">gis.cli</a></li><li><a href="#gisdata">gis.data</a></li><li><a href="#gisdatabase">gis.database</a></li><li><a href="#gisdesktop">gis.desktop</a></li><li><a href="#gisformat">gis.format</a></li><li><a href="#gisgeocoding">gis.geocoding</a></li><li><a href="#gisgeorchestra">gis.georchestra</a></li><li><a href="#gisjava">gis.java</a></li><li><a href="#gisjavascript">gis.javascript</a></li><li><a href="#gismobile">gis.mobile</a></li><li><a href="#gisogc">gis.ogc</a></li><li><a href="#gisorganization">gis.organization</a></li><li><a href="#gispython">gis.python</a></li><li><a href="#gisrouting">gis.routing</a></li><li><a href="#gisserver">gis.server</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 5/6/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/custom"><span class="arrow-prev"></span><span>Custom</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#giscli">gis.cli</a></li><li><a href="#gisdata">gis.data</a></li><li><a href="#gisdatabase">gis.database</a></li><li><a href="#gisdesktop">gis.desktop</a></li><li><a href="#gisformat">gis.format</a></li><li><a href="#gisgeocoding">gis.geocoding</a></li><li><a href="#gisgeorchestra">gis.georchestra</a></li><li><a href="#gisjava">gis.java</a></li><li><a href="#gisjavascript">gis.javascript</a></li><li><a href="#gismobile">gis.mobile</a></li><li><a href="#gisogc">gis.ogc</a></li><li><a href="#gisorganization">gis.organization</a></li><li><a href="#gispython">gis.python</a></li><li><a href="#gisrouting">gis.routing</a></li><li><a href="#gisserver">gis.server</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -185,6 +185,8 @@
<strong>diagrams.onprem.database.Dgraph</strong></p>
<p><img width="30" src="/img/resources/onprem/database/druid.png" alt="Druid" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Druid</strong></p>
<p><img width="30" src="/img/resources/onprem/database/duckdb.png" alt="Duckdb" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Duckdb</strong></p>
<p><img width="30" src="/img/resources/onprem/database/hbase.png" alt="Hbase" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Hbase</strong>, <strong>HBase</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/influxdb.png" alt="Influxdb" style="float: left; padding-right: 5px;" >
@ -205,6 +207,8 @@
<strong>diagrams.onprem.database.Oracle</strong></p>
<p><img width="30" src="/img/resources/onprem/database/postgresql.png" alt="Postgresql" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Postgresql</strong>, <strong>PostgreSQL</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/qdrant.png" alt="Qdrant" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Qdrant</strong>, <strong>Qdrant</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/scylla.png" alt="Scylla" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Scylla</strong></p>
<h2><a class="anchor" aria-hidden="true" id="onpremdns"></a><a href="#onpremdns" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>onprem.dns</h2>
@ -307,6 +311,12 @@
<strong>diagrams.onprem.network.Bind9</strong></p>
<p><img width="30" src="/img/resources/onprem/network/caddy.png" alt="Caddy" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.Caddy</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-router.png" alt="CiscoRouter" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoRouter</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-switch-l2.png" alt="CiscoSwitchL2" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoSwitchL2</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-switch-l3.png" alt="CiscoSwitchL3" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoSwitchL3</strong></p>
<p><img width="30" src="/img/resources/onprem/network/consul.png" alt="Consul" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.Consul</strong></p>
<p><img width="30" src="/img/resources/onprem/network/envoy.png" alt="Envoy" style="float: left; padding-right: 5px;" >
@ -428,4 +438,4 @@
<strong>diagrams.onprem.workflow.Kubeflow</strong>, <strong>KubeFlow</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/workflow/nifi.png" alt="Nifi" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.workflow.Nifi</strong>, <strong>NiFi</strong> (alias)</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/edge"><span class="arrow-prev"></span><span>Edges</span></a><a class="docs-next button" href="/docs/nodes/aws"><span>AWS</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#onpremaggregator">onprem.aggregator</a></li><li><a href="#onpremanalytics">onprem.analytics</a></li><li><a href="#onpremauth">onprem.auth</a></li><li><a href="#onpremcd">onprem.cd</a></li><li><a href="#onpremcertificates">onprem.certificates</a></li><li><a href="#onpremci">onprem.ci</a></li><li><a href="#onpremclient">onprem.client</a></li><li><a href="#onpremcompute">onprem.compute</a></li><li><a href="#onpremcontainer">onprem.container</a></li><li><a href="#onpremdatabase">onprem.database</a></li><li><a href="#onpremdns">onprem.dns</a></li><li><a href="#onpremetl">onprem.etl</a></li><li><a href="#onpremgitops">onprem.gitops</a></li><li><a href="#onpremgroupware">onprem.groupware</a></li><li><a href="#onpremiac">onprem.iac</a></li><li><a href="#onpremidentity">onprem.identity</a></li><li><a href="#onpreminmemory">onprem.inmemory</a></li><li><a href="#onpremlogging">onprem.logging</a></li><li><a href="#onpremmessaging">onprem.messaging</a></li><li><a href="#onpremmlops">onprem.mlops</a></li><li><a href="#onpremmonitoring">onprem.monitoring</a></li><li><a href="#onpremnetwork">onprem.network</a></li><li><a href="#onpremproxmox">onprem.proxmox</a></li><li><a href="#onpremqueue">onprem.queue</a></li><li><a href="#onpremregistry">onprem.registry</a></li><li><a href="#onpremsearch">onprem.search</a></li><li><a href="#onpremsecurity">onprem.security</a></li><li><a href="#onpremstorage">onprem.storage</a></li><li><a href="#onpremtracing">onprem.tracing</a></li><li><a href="#onpremvcs">onprem.vcs</a></li><li><a href="#onpremworkflow">onprem.workflow</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 7/22/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/edge"><span class="arrow-prev"></span><span>Edges</span></a><a class="docs-next button" href="/docs/nodes/aws"><span>AWS</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#onpremaggregator">onprem.aggregator</a></li><li><a href="#onpremanalytics">onprem.analytics</a></li><li><a href="#onpremauth">onprem.auth</a></li><li><a href="#onpremcd">onprem.cd</a></li><li><a href="#onpremcertificates">onprem.certificates</a></li><li><a href="#onpremci">onprem.ci</a></li><li><a href="#onpremclient">onprem.client</a></li><li><a href="#onpremcompute">onprem.compute</a></li><li><a href="#onpremcontainer">onprem.container</a></li><li><a href="#onpremdatabase">onprem.database</a></li><li><a href="#onpremdns">onprem.dns</a></li><li><a href="#onpremetl">onprem.etl</a></li><li><a href="#onpremgitops">onprem.gitops</a></li><li><a href="#onpremgroupware">onprem.groupware</a></li><li><a href="#onpremiac">onprem.iac</a></li><li><a href="#onpremidentity">onprem.identity</a></li><li><a href="#onpreminmemory">onprem.inmemory</a></li><li><a href="#onpremlogging">onprem.logging</a></li><li><a href="#onpremmessaging">onprem.messaging</a></li><li><a href="#onpremmlops">onprem.mlops</a></li><li><a href="#onpremmonitoring">onprem.monitoring</a></li><li><a href="#onpremnetwork">onprem.network</a></li><li><a href="#onpremproxmox">onprem.proxmox</a></li><li><a href="#onpremqueue">onprem.queue</a></li><li><a href="#onpremregistry">onprem.registry</a></li><li><a href="#onpremsearch">onprem.search</a></li><li><a href="#onpremsecurity">onprem.security</a></li><li><a href="#onpremstorage">onprem.storage</a></li><li><a href="#onpremtracing">onprem.tracing</a></li><li><a href="#onpremvcs">onprem.vcs</a></li><li><a href="#onpremworkflow">onprem.workflow</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -185,6 +185,8 @@
<strong>diagrams.onprem.database.Dgraph</strong></p>
<p><img width="30" src="/img/resources/onprem/database/druid.png" alt="Druid" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Druid</strong></p>
<p><img width="30" src="/img/resources/onprem/database/duckdb.png" alt="Duckdb" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Duckdb</strong></p>
<p><img width="30" src="/img/resources/onprem/database/hbase.png" alt="Hbase" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Hbase</strong>, <strong>HBase</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/influxdb.png" alt="Influxdb" style="float: left; padding-right: 5px;" >
@ -205,6 +207,8 @@
<strong>diagrams.onprem.database.Oracle</strong></p>
<p><img width="30" src="/img/resources/onprem/database/postgresql.png" alt="Postgresql" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Postgresql</strong>, <strong>PostgreSQL</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/qdrant.png" alt="Qdrant" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Qdrant</strong>, <strong>Qdrant</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/database/scylla.png" alt="Scylla" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.database.Scylla</strong></p>
<h2><a class="anchor" aria-hidden="true" id="onpremdns"></a><a href="#onpremdns" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>onprem.dns</h2>
@ -307,6 +311,12 @@
<strong>diagrams.onprem.network.Bind9</strong></p>
<p><img width="30" src="/img/resources/onprem/network/caddy.png" alt="Caddy" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.Caddy</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-router.png" alt="CiscoRouter" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoRouter</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-switch-l2.png" alt="CiscoSwitchL2" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoSwitchL2</strong></p>
<p><img width="30" src="/img/resources/onprem/network/cisco-switch-l3.png" alt="CiscoSwitchL3" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.CiscoSwitchL3</strong></p>
<p><img width="30" src="/img/resources/onprem/network/consul.png" alt="Consul" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.network.Consul</strong></p>
<p><img width="30" src="/img/resources/onprem/network/envoy.png" alt="Envoy" style="float: left; padding-right: 5px;" >
@ -428,4 +438,4 @@
<strong>diagrams.onprem.workflow.Kubeflow</strong>, <strong>KubeFlow</strong> (alias)</p>
<p><img width="30" src="/img/resources/onprem/workflow/nifi.png" alt="Nifi" style="float: left; padding-right: 5px;" >
<strong>diagrams.onprem.workflow.Nifi</strong>, <strong>NiFi</strong> (alias)</p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/11/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/edge"><span class="arrow-prev"></span><span>Edges</span></a><a class="docs-next button" href="/docs/nodes/aws"><span>AWS</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#onpremaggregator">onprem.aggregator</a></li><li><a href="#onpremanalytics">onprem.analytics</a></li><li><a href="#onpremauth">onprem.auth</a></li><li><a href="#onpremcd">onprem.cd</a></li><li><a href="#onpremcertificates">onprem.certificates</a></li><li><a href="#onpremci">onprem.ci</a></li><li><a href="#onpremclient">onprem.client</a></li><li><a href="#onpremcompute">onprem.compute</a></li><li><a href="#onpremcontainer">onprem.container</a></li><li><a href="#onpremdatabase">onprem.database</a></li><li><a href="#onpremdns">onprem.dns</a></li><li><a href="#onpremetl">onprem.etl</a></li><li><a href="#onpremgitops">onprem.gitops</a></li><li><a href="#onpremgroupware">onprem.groupware</a></li><li><a href="#onpremiac">onprem.iac</a></li><li><a href="#onpremidentity">onprem.identity</a></li><li><a href="#onpreminmemory">onprem.inmemory</a></li><li><a href="#onpremlogging">onprem.logging</a></li><li><a href="#onpremmessaging">onprem.messaging</a></li><li><a href="#onpremmlops">onprem.mlops</a></li><li><a href="#onpremmonitoring">onprem.monitoring</a></li><li><a href="#onpremnetwork">onprem.network</a></li><li><a href="#onpremproxmox">onprem.proxmox</a></li><li><a href="#onpremqueue">onprem.queue</a></li><li><a href="#onpremregistry">onprem.registry</a></li><li><a href="#onpremsearch">onprem.search</a></li><li><a href="#onpremsecurity">onprem.security</a></li><li><a href="#onpremstorage">onprem.storage</a></li><li><a href="#onpremtracing">onprem.tracing</a></li><li><a href="#onpremvcs">onprem.vcs</a></li><li><a href="#onpremworkflow">onprem.workflow</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 7/22/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/guides/edge"><span class="arrow-prev"></span><span>Edges</span></a><a class="docs-next button" href="/docs/nodes/aws"><span>AWS</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#onpremaggregator">onprem.aggregator</a></li><li><a href="#onpremanalytics">onprem.analytics</a></li><li><a href="#onpremauth">onprem.auth</a></li><li><a href="#onpremcd">onprem.cd</a></li><li><a href="#onpremcertificates">onprem.certificates</a></li><li><a href="#onpremci">onprem.ci</a></li><li><a href="#onpremclient">onprem.client</a></li><li><a href="#onpremcompute">onprem.compute</a></li><li><a href="#onpremcontainer">onprem.container</a></li><li><a href="#onpremdatabase">onprem.database</a></li><li><a href="#onpremdns">onprem.dns</a></li><li><a href="#onpremetl">onprem.etl</a></li><li><a href="#onpremgitops">onprem.gitops</a></li><li><a href="#onpremgroupware">onprem.groupware</a></li><li><a href="#onpremiac">onprem.iac</a></li><li><a href="#onpremidentity">onprem.identity</a></li><li><a href="#onpreminmemory">onprem.inmemory</a></li><li><a href="#onpremlogging">onprem.logging</a></li><li><a href="#onpremmessaging">onprem.messaging</a></li><li><a href="#onpremmlops">onprem.mlops</a></li><li><a href="#onpremmonitoring">onprem.monitoring</a></li><li><a href="#onpremnetwork">onprem.network</a></li><li><a href="#onpremproxmox">onprem.proxmox</a></li><li><a href="#onpremqueue">onprem.queue</a></li><li><a href="#onpremregistry">onprem.registry</a></li><li><a href="#onpremsearch">onprem.search</a></li><li><a href="#onpremsecurity">onprem.security</a></li><li><a href="#onpremstorage">onprem.storage</a></li><li><a href="#onpremtracing">onprem.tracing</a></li><li><a href="#onpremvcs">onprem.vcs</a></li><li><a href="#onpremworkflow">onprem.workflow</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -91,6 +91,8 @@
<strong>diagrams.saas.cdn.Cloudflare</strong></p>
<p><img width="30" src="/img/resources/saas/cdn/fastly.png" alt="Fastly" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.cdn.Fastly</strong></p>
<p><img width="30" src="/img/resources/saas/cdn/imperva.png" alt="Imperva" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.cdn.Imperva</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saaschat"></a><a href="#saaschat" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.chat</h2>
<p><img width="30" src="/img/resources/saas/chat/discord.png" alt="Discord" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.chat.Discord</strong></p>
@ -134,6 +136,15 @@
<h2><a class="anchor" aria-hidden="true" id="saasmedia"></a><a href="#saasmedia" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.media</h2>
<p><img width="30" src="/img/resources/saas/media/cloudinary.png" alt="Cloudinary" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.media.Cloudinary</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saaspayment"></a><a href="#saaspayment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.payment</h2>
<p><img width="30" src="/img/resources/saas/payment/adyen.png" alt="Adyen" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Adyen</strong></p>
<p><img width="30" src="/img/resources/saas/payment/amazon-pay.png" alt="AmazonPay" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.AmazonPay</strong></p>
<p><img width="30" src="/img/resources/saas/payment/paypal.png" alt="Paypal" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Paypal</strong></p>
<p><img width="30" src="/img/resources/saas/payment/stripe.png" alt="Stripe" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Stripe</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saasrecommendation"></a><a href="#saasrecommendation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.recommendation</h2>
<p><img width="30" src="/img/resources/saas/recommendation/recombee.png" alt="Recombee" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.recommendation.Recombee</strong></p>
@ -147,4 +158,4 @@
<strong>diagrams.saas.social.Facebook</strong></p>
<p><img width="30" src="/img/resources/saas/social/twitter.png" alt="Twitter" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.social.Twitter</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/20/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/programming"><span class="arrow-prev"></span><span>Programming</span></a><a class="docs-next button" href="/docs/nodes/c4"><span>C4</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#saasalerting">saas.alerting</a></li><li><a href="#saasanalytics">saas.analytics</a></li><li><a href="#saasautomation">saas.automation</a></li><li><a href="#saascdn">saas.cdn</a></li><li><a href="#saaschat">saas.chat</a></li><li><a href="#saascommunication">saas.communication</a></li><li><a href="#saascrm">saas.crm</a></li><li><a href="#saasfilesharing">saas.filesharing</a></li><li><a href="#saasidentity">saas.identity</a></li><li><a href="#saaslogging">saas.logging</a></li><li><a href="#saasmedia">saas.media</a></li><li><a href="#saasrecommendation">saas.recommendation</a></li><li><a href="#saassecurity">saas.security</a></li><li><a href="#saassocial">saas.social</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 8/28/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/programming"><span class="arrow-prev"></span><span>Programming</span></a><a class="docs-next button" href="/docs/nodes/c4"><span>C4</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#saasalerting">saas.alerting</a></li><li><a href="#saasanalytics">saas.analytics</a></li><li><a href="#saasautomation">saas.automation</a></li><li><a href="#saascdn">saas.cdn</a></li><li><a href="#saaschat">saas.chat</a></li><li><a href="#saascommunication">saas.communication</a></li><li><a href="#saascrm">saas.crm</a></li><li><a href="#saasfilesharing">saas.filesharing</a></li><li><a href="#saasidentity">saas.identity</a></li><li><a href="#saaslogging">saas.logging</a></li><li><a href="#saasmedia">saas.media</a></li><li><a href="#saaspayment">saas.payment</a></li><li><a href="#saasrecommendation">saas.recommendation</a></li><li><a href="#saassecurity">saas.security</a></li><li><a href="#saassocial">saas.social</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

@ -91,6 +91,8 @@
<strong>diagrams.saas.cdn.Cloudflare</strong></p>
<p><img width="30" src="/img/resources/saas/cdn/fastly.png" alt="Fastly" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.cdn.Fastly</strong></p>
<p><img width="30" src="/img/resources/saas/cdn/imperva.png" alt="Imperva" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.cdn.Imperva</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saaschat"></a><a href="#saaschat" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.chat</h2>
<p><img width="30" src="/img/resources/saas/chat/discord.png" alt="Discord" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.chat.Discord</strong></p>
@ -134,6 +136,15 @@
<h2><a class="anchor" aria-hidden="true" id="saasmedia"></a><a href="#saasmedia" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.media</h2>
<p><img width="30" src="/img/resources/saas/media/cloudinary.png" alt="Cloudinary" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.media.Cloudinary</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saaspayment"></a><a href="#saaspayment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.payment</h2>
<p><img width="30" src="/img/resources/saas/payment/adyen.png" alt="Adyen" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Adyen</strong></p>
<p><img width="30" src="/img/resources/saas/payment/amazon-pay.png" alt="AmazonPay" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.AmazonPay</strong></p>
<p><img width="30" src="/img/resources/saas/payment/paypal.png" alt="Paypal" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Paypal</strong></p>
<p><img width="30" src="/img/resources/saas/payment/stripe.png" alt="Stripe" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.payment.Stripe</strong></p>
<h2><a class="anchor" aria-hidden="true" id="saasrecommendation"></a><a href="#saasrecommendation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>saas.recommendation</h2>
<p><img width="30" src="/img/resources/saas/recommendation/recombee.png" alt="Recombee" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.recommendation.Recombee</strong></p>
@ -147,4 +158,4 @@
<strong>diagrams.saas.social.Facebook</strong></p>
<p><img width="30" src="/img/resources/saas/social/twitter.png" alt="Twitter" style="float: left; padding-right: 5px;" >
<strong>diagrams.saas.social.Twitter</strong></p>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 2/20/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/programming"><span class="arrow-prev"></span><span>Programming</span></a><a class="docs-next button" href="/docs/nodes/c4"><span>C4</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#saasalerting">saas.alerting</a></li><li><a href="#saasanalytics">saas.analytics</a></li><li><a href="#saasautomation">saas.automation</a></li><li><a href="#saascdn">saas.cdn</a></li><li><a href="#saaschat">saas.chat</a></li><li><a href="#saascommunication">saas.communication</a></li><li><a href="#saascrm">saas.crm</a></li><li><a href="#saasfilesharing">saas.filesharing</a></li><li><a href="#saasidentity">saas.identity</a></li><li><a href="#saaslogging">saas.logging</a></li><li><a href="#saasmedia">saas.media</a></li><li><a href="#saasrecommendation">saas.recommendation</a></li><li><a href="#saassecurity">saas.security</a></li><li><a href="#saassocial">saas.social</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>
</span></div></article></div><div class="docLastUpdate"><em>Last updated on 8/28/2025</em></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/nodes/programming"><span class="arrow-prev"></span><span>Programming</span></a><a class="docs-next button" href="/docs/nodes/c4"><span>C4</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#saasalerting">saas.alerting</a></li><li><a href="#saasanalytics">saas.analytics</a></li><li><a href="#saasautomation">saas.automation</a></li><li><a href="#saascdn">saas.cdn</a></li><li><a href="#saaschat">saas.chat</a></li><li><a href="#saascommunication">saas.communication</a></li><li><a href="#saascrm">saas.crm</a></li><li><a href="#saasfilesharing">saas.filesharing</a></li><li><a href="#saasidentity">saas.identity</a></li><li><a href="#saaslogging">saas.logging</a></li><li><a href="#saasmedia">saas.media</a></li><li><a href="#saaspayment">saas.payment</a></li><li><a href="#saasrecommendation">saas.recommendation</a></li><li><a href="#saassecurity">saas.security</a></li><li><a href="#saassocial">saas.social</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><a href="/" class="nav-home"><img src="/img/diagrams.ico" alt="Diagrams" width="66" height="58"/></a><div><h5>Docs</h5><a href="/docs/getting-started/installation">Getting Started</a><a href="/docs/guides/diagram">Guides</a><a href="/docs/nodes/aws">Nodes</a></div><div><h5>More</h5><iframe src="https://ghbtns.com/github-btn.html?user=mingrammer&amp;repo=diagrams&amp;type=star&amp;count=true&amp;size=large" frameBorder="0" scrolling="0" width="170" height="30" title="Star mingrammer/diagrams on GitHub"></iframe></div></section><section class="copyright">Copyright © 2025 mingrammer</section></footer></div></body></html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save