Files
progcode/web/public/assets/editorial/2024/modular-monolith-2024-dependency-matrix.svg
T
huncode ecb66c82b3
Build and deploy / deploy (push) Successful in 15s
revise February 2024 modular monolith articles
2026-07-31 15:37:40 +03:00

66 lines
4.8 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 920" role="img" aria-labelledby="title desc">
<title id="title">Матрица разрешённых зависимостей учебного модульного монолита</title>
<desc id="desc">Четыре модуля. Разрешены checkout к catalog API, checkout к payments API и payments к notifications API. Остальные направления заблокированы; internal поверхности не входят в матрицу разрешений.</desc>
<rect width="820" height="920" rx="28" fill="#0B1220"/>
<rect x="24" y="24" width="772" height="872" rx="20" fill="#111C30" stroke="#263653" stroke-width="2"/>
<text x="56" y="78" fill="#F8FAFC" font-family="Arial, sans-serif" font-size="31" font-weight="700">Карта зависимостей: не папки, а правила</text>
<text x="56" y="112" fill="#B9C8DE" font-family="Arial, sans-serif" font-size="19">Строка — consumer, столбец — owner. Зелёная клетка допускает только public API.</text>
<text x="56" y="182" fill="#8FA4C3" font-family="Arial, sans-serif" font-size="19" font-weight="700">from \ to</text>
<g font-family="Arial, sans-serif" font-size="18" font-weight="700" text-anchor="middle">
<text x="298" y="172" fill="#D7E3F5">catalog</text>
<text x="440" y="172" fill="#D7E3F5">checkout</text>
<text x="582" y="172" fill="#D7E3F5">payments</text>
<text x="724" y="172" fill="#D7E3F5">notifications</text>
</g>
<g fill="#18263E" stroke="#30425F" stroke-width="1.5">
<rect x="190" y="198" width="130" height="108" rx="12"/>
<rect x="332" y="198" width="130" height="108" rx="12"/>
<rect x="474" y="198" width="130" height="108" rx="12"/>
<rect x="616" y="198" width="130" height="108" rx="12"/>
<rect x="190" y="320" width="130" height="108" rx="12"/>
<rect x="332" y="320" width="130" height="108" rx="12"/>
<rect x="474" y="320" width="130" height="108" rx="12"/>
<rect x="616" y="320" width="130" height="108" rx="12"/>
<rect x="190" y="442" width="130" height="108" rx="12"/>
<rect x="332" y="442" width="130" height="108" rx="12"/>
<rect x="474" y="442" width="130" height="108" rx="12"/>
<rect x="616" y="442" width="130" height="108" rx="12"/>
<rect x="190" y="564" width="130" height="108" rx="12"/>
<rect x="332" y="564" width="130" height="108" rx="12"/>
<rect x="474" y="564" width="130" height="108" rx="12"/>
<rect x="616" y="564" width="130" height="108" rx="12"/>
</g>
<g font-family="Arial, sans-serif" font-size="20" font-weight="700" fill="#D7E3F5">
<text x="56" y="260">catalog</text>
<text x="56" y="382">checkout</text>
<text x="56" y="504">payments</text>
<text x="56" y="626">notifications</text>
</g>
<g font-family="Arial, sans-serif" font-size="20" text-anchor="middle">
<g fill="#6F849F"><text x="255" y="260">—</text><text x="397" y="260">—</text><text x="539" y="260">—</text><text x="681" y="260">—</text></g>
<g fill="#6F849F"><text x="397" y="382">—</text><text x="681" y="382">—</text></g>
<g fill="#6F849F"><text x="255" y="504">—</text><text x="397" y="504">—</text><text x="539" y="504">—</text></g>
<g fill="#6F849F"><text x="255" y="626">—</text><text x="397" y="626">—</text><text x="539" y="626">—</text><text x="681" y="626">—</text></g>
</g>
<g fill="#163D38" stroke="#39D49A" stroke-width="2">
<rect x="198" y="328" width="114" height="92" rx="10"/>
<rect x="482" y="328" width="114" height="92" rx="10"/>
<rect x="624" y="450" width="114" height="92" rx="10"/>
</g>
<g fill="#B6F4D8" font-family="Arial, sans-serif" font-size="18" font-weight="700" text-anchor="middle">
<text x="255" y="367">✓ API</text><text x="255" y="394">catalog</text>
<text x="539" y="367">✓ API</text><text x="539" y="394">payments</text>
<text x="681" y="489">✓ API</text><text x="681" y="516">notifications</text>
</g>
<rect x="56" y="718" width="708" height="130" rx="16" fill="#0E1727" stroke="#2B3A54" stroke-width="2"/>
<circle cx="88" cy="759" r="9" fill="#39D49A"/>
<text x="110" y="766" fill="#D7E3F5" font-family="Arial, sans-serif" font-size="19">разрешено: consumer обращается к названному owner.api</text>
<circle cx="88" cy="801" r="9" fill="#7486A0"/>
<text x="110" y="808" fill="#D7E3F5" font-family="Arial, sans-serif" font-size="19">— : нет declared direction; не добавлять без сценария и review</text>
<text x="56" y="879" fill="#8FA4C3" font-family="Arial, sans-serif" font-size="17">internal поверхности не становятся допустимыми от того, что лежат в соседней папке.</text>
</svg>