ํ์ต ๋ชฉํ
-
graphviz ๋ฌธ๋ฒ์ ์ดํดํ๊ณ , dot ํ์์ ์ง์ํ๋ ๊ทธ๋ํ ์์ฑ ๋๊ตฌ๋ฅผ ์ง์ผ๋ก ํจ๊ป ์ค๊ณํ๋ ๊ฒ์ด ๋ชฉํ๋ค.
-
์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ ์ ๋ฌด์์ ๊ตฌํํด์ผ ํ๋๊ฐ ์ดํด๋๋ฅผ ๋์ด๊ณ ํด๊ฒฐํ๋ ค๋ ๊ฒ์ ์ง์คํ๋ค.
์ฌ์ ์ง์
- ์์.
๊ธฐ๋ฅ์๊ตฌ์ฌํญ
๋ค ๊ฐ์ด graphviz ์คํ์์ค์ ์ง์ํ๋ ๋ฌธ๋ฒ ํ์์ ๋ํด ์กฐ์ฌํ๋ค.
#SAMPLE for Boostcamp Basic
digraph FamilyTree {
// ๋
ธ๋ ์ ์
John [label="John", shape=circle, color=blue];
Jane [label="Jane", shape=circle, color=blue];
Mary [label="Mary", shape=circle, color=pink];
Bill [label="Bill", shape=circle, color=green];
// ์์ง ์ ์
John -> Mary [label="mother"];
Jane -> Mary [label="mother"];
John -> Bill [label="father"];
Jane -> Bill [label="father"];
}- ์ต์ 2๋ช ์ด์์ด ํ๋์ ํ์์ ๋ํด ๋์ ํ๊ณ ๊ฐ์ด ํ์ตํ๊ณ ์ค๊ณํ๋ค.
- ์ด๋ค ํ์์ ๊ธฐ์ค์ผ๋ก ํ ๊ฒ์ธ์ง 2๋ช ์ด์์ด ํจ๊ป ๊ฒฐ์ ํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ ๊ทธ๋ํ ์์ฑ ๋๊ตฌ๋ฅผ ์ค๊ณํ๋ค.
- ์์์ ์๋ ๊ตฌ์กฐ์ ์์ฑ, ์ด๋ฆ ๋ฑ์ด ๋ฐ๋์ด๋ ๋์ํ๋๋ก ์ค๊ณํ๋ค.
- ์ ๋ฌํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด๋ป๊ฒ ํํํ ๊ฒ์ธ๊ฐ ๊ฒฐ์ ํ๋ค.
- ์ค๊ณ ํ์ ๊ตฌํ์ ํด๋ ๋ฌด๋ฐฉํ์ง๋ง ๊ตฌํ๋ง ํด์๋ ์๋๋ค.
- ๊ตฌํํ๋ ๊ฒฝ์ฐ์ ์ค๊ณ ๊ฒฐ๊ณผ๋ฌผ์ด ํ๋ก๊ทธ๋๋ฐ ๊ฒฐ๊ณผ๋ฌผ๋งํผ ์์ธํ๊ฑฐ๋ ๋ง์์ผ ํ๋ค.
์ค๊ณ ๊ฒฐ๊ณผ ์ ์ถ
- ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ์ ๋์ ๋ฐฉ์์ ๋ํด ์ดํดํ ๋ด์ฉ์ ์์ฝํ๋ค.
- ์ค๊ณ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ช ์ํ ๊ทธ๋ฆผ์ ์์ผ๋ก ๊ทธ๋ฆฐ๋ค.
- ์์ผ๋ก ๊ทธ๋ฆฐ ๊ทธ๋ฆผ์ ์บก์ฒํด์ gist์ ์ฒจ๋ถํ๋ค.
- gist์ README.md ํ์ผ์ ์ถ๊ฐํ๊ณ ์ค๊ณ ์๋์ ๋ฐฉํฅ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช ์ ๋ถ์ธ๋ค.
ํ๋ก๊ทธ๋๋ฐ ์๊ตฌ์ฌํญ
๋ค์๊ณผ ๊ฐ์ด ํจํค์ง > ํ์ผ > ํ์
> ์์ฑ ๋จ๊ณ๋ณ๋ก ๊ตฌ์ฑ๋ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋ํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋๊ธฐ๋ฉดย graphvizย ์ถ๋ ฅ ํ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค.
- ํจํค์ง๋ ์ฌ๋ฌ ํ์ผ์ ํฌํจํ๋ค.
- ํ์ผ ํ๋์๋ ํ์ ํ๋๋ฅผ ํฌํจํ๋ค.
- ํ์ ์ ๊ณ ์ ์ด๋ฆ๊ณผ ์ฌ๋ฌ ์์ฑ์ ๊ฐ์ง๋ค.
- ์์ฑ๋ง๋ค ํน์ ํ์ ์ ์ฐธ์กฐํ๋ค.
- System ์๋์๋ Integer, String ํ์ ์ด ์ด๋ฏธ ์กด์ฌํ๋ค.
Service ํจํค์ง


1. Product ํ์
package Service
Type Product {
sku : String
price : Int
title : String
}2. Order ํ์
package Service
Type Order {
orderId : String
product : Product
}
์์๊ฒฐ๊ณผ ๋ฐ ๋์์์
์๋ฒฝํ๊ฒ ๋์ผํ ํ์๋ ์๊ณ , ์คํ์ผ์ด๋ ์์์ ์ ์ธํ๊ณ ํ์ ํญ๋ชฉ๋ง ๋น์ทํ๊ฒ ์ฑ์ฐ๋ฉด ๋๋ค. ํจํค์ง > ํ์ผ > ํ์ ํฌํจ ๊ด๊ณ๋ฅผ ๋ณผ ์ ์์ผ๋ฉด ์ด๋ค ํ์์ผ๋ก๋ ๊ฐ๋ฅํ๋ค.
digraph G {
subgraph cluster_0 {
style = tab;
color=blue;
label = "Service Package";
subgraph cluster_1 {
Product [shape=box style=filled color=cyan]
sku;
price;
title;
label = "Product.file";
color=lightgrey;
}
subgraph cluster_2 {
Order [shape=box style=filled color=cyan]
orderId;
product;
label = "Order.file";
color=lightgrey;
}
}
subgraph cluster_9 {
style = tab;
label = "System Package";
color=blue;
subgraph cluster_10 {
String [shape=box style=filled color=cyan]
Int [shape=box style=filled color=cyan]
label = "Source.file";
color=lightgrey;
}
}
sku -> String;
price -> Int;
title -> String;
orderId -> String;
product -> Product;
}
