- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- Get started
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ structurizr
- ΠΠ±ΡΠ΅ΠΊΡΡ structurizr
- Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
- ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ
- ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ Ρ git
- Π Π°Π±ΠΎΡΠ° ΡΠΎ structurizr-lite
Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ architecture as a code. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΌΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΎΡ Π½ΡΠΆΠ΄Ρ "ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡ Π΅ΠΌΡ" ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠΎΠ²Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π‘4 ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
git clone https://github.com/Nikolo/arch-as-code-template arch-as-code
cd arch-as-code
make init ARGS="-n MyCompanyName"
make ss_group ARGS="-n Widget"
make ss_group ARGS="-n Backoffice"
make ss_group ARGS="-n Core"
git remote rename origin origin-template
git remote add origin git@......
git add .
git commit -m'Initial project'
git push origin
git checkout -b TASK-123_MyNewProject
make proj ARGS='-s backoffice_fetcher'
#edit files
make run
# open 127.0.0.1:8080 in browser
# check results
git add .
git commit -m'My new project purpose'
git push origin TASK123-MyNewProject
# create merge or pull request for review
Structurizr - ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Π‘4. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ DSL structurizr, ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΠΉ workspace Π½Π° Π²ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΉ Π»Π°Π½Π΄ΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
ΠΠ΅ΡΡΠΎΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΡΠ΅ΡΠΎΠ², ΡΠΎΠ»ΠΈ, ΠΏΠ΅ΡΡΠΎΠ½Ρ ΠΈ Ρ.Π΄.).
Software System - ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·Ρ (value) ΡΠ²ΠΎΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΡΡΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π»ΡΠ΄ΡΠΌΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ (Software System), ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΡΠ΅, Π½ΠΎ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ).
ΠΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½Π°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ:
- Π³ΡΡΠΏΠΏΠΎΠΉ Π»ΡΠ΄Π΅ΠΉ (ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ)
- ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡΡ (Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½/ΠΈΠ³ΡΡ/ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ/...) ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ΅ΠΊΠΎΠΌ (ΠΌΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°/WEB/...)
- ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Software system ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Ρ, ΡΡΠΎ Π±Ρ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ Π»Π΅Π³ΠΊΠΎ ΡΡΠΈΡΡΠ²Π°Π»Π°ΡΡ Π·ΠΎΠ½Π° ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
Π‘ΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ Π³ΡΡΠΏΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π²ΡΠ·ΠΎΠ²Π°:
make ss_group ARGS='-n GROUP_NAME'
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΡΠ°ΠΉΠ», ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.Π΄.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΡΠΈΠ½ΡΡΠΎ:
- ΠΠ°Π²Π°ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅;
- Π£ΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΠΠ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π²Π΅ΡΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠ»Ρ Π‘Π£ΠΠ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π‘Π£ΠΠ ΠΈ Π΅Ρ Π²Π΅ΡΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Postgres 13;
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π°Π²Π°ΡΡ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ.
Π‘Π²ΡΠ·ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ _rel.dsl ΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΏΠΊΠ°Ρ rel Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²
Π ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 3 ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΡΠΎΠ²Π½Ρ 0, ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΉ Π»Π°Π½Π΄ΡΠ°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΡΠΎΠ²Π½Ρ 1. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½ΡΠ°Π½ΡΡ. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠΈΡΡΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ:
- ΠΠ°ΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ?
- ΠΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ?
- ΠΠ°ΠΊ ΠΎΠ½Π° Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ΅Π΄Ρ? ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΠΊΡΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π° Π°ΠΊΡΠΎΡΠ°Ρ ΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π° Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ , ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°Ρ ΠΈ ΠΏΡΠΎΡΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π΄Π΅ΡΠ°Π»ΡΡ .
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- Π£Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ΅Π΄Ρ;
- ΠΠ΅Π· ΠΎΠΏΠ°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΡ;
- ΠΠΎΠ½ΡΡΡ, Ρ ΠΊΠ΅ΠΌ Π²Π°ΠΌ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ ΠΏΠ΅ΡΠ΅Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ ΠΎ ΠΌΠ΅ΠΆΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡΡ .
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° 2 ΡΡΠΎΠ²Π½Ρ, ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΡΡΠ°Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ SoftwareSystem (ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠΎΡΡΠΎΠΈΡ) ΠΈ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°ΡΡΡ. ΠΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
Π¦Π΅Π»ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ β ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
- ΠΠ°ΠΊΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°?
- ΠΠ· ΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠΎΡΡΠΎΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°?
- ΠΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ?
- ΠΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ?
- ΠΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ?
ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ» ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ workspace.dsl, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π· ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ !import Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΡΡΠΎΠΈΡΡΡ ΠΎΠ±ΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ (model) ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ (views) ΠΈ ΡΡΠΈΠ»Π΅ΠΉ (styles)
workspace "Project architect landscape" "The architectural landscape of project" {
model {
!include model/person.dsl
!include model/software_system_group.dsl
!include model/relationship.dsl
}
views {
!include views
!include style/styles.dsl
}
}
ΠΠΎΠ΄Π΅Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ (software system), ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌ (container) Π‘Π²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ dsl ΡΠ°ΠΉΠ»Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· include ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°ΠΌΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ ΡΠ°ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ :
- ΠΠ±ΡΠΈΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ System landscape ΠΈ System context ΠΏΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π·Π°Π΄Π°ΡΠ°ΠΌ/ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ (views Π½Π° context ΠΈ container)
- Π€Π°ΠΉΠ» ΡΠΎ ΡΡΠΈΠ»ΡΠΌΠΈ styles.dsl ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΡ Π΅ΠΌΠ°Ρ .
ΠΠ»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ
make init ARGS='-n COMPANY_NAME'
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ $_{name} - Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ.
- group_{name} - group
- s_{name} - softwareSystem
- c_{name} - container
- p_{name} - person
ΠΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² /model/person.dsl
p_b2b_customer = person "B2B Customer" {
tags "TASK-123, SuperFeature"
}
ΠΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π°ΠΊΡΠΎΡΡ. ΠΠΎΠ²ΡΠ΅ ΡΡΠ³ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅Π³ΠΎΠ².
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π³ΡΡΠΏΠΏΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΆΠ΅ Π·Π°Π²Π΅Π΄Π΅Π½Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅ /model/software_system_group.dsl
Π‘ΠΈΡΡΠ΅ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π³ΡΡΠΏΠΏ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ /model/software_system_group/{group_name}/software_system/{software_system_name}.dsl
s_super_feature = softwaresystem "Super feature service" {
tags "Context: System"
tags "TASK-123, SuperFeature"
// ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²
}
ΠΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³ ΡΡΠΈΠ»Ρ (Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ styles.dsl) ΠΈ ΡΡΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ²ΡΠ΅ ΡΡΠ³ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌ (Π² ΡΠΎΠΌ ΠΆΠ΅ ΡΠ°ΠΉΠ»Π΅, ΡΡΠΎ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°)
s_mysoftware = softwaresystem "My software" {
tags "Context: System" "My software"
c_mysoftware_api = container "Mysoftware API" {
technology "Java"
tags "Container: Backend Service", "Mysoftware"
}
c_mysoftware_pgsql_db = container "Mysoftware DB" {
technology "PostgreSQL"
tags "Container: Database" "Mysoftware"
}
c_mysoftware_redis = container "Mysoftware Redis" {
technology "Redis"
tags "Container: Database" "Mysoftware"
}
}
ΠΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³ ΡΡΠΈΠ»Ρ (Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ styles.dsl) ΠΈ ΡΡΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. ΠΠΎΠ²ΡΠ΅ ΡΡΠ³ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ Π½ΡΠΆΠ½ΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·ΠΈ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΠΎ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
- Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ (ΡΠ²ΡΠ·Ρ SoftwareSystem -> SoftwareSystem), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ³ΠΎΠΌ Relation: SoftwareSystem
- Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ (ΡΠ²ΡΠ·ΠΈ SoftwareSystem -> Container ΠΈΠ»ΠΈ Container -> SoftwareSystem) , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ³ΠΎΠΌ Relation: Container
- Π ΡΠ°ΠΌΠΊΠ°Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ»ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ (ΡΠ²ΡΠ·ΠΈ Container -> Container) , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΠ³ΠΎΠΌ Relation: Container Π‘Π²ΡΠ·ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ΅Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ .
Π‘Π²ΡΠ·ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ/ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ {softwareSystemName}_rel.dsl
ΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ° /software_system/{systemName}/rel
s_mysoftware -> s_newsoftware "" "gRPC" {
tags "Relation: Synchronous, Relation: SoftwareSystem"
tags "TASK-123, SuperFeature"
}
s_mysoftware -> c_newsoftware_api "GetThings" "gRPC" {
tags "Relation: Synchronous, Relation: Container"
tags "TASK-123, SuperFeature"
}
ΠΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΊΡΠΎΠΌΠ΅ ΡΡΠ³Π° ΠΏΠΎ ΡΠΈΠΏΡ ΡΠ²ΡΠ·ΠΈ (ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ) ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³ ΡΡΠΈΠ»Ρ (Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ styles.dsl) ΠΈ ΡΡΠ³ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ/ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. ΠΠΎΠ²ΡΠ΅ ΡΡΠ³ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ°.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ΅ΡΠ΅Π· kafka ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ:
- ΠΠ° ΡΡΠΎΠ²Π½Π΅ software system ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ (ΡΡΠ³ Relation: Asynchronous), ΡΠ»Π΅ΠΌΠ΅Π½Ρ kafka ΠΊΠ°ΠΊ softwareSystem Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ
- ΠΠ° ΡΡΠΎΠ²Π½Π΅ container ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ container kafka Π²Π½ΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ-consumer-a, ΠΎΡΡΠ°ΠΆΠ°ΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ (producer), ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅. ΠΠ½ΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ-consumer Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° kafka Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ/ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ consumer-Π°ΠΌΠΈ
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ°Π·Π΄Π΅Π»Π° /views
Π£ΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² system_landscape.dsl, ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ
systemlandscape "SystemLandscape" {
include *
exclude "relationship.tag==Relation: Container"
autoLayout
}
ΠΠ»Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡ Π΅ΠΌ ΠΏΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π² system_context.dsl ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ == Π½Π°Π·Π²Π°Π½ΠΈΠ΅ SoftwareSystem
systemContext s_mysoftware "s_mysoftware" {
include *
exclude "relationship.tag==Relation: Container"
autoLayout
}
Π§Π΅ΡΠ΅Π· exclude ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² container.dsl
container s_mysoftware "My_Software_Container" {
include *
autoLayout
exclude "relationship.tag==Relation: SoftwareSystem"
}
Π§Π΅ΡΠ΅Π· exclude ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ /views/PROJ/{Project-folder}
, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ» .dsl
Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ ΠΏΠ°ΠΏΠΊΡ .sequences
Ρ Π½Π°Π±ΠΎΡΠΎΠΌ plantuml Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ sequence Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ. Π€Π°ΠΉΠ» .dsl
Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°/Π·Π°Π΄Π°ΡΠΈ Π² jira.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ³ΠΎΠ² Π½Π° Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌΡ ΠΏΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡΠΎΠΈΡΡΡ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ (Π΄Π»Ρ ΡΡΠ³Π° TASK-XXX
):
ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° {softwareSystemName}
, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
Π‘ΠΊΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
make proj ARGS='-p "TASK-XXX_Business_name" -s softwareSystemName'
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ (ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π° template/proj.tmpl
):
systemContext {softwareSystemName} "TASK-XXX_ctx" {
include "element.tag==TASK-XXX"
exclude "relationship.tag==Relation: Container"
exclude "relationship.tag!=TASK-XXX"
autoLayout
}
container {softwareSystemName} "TASK-XXX" {
include element.type==person
include element.type==container
exclude "element.tag!=TASK-XXX"
include element.type==softwaresystem
exclude "element.tag!=TASK-XXX"
exclude "relationship.tag!=TASK-XXX"
autoLayout
}
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ structurizr on premise ΡΠΎ Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ structurizr ΠΏΡΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΠΊΡΠΎΠ΅ΡΡΡ Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΠΌΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, Π² Ρ.Ρ. ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Task-123
:
systemContext s_super_feature "TASK-123_Super_Feature_ctx" {
include "element.tag==TASK-123"
exclude "relationship.tag==Relation: Container"
autoLayout
}
container s_super_feature "TASK-123_Super_Feature_ctx" {
include element.type==person
include element.type==container
exclude "element.tag!=TASK-123"
include element.type==softwaresystem
exclude "element.tag!=TASK-123"
exclude "relationship.tag!=TASK-123"
autoLayout
}
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊ autoLayout ΠΈ ΡΠ°ΡΡΡΠ°Π²ΠΈΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ structurizr lite) ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ, Π½ΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π²ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΊΠ° Ρ ΡΠ°Π½ΠΈΠΌ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ autoLayout
Π¦Π²Π΅ΡΠΎΠ²Π°Ρ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Ρ
Π Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ groovy ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Π³ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈ ΡΠ²ΡΠ·ΡΠΌ. Π’Π΅Π³ Π΄Π»Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π΅ΡΠΊΠΈ Π² git. ΠΠ»Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅Π³ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ΅Π³Π° ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π΅ΡΠΊΠΈ ΠΈ ΡΡΠΎ:
- Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ΅Π³ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅Π³ΠΎΠ² - Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ "NEW"
- Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅Π³ΠΎΠ² - Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ "MOD"
Π’Π΅Π³ΠΈ "NEW" ΠΈ "MOD" ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Π― Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ:
- ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° Person
- ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° Component
- ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π³Π° "NOT_MODIFIED" Π² Π³ΡΡΠΏΠΏΠ΅ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΡΠΌ ΡΠ΅Π³ΠΎΠΌ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½ΠΎ Π½Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΡΡ).
ΠΠ°ΠΆΠ½ΠΎ!
- ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π²Π΅ΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ structurizr-lite.
- ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ env Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ΅Π³Π° Π΄Π»Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠΈ (Π΄Π΅Π»Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ make run)
Structurizr ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ°. Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΎΡΠΎΡΠΌΠ»ΡΡΡ ADR Π² Π²ΠΈΠ΄Π΅ markdown ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅ adrs. ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
- ADR Π²Π΅Π΄ΡΡΡΡ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΡΡ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ xxxx-adr-name Π³Π΄Π΅ xxxx - ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ
- ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ADR
- ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Status (Π‘ΡΠ°ΡΡΡ) ΠΏΠΎ adr, Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Accepted
- Context (ΠΠΎΠ½ΡΠ΅ΠΊΡΡ) ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π½Π΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ.
- Decision (Π Π΅ΡΠ΅Π½ΠΈΠ΅) Π ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π½Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ "ΠΏΠΎΡΠ΅ΠΌΡ", Π° Π½Π΅ "ΠΊΠ°ΠΊ". Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π°Π±ΠΎΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ², Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΡΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ.
- Consequences (ΠΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ) Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΡ ΠΈ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΠ»ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡ Π½Π΅-ΡΡΠΎΠ²Π½Π΅Π²Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌ ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ).
Structurizr ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π΅ΡΡΠΈ ADR ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈΡ Π² Π²Π΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Decisions Π½Π° ΡΡΠΎΠ²Π½Π΅ SoftwareSystem ΠΈ Containers
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ°ΡΠΊΠ° ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "TASK-123_SuperFeature"
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΡΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΠΊ structurizr-lite
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ make run
.
ΠΠ°ΠΆΠ½ΠΎ! ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΠΊΠ° Π² git
ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΡΠΊΡΠ°ΡΠΊΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π²Π΅ΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡ structurizr-lite
!