์ง๋ ๋ช ๋ ๋์ ๋๋ ๋ฌธ์ํ ์์ ์ ๋ ๋ง์ด ์ฐธ์ฌํ๊ฒ ๋์์ต๋๋ค. ์ด ์์คํ ์ด๋ ์ ์์คํ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ค๋ช ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ชจ๋ ์ฃผ์ ๊ฐ์ฒด์ ์ด๋ฌํ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ฒฐ์ ํ์ํ๋ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ๋ ๊ฒ๋ ๋งค์ฐ ์ฝ์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฐ์ฅ ๋ฌธ์ ๊ฐ ๋๋ ์ธก๋ฉด์ ์ด ๋ฌธ์๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ ๋๋ค. ํ ์คํธ๋ ๊ด์ฐฎ๊ฒ ์ง๋ง ๋ค์ด์ด๊ทธ๋จ์... ์๋๋ฉด... ๋ชจ๋ ๋ฌธ์๋ ์จ๋ผ์ธ์ ์์ต๋๋ค. html ํ์์ ๊ฒฝ์ฐ ํ ์คํธ์๋ ์ค์ ๋ก ๋ค์ด์ด๊ทธ๋จ์ ํ์ํ๋ gif/jpeg/png ๊ทธ๋ฆผ์ด ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ด์ด๊ทธ๋จ์ Visio๋ ์จ๋ผ์ธ ์๋น์ค a la draw.io์ ๊ฐ์ ๋ค์ํ ํ๋ก๊ทธ๋จ์์ ๊ทธ๋ ค์ง๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ํฝ ํ์์ผ๋ก ๋ด๋ณด๋ด๊ณ HTML์ ์ฒจ๋ถํฉ๋๋ค. ๊ฐ๋จ ํด.
๋ฌธ์ ๊ฐ ๋ฌด์์
๋๊น?
๊ณํ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋จํฉ๋๋ค. ๋ ์ ํํ๊ฒ๋ ๊ทธ๋ค์ง ๋ณต์กํ์ง ์์ต๋๋ค. ์, ๊ฐ์ฒด ์๋ XNUMX๊ฐ ๋๋ XNUMX๊ฐ์ด๋ฉฐ ์ฐ๊ฒฐ ์๋ ๊ฑฐ์ ๊ฐ์ต๋๋ค. ํ๋ฌ์ค ์๋ช
, ์ผ๋ถ ์ง์ . ๊ฐ๋จํ ๊ณํ์ ๋ง๋ก ์ค๋ช
ํ ์ ์์ง๋ง ๋๋ฌด ๋ณต์กํ ๊ณํ์ ์ํด... (c) "๊ทธ๋ค์ ์ดํดํ์ง ๋ชปํ ๊ฒ์
๋๋ค, ์ ์๋." ๋ง์ ๊ณํ์ด ์์ผ๋ฏ๋ก ์ ๊ธฐ์ ์ผ๋ก, ๊ฐํ์ ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ๋์์์ด ์๋ํ๋ฉด ๊ทธ๋ค์ ์ฐ๋ฆฌ ์ ํ์ ๊ฐ๋ฐ์ ๋ฐ๋ฆ
๋๋ค.
์๋น์ค์ HTML์ ์ฝ์ ํ ์ ์์ต๋๋ค. ์๋ํด ๋ณด์ จ๋์?
๋ฌผ๋ก ์ด์ง. ์๋ฅผ ๋ค์ด, ๋๋ gliffy.com์ ๊ทธ๋ํฝ์ ์ข์ํฉ๋๋ค. ํ์ง๋ง ๋ณ๊ฒฝํ๋ ค๋ฉด ํ์ฌ ์๋น์ค๋ก ์ด๋ํ์ฌ ํธ์งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฃ์๊ฒ ์์ ์ฌํญ์ ์์ํ๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค.
๋ฌด์์ํด์ผ ํ๋๊ฐ?
์ต๊ทผ์ ๊ถ์ฅ ์ฌํญ์์ Github์ ์ ์ฅ์๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋๋ ๋ฌธ์ ์ ์ฒด๋ฅผ HTML๋ก ์์ฑํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์๋ ๋งํฌ๋ค์ด ํ ์คํธ๊ฐ ํฌํจ๋ ํ์ผ ์ธํธ์ด๋ฉฐ, ์ด๋ Wintersmith์ ๊ฐ์ ์ผ๋ถ ์์ง์ ์ํด ๋ณธ๊ฒฉ์ ์ธ ๋ฌธ์ ์ฌ์ดํธ๋ก ๋ณํ๋ฉ๋๋ค. ์๋๋ฉด ์ํค ์์คํ .
๋งค์ฐ ํธ๋ฆฌํ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ํ ์คํธ๋ฅผ ์์ฑํ ๋ค์ ์คํฌ๋ฆฝํธ ํ๊ทธ๊ฐ ์ด๋ฆฌ๊ณ ๊ตฌ์ฑํ์ JS ์ฝ๋๊ฐ ์ค๋ช ๋ฉ๋๋ค.
๋ค์ ๋ฌด์์ด ์๋ชป ๋์์ต๋๊น?
๋๋ ์ด ์ ์ฅ์๋ฅผ ์ข์ํ์ง๋ง ์ด๊ฒ์ด ์ฝ๋๋ ํ ์คํธ ํํ์ ์ฌ์ฉํ์ฌ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ๋ ์ ์ผํ ์๋ ์๋๋๋ค. (๊ธฐ์ฌ ๋ง์ง๋ง์๋ ์ฃผ์ ๋ค์ด์ด๊ทธ๋จ์์ ์ฝ๋๋ก ๊ฒ์ํ ํ๋ก์ ํธ ๋ฐ ๊ธฐ์ฌ์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค.)
๊ทธ๋ฆฌ๊ณ ๋ฌธ์๋ฅผ ํธ์งํ๋ ์ฌ๋์ ๋๋ฟ๋ง์ด ์๋๋๋ค. ๋๋ก๋ ๋๋ฃ๋ ๊ธฐ์ฌํฉ๋๋ค. ๋จ์ด ์์ , ์ค๋ช ๋ณ๊ฒฝ, ์ ๊ทธ๋ฆผ ์ฝ์ ๋ฑ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ ๊ธด ํ์ต ๊ณก์ ์ด ํ์ํ์ง ์๊ณ ์ฝ๊ธฐ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ํ ์คํธ ํ์์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ ๋ณด๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ณณ์์๋ ๊ฐ๋จํ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ง ํ๋ฉด ์ ํ๋ก๋ฅผ ์ถ๊ฐํ๋ ์๋๋ฅผ ๋์ผ ์๋ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋๋ฃ๋ ์ฝ๋๊ฐ ๋ฌผ๋ก ํ๋ฅญํ์ง๋ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ์๊ฒฉํ๊ณ ํํ๋ ฅ์ด ํ๋ถํด์ง ์ ์๋ค๊ณ ์ง์ ํ์ต๋๋ค.
๋ฐ๋ผ์ ๋๋ ๋ค์ด์ด๊ทธ๋จ์ ๋ ธ๋, ์ฐ๊ฒฐ, ๋ ธ๋ ๊ทธ๋ฃน ๋ฐ ๋ ธ๋ ์์น๋ฅผ ์ค๋ช ํ๋ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ฐฐ์ด ์ธํธ๋ก ์์ํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ๋ด ๊ฒธ์ํ ์๊ฒฌ์ผ๋ก๋ ๋งค์ฐ ํธ๋ฆฌํ๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ง๋ง ๋ฌผ๋ก ๋ง๊ณผ ์์์ ...
๋ฐฐ์ด์ ์ฐจํธ๋ ์ด๋ป๊ฒ ๋๋์?
- ๊ฐ ๋ ธ๋๋ ๋ ธ๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์๋ณ์๋ก ์ค๋ช ๋ฉ๋๋ค.
- ๋ ธ๋์ ์์ด์ฝ์ ์ถ๊ฐํ๊ณ ๋น๋ฌธ์ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
- ๋ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
- ๋ค์ด์ด๊ทธ๋จ์์์ ํต์ ์ ์ํด ์์๊ณผ ๋น๋ฌธ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ํต์ ๋ฐฉํฅ์ ์์ค์์ ํ๊ฒ์ผ๋ก ์ ์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ค์ ํ๊ฒ์ ๋ ธ๋ ์๋ณ์๋ก ํ์๋ฉ๋๋ค.
- ํ๋ ์ด์์ ๋ ธ๋๋ฅผ ๊ทธ๋ฃน์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ๊ด๊ณ๋ ๊ทธ๋ฃน๊ณผ ๊ทธ๋ฃน ๋ชจ๋์์ ์ง์ ๋ ์๋ ์์ต๋๋ค.
์ด๋ฌํ ๊ฐ๋จํ ๊ท์น์ ์ฌ์ฉํ์ฌ ๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ์ป์ต๋๋ค. ๋จ์ง? ์๋นํ.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ค์ js ์ฝ๋๋ก ์ค๋ช
๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์์ ๊ฐ์ฒด์
๋๋ค. ๋
ธ๋๊ฐ ํ์๋๋ ๊ณณ - ๋
ธ๋, ๊ฐ์ฅ์๋ฆฌ - ์ฐ๊ฒฐ.
const elements = {
nodes: [ // ะพะฟะธััะฒะฐะตะผ ัะทะปั
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [ // ัะบะฐะทัะฒะฐะตะผ ัะฒัะทะธ
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
๋ฌผ๋ก ํ๋ก๋๋ฅผ ์ง์ ๊ทธ๋ฆฐ ๊ฒ์ ์๋๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ต๋๋ค.
์ข์ต๋๋ค. ์ด๊ฒ์ ๊ฐ๋จํ ์์ ๋๋ค. ๋ ๋ณต์กํ ์ ์๋์?
์, ๋ถํํฉ๋๋ค. ์์น๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์์น๋ฅผ ์ฌ์ฉํ๊ณ ๊ทธ๋ฃน์ ๋ํ๋ด๊ธฐ ์ํด ๊ทธ๋ฃน์ ๊ทธ๋ฃน ๋ชฉ๋ก์ ๋ํ๋ด๋ฉฐ ์์ ์์ฒด์๋ ๊ทธ๋ฃน ์์ฑ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ฝ๋์
๋๋ค:
<div id="scheme5" style="height:500px;width:800px;"></div>
<script>
const elements5 = {
groups: [
{ id: 'g1', label: 'ะััะฟะฟะฐ ัะตัะฒะธัะพะฒ 1'},
{ id: 'g2', label: 'ะััะฟะฟะฐ ัะตัะฒะธัะพะฒ 2'},
],
nodes: [
{ id: 'man1', type: 'person', label: 'ะงะตะปะพะฒะตะบ'},
{ id: 'client', type: 'smartphone', label: 'ะกะผะฐัััะพะฝ'},
{ id: 'agent-backend', type: 'server', group: 'g1', label: 'agent-backend'},
{ id: 'web', type: 'server', group: 'g1', label: 'ะัะธะปะพะถะตะฝะธะต admin'},
{ id: 'www', type: 'server', group: 'g1', label: 'ัััะฐะฝะธัะฐ ะทะฐะณััะทะบะธ'},
{ id: 'mongodb1', type: 'database', group: 'g1', label: 'Mongo DB 1'},
{ id: 'mongodb2', type: 'database', group: 'g1', label: 'Mongo DB 2'},
{ id: 'runner-integration1', type: 'worker', group: 'g1', label: 'ะพัะฟัะฐะฒะบะฐ'},
{ id: 'runner-integration2', type: 'worker', group: 'g1', label: 'ะพัะฟัะฐะฒะบะฐ'},
{ id: 'api', type: 'server', group: 'g1', label: 'API'},
{ id: 'server2', type: 'server', group:'g2', label: 'ัะตัะฒะตั'},
{ id: 'otherServer', type: 'server', group:'g2', label: 'ัะตัะฒะตั'},
{ id: 'firebase', type: 'cloud', label: 'Google Firebase'},
],
edges: [
{ source: 'client', target: 'agent-backend', label: 'json', color: 'red' },
{ source: 'agent-backend', target: 'mongodb1', color: 'red' },
{ source: 'agent-backend', target: 'mongodb2', color: 'red' },
{ source: 'mongodb1', target: 'runner-integration1', label: 'ะดะฐะฝะฝัะต' },
{ source: 'mongodb2', target: 'runner-integration2', label: 'ะดะฐะฝะฝัะต' },
{ source: 'mongodb1', target: 'web', label: 'ะดะฐะฝะฝัะต ะดะปั ะพัะพะฑัะฐะถะตะฝะธั' },
{ source: 'runner-integration1', target: 'server2', label: 'ะดะฐะฝะฝัะต' },
{ source: 'runner-integration2', target: 'otherServer', label: 'ะดะฐะฝะฝัะต' },
{ source: 'api', target: 'firebase', label: 'ะทะฐะฟัะพัั', color: 'blue', },
{ source: 'firebase', target: 'client', label: 'push', color: 'blue'},
{ source: 'server2', target: 'api', label: 'ัะฒะตะดะพะผะปะตะฝะธั', color: 'blue'},
{ source: 'man1', target: 'client', },
],
positions: [
{ id: 'client', row: 2, col: 1,},
{ id: 'agent-backend', row: 2, col: 3,},
{ id: 'web', row: 6, col: 3,},
{ id: 'www', row: 1, col: 3,},
{ id: 'mongodb1', row: 1, col: 4,},
{ id: 'mongodb2', row: 2, col: 5,},
{ id: 'runner-integration1', row: 3, col: 3,},
{ id: 'runner-integration2', row: 4, col: 3,},
{ id: 'api', row: 5, col: 3,},
{ id: 'server2', row: 6, col: 7,},
{ id: 'otherServer', row: 4, col: 7,},
{ id: 'firebase', row: 5, col: 1,},
{ id: 'logger', row: 2, col: 7,},
{ id: 'crm', row: 5, col: 8,},
],
};
Diagram('scheme5', elements5, {layout: 'grid'});
</script>
ํํธ์ผ๋ก ์ด๋ฌํ ๊ตฌ์ฑํ๋ ๋ ธํธ๋ถ์ ์๋ ๊ฑฐ์ ๋ ๊ฐ์ ์ฝ๋ ํ๋ฉด์ธ ๋ฐ๋ฉด, a la json ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฌํ๊ฒ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฑ์ธ ์ ์์ผ๋ฉฐ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์์ต๋๋ค.
์์น๊ฐ ๋ ธ๋์ ๋ณ๋๋ก ๋ฐฐ์น๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ ํธ์ํฉ๋๋ค. ๋จผ์ ๋ ธ๋๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ช ๊ฐ์ ๊ทธ๋ฃน์ ์ง์ ํ๊ณ ์ด๋ฅผ ๋ ธ๋์ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฐ๊ฒฐ์ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฃผ์ ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ฒฐ์ด ์์ ๋๋ง ๋ค์ด์ด๊ทธ๋จ์์ ์ด๋ฌํ ๊ฐ์ฒด์ ์์น๋ฅผ โโ์ทจํฉ๋๋ค. ํน์ ๊ทธ ๋ฐ๋๋ก๋.
ํฌ์ง์ ์์ด ๊ฐ๋ฅํ๊ฐ์?
ํฌ์ง์
์์ด๋ ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ฝ๊ฐ ๊ตฌ๊ฒจ์ง ์ ์์ผ๋ฏ๋ก ์์ ์์ ์ด ์ต์
์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ์ธํฌ๊ฒฝ๊ด์ ๋
ธ๋ ์์น์ ๋ํ ์๊ณ ๋ฆฌ์ฆ์ด ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ํจ ์คํ์ผ์์๋ ์์น๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ ๊ฒ๋ค. ํ ๋ ธ๋๋ a1์ ์๊ณ ๋ค๋ฅธ ๋ ธ๋๋ d5์ ์์ต๋๋ค. ์ด๋ ํนํ ์ฌ์ดํ ์ค์ผ์ดํ๊ฐ ์บ๋ฒ์ค ์์ ๊ฐ์ฒด๋ฅผ ์์ง์ผ ์ ์๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฅผ ์ด๋ํ๊ณ , ๋ค์ํ ๋ ์ด์์ ์ต์ ์ ํ์ธํ ๋ค์, ์ฝ๋์์ ์ํ๋ ์์์ ๋ฐฐ์ด์ ์์ ํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ดํดํ ์ ์์ต๋๋ค. ์๋ํด ๋ณผ ์๋ ์๋์?
๋ฌผ๋ก ํ๋ก๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ค์ค๋ก๋ฅผ ์๊ฒ ๋ง๋ค์์ต๋๋ค.
์๋ํด ๋ณด์ จ๋์? ์ด์ ํ์ด์ง์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค์ :
1. ์คํฌ๋ฆฝํธ ์ฐ๊ฒฐ
<script src="https://unpkg.com/@antirek/[email protected]/dist/code-full.min.js"></script>
2. HTML์ ์ฝ๋ ์ถ๊ฐ
<div id="scheme1" style="height:300px;width:800px;"></div>
<script>
const elements = {
nodes: [
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
</script>
3. ํ์ํ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ์ฝ๋๋ฅผ ํธ์งํฉ๋๋ค. (๋ถ์์ด๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ๋ณด๋ค ์ฌ์ด ๊ฒ ๊ฐ์์ :)
์์ธํ ๋ด์ฉ์
๊ฒฐ๊ณผ๋ ์ด๋ป์ต๋๊น?
๋๋ ๋ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ์ต๋๋ค. ๋ฌธ์์ ์ธ๋ผ์ธ ๋ค์ด์ด๊ทธ๋จ์ ์ถ๊ฐํ๋ฉด ํ์์ด ๋งค์ฐ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค. ์ํผ ํ๋ก์๋ ์ ํฉํ์ง ์์ง๋ง ์ฐ๊ฒฐ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ ์์ ํ๋ก์๋ ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ธ์ ๋ ์ง ์ ์ํ๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ์กฐ์ ํ๊ณ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์, ๋๋ฃ๋ ํน๋ณํ ๊ต์ก ์์ด ๋ํฌ์์ ์ต์ํ ๊ฐ์ฒด์ ๋ํ ์บก์ ๋ฑ์ ์ง์ ์์ ํ ์ ์์ต๋๋ค.))
๋ฌด์์ ๊ฐ์ ํ ์ ์์ต๋๊น?
๋ฌผ๋ก ์ฌ๊ธฐ์๋ ๋ง์ ์ต์ ์ด ์์ต๋๋ค. ์ถ๊ฐ ์์ด์ฝ์ ์ถ๊ฐํฉ๋๋ค(๊ธฐ์กด ์์ด์ฝ์ ๋ชจ๋ ์คํฌ๋ฆฝํธ์ ์ธ๋ผ์ธ์ผ๋ก ์ถ๊ฐ๋ฉ๋๋ค). ๋ณด๋ค ํํ๋ ฅ์ด ํ๋ถํ ์์ด์ฝ ์ธํธ๋ฅผ ์ ํํ์ธ์. ์ฐ๊ฒฐ์ ์ ์คํ์ผ์ ์ง์ ํ ์ ์๋๋ก ํฉ๋๋ค. ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด๋ป๊ฒ ์๊ฐํด?
์ด์ ๊ตฌํ์ ๋ํ ๋ช ๊ฐ์ง ์์ด๋์ด๊ฐ ์ด๋ฏธ ์์ผ๋ฏ๋ก ๋๊ธ์ ์์ด๋์ด๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
๋ด ์๋ฃจ์ ์ ํ์คํ ์ข์ ๋ฒ์์ ๋ฌธ์ ์ ์ ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์๋ง๋ '๋ค์ด์ด๊ทธ๋จ์ ์ฝ๋๋ก ๋ณด์ฌ์ฃผ์ธ์'๋ผ๊ณ ๋งํ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํ ์ฝ๋ฉํ์ฌ ๋ค์ด์ด๊ทธ๋จ์ ๊ทธ๋ฆฌ๋ ๋ฐ ๋ ํธ๋ฆฌํ ๋๊ตฌ๋ฅผ ์ฐพ์ ์ ์์ ๊ฒ์ ๋๋ค.
์ข์ ์ ํ ํ๋ฅญํ ์๋น์ค (9์ข ์ ์ฐจํธ ์จ๋ผ์ธ ์๋ํฐ)๋ฌผ๋ก , mermaid.js - ๋งค์ฐ ์์ธํ๊ณ ๋ณต์กํ ๋ค์ด์ด๊ทธ๋จ์ ์ข์ํ๋ค๋ฉด ์ด ํ๋ก์ ํธ์ ํ์คํ ๊ฐํํ๊ฒ ๋ ๊ฒ์
๋๋ค.
go.drawthe.net
์ถ์ฒ : habr.com