๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ ๋ฐ ํ์ ์ด์์ ์ฃผ์ ๋ฌธ์ ์ค ํ๋๋ ํด๋น ์ธ์คํด์ค์ ์ ๋ฅํ๊ณ ์ ํํ ๊ตฌ์ฑ์
๋๋ค. ์ ์๊ฐ์๋ ์๋ก์ด ํ๋ ์์ํฌ๊ฐ ์ด ์์
์ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ง๊ณ ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์์ฒด ๊ตฌ์ฑ ํ์ผ/ํ์ผ๊ณผ ํจ๊ป ์ ๊ณต๋๋ ๊ฒฝ์ฐ ๊ทธ ์ค ํ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋์ผ๋ฉฐ ์ ์ ํ ๊ธฐ์ ๊ณผ ๋ก๊น
์์คํ
์์ด๋ ์ด๋ฅผ ํฌ์ฐฉํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ํ๋ ์์ํฌ๊ฐ ์์ฒด์ ์ผ๋ก ์ค์ ํ๋ ์ฃผ์ ์์
์ ์ค๋ณต๋ ์ธ์คํด์ค ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ํํ์ฌ ์ค๋ฅ ์ถ๊ฐ ๊ฐ๋ฅ์ฑ์ ์ค์ด๋ ๊ฒ์
๋๋ค.
์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ด ์๋ ๊ฐ๋จํ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์. ์ด๋ ๋ชจ๋ ์ธ์ด์ ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค์ผ ์ ์์ต๋๋ค. ์ด ์๋น์ค์ ํ๋ ์์ํฌ๋ฅผ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ง๋ง ๋จผ์ ํธ์๋ฅผ ์ํด microconfig.io ํ๋ฌ๊ทธ์ธ์ ์ค์นํ ํ Idea IDE์์ ๋น ํ๋ก์ ํธ๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
ํ๋ฌ๊ทธ์ธ ์คํ ๊ตฌ์ฑ์ ์ค์ ํ์ต๋๋ค. ์ ์คํฌ๋ฆฐ์ท๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ์๋น์ค๋ฅผ order๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ ํ๋ก์ ํธ์์ ๋น์ทํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ๊ฒ์ ๋๋ค.
์๋น์ค ์ด๋ฆ์ด ์๋ ํด๋์ ๊ตฌ์ฑ ํ์ผ์ ๋์ต๋๋ค. application.yaml. ๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ ์ผ์ข
์ ํ๊ฒฝ์์ ์์๋๋ฏ๋ก ์๋น์ค ์์ฒด์ ๋ํ ๊ตฌ์ฑ์ ๋ง๋๋ ๊ฒ ์ธ์๋ ํ๊ฒฝ ์์ฒด๋ฅผ ์ค๋ช
ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ํด๋๋ฅผ ๋ง๋ญ๋๋ค. ํ๊ฒฝ ์์
ํ๊ฒฝ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ํ๋ ์์ํฌ๋ ํ๊ฒฝ์ ์๋น์ค์ ๋ํ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํฉ๋๋ค. DEV, ์ด ๋งค๊ฐ๋ณ์๋ ํ๋ฌ๊ทธ์ธ ์ค์ ์์ ์ค์ ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
ํ์ผ ๊ตฌ์กฐ dev.yaml ๊ทธ๊ฒ์ ์์ฃผ ๊ฐ๋จํ ๊ฒ์ด๋ค:
mainorder:
components:
- order
ํ๋ ์์ํฌ๋ ํจ๊ป ๊ทธ๋ฃนํ๋ ๊ตฌ์ฑ์ผ๋ก ์๋ํฉ๋๋ค. ์๋น์ค๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ๊ทธ๋ฃน ์ด๋ฆ์ ์ ํํ์ธ์. ๋ฉ์ธ์ค๋. ํ๋ ์์ํฌ๋ ํ๊ฒฝ ํ์ผ์์ ์ด๋ฌํ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ทธ๋ฃน์ ์ฐพ์ ํด๋น ํด๋์์ ์ฐพ์ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๊ตฌ์ฑ์ ์์ฑํฉ๋๋ค.
์๋น์ค ์ค์ ํ์ผ ์์ฒด์์ ์ฃผ๋ฌธ ์ง๊ธ์ ํ๋์ ๋งค๊ฐ๋ณ์๋ง ์ง์ ํ๊ฒ ์ต๋๋ค.
spring.application.name: order
์ด์ ํ๋ฌ๊ทธ์ธ์ ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์์ฑ์ ์ง์ ๋ ๊ฒฝ๋ก์ ๋ฐ๋ผ ์๋น์ค์ ํ์ํ ๊ตฌ์ฑ์ด ์์ฑ๋ฉ๋๋ค.
ํ๋๋ ์
์ด ์๋ฃจ์
์ ๋น๋ ์๋ฒ์์ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํฉ๋๋ค.
ํ๋ ์์ํฌ๊ฐ ์๋ฒฝํ๊ฒ ์ดํดํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ฌ์ฐ ๊ตฌ๋ฌธ, ์ฆ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์ผ๋ฐ ์์ฑ ํ์ผ์ ๋๋ค. ์ ๊ตฌ์ฑ.
๋ค๋ฅธ ์๋น์ค๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ง๋ถ ๊ธฐ์กด ๊ฒ์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
ะ ์ฃผ๋ฌธ:
eureka:
instance.preferIpAddress: true
client:
serviceUrl:
defaultZone: http://192.89.89.111:6782/eureka/
server.port: 9999
spring.application.name: order
db.url: 192.168.0.100
ะ ์ง๋ถ:
eureka:
instance.preferIpAddress: true
client:
serviceUrl:
defaultZone: http://192.89.89.111:6782/eureka/
server.port: 9998
spring.application.name: payments
db.url: 192.168.0.100
์ด๋ฌํ ๊ตฌ์ฑ์ ์ฃผ์ ๋ฌธ์ ์ ์ ์๋น์ค ์ค์ ์ ๋ง์ ์์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ ๋๋ค. ํ๋ ์์ํฌ๊ฐ ์ด๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฅ ๋ถ๋ช ํ ๊ฒ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค - ๊ตฌ์ฑ์ ์กด์ฌ ์ ๋ ์นด ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ค๋ช ์ ์ค์ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ์ ๊ตฌ์ฑ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ด์ ๊ฐ ํ๋ก์ ํธ์ ๋ผ์ธ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. #์ ๋ ์นด ํฌํจ.
ํ๋ ์์ํฌ๋ ์๋์ผ๋ก ์ ๋ ์นด ๊ตฌ์ฑ์ ์ฐพ์์ ์๋น์ค ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ์ง๋ง, ํ๊ฒฝ ํ์ผ์ ์ง์ ํ์ง ์์ผ๋ฏ๋ก ๋ณ๋์ ์ ๋ ์นด ๊ตฌ์ฑ์ด ์์ฑ๋์ง ์์ต๋๋ค. dev.yaml. ์๋น์ค ์ฃผ๋ฌธ:
#include eureka
server.port: 9999
spring.application.name: order
db.url: 192.168.0.100
๊ฐ์ ธ์ค๊ธฐ ๋ผ์ธ์ ๋ค์์ผ๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ ๋ณ๋์ ๊ตฌ์ฑ์ผ๋ก ์ด๋ํ ์๋ ์์ต๋๋ค. #include ์ ๋ ์นด, ์ค๋ผํด.
๊ตฌ์ฑ ํ์ผ์ ๋ค์ ์์ฑํ ๋ ํ๋ ์์ํฌ๊ฐ ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ์ด๋ฅผ ๊ธฐ๋ณธ ๊ตฌ์ฑ ํ์ผ ์์ ํน์ ํ์ผ์ ๋ฐฐ์นํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๋ก๊ทธ ํญ๋ชฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. โStored 1 ์์ฑ์ด ๋ค์์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ฃผ๋ฌธ/diff-application.yaml" ์ด๋ฅผ ํตํด ๋๊ท๋ชจ ๊ตฌ์ฑ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ฒ ๊ฐ์งํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ์ ๊ณตํต ๋ถ๋ถ์ ์ ๊ฑฐํ๋ฉด ๋ถํ์ํ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ๋ง์ด ์ ๊ฑฐํ ์ ์์ง๋ง ๋ค์ํ ํ๊ฒฝ์ ๋ํ ๊ตฌ์ฑ์ ์ ์ฐํ๊ฒ ์์ฑํ ์๋ ์์ต๋๋ค. ์๋น์ค์ ๋์ ์ ๊ณ ์ ํ๊ณ ํ๋ ์ฝ๋ฉ๋์ด ์์ผ๋ฏ๋ก ์ด๋ ์ข์ง ์์ต๋๋ค. ์ด๊ฒ์ ์ ๊ฑฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ข์ ํด๊ฒฐ์ฑ ์ ๋ชจ๋ ์๋ํฌ์ธํธ๋ฅผ ๋ค๋ฅธ ์ฌ๋์ด ์ฐธ์กฐํ ์ ์๋ ํ๋์ ๊ตฌ์ฑ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด ์๋ฆฌ ํ์์์ ๋ํ ์ง์์ด ํ๋ ์์ํฌ์ ๋์ ๋์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ด ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ ๋ ์นด:
client:
serviceUrl:
defaultZone: http://${endpoints@eurekaip}:6782/eureka/
์ด์ ์ด ์๋ฆฌ ํ์์๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๋ฅผ ์ฐพ์ต๋๋ค. ์๋ ํฌ์ธํธ ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์์ ์๋ฏธ๋ฅผ ์ฐพ๋๋ค ์ ๋ ์นด์ , ๊ทธ๋ฐ ๋ค์ ์ด๋ฅผ ๊ตฌ์ฑ์ผ๋ก ๋์ฒดํฉ๋๋ค. ํ์ง๋ง ํ๊ฒฝ์ด ๋ค๋ฅด๋ฉด ์ด๋จ๊น์? ์ด๋ ๊ฒ ํ๋ ค๋ฉด ๋ค์ ์์น์ ์ค์ ํ์ผ์ ๋ง๋ญ๋๋ค. ์๋ ํฌ์ธํธ ๋ค์ ์ ํ application.dev.yaml. ํ๋ ์์ํฌ๋ ํ์ผ ํ์ฅ์์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ผ๋ก ์ด ๊ตฌ์ฑ์ด ์ํ๋ ํ๊ฒฝ์ ๊ฒฐ์ ํ๊ณ ๋ก๋ํฉ๋๋ค.
๊ฐ๋ฐ ํ์ผ ๋ด์ฉ:
eurekaip: 192.89.89.111
dbip: 192.168.0.100
์๋น์ค ํฌํธ์ ๋ํด ๋์ผํ ๊ตฌ์ฑ์ ๋ง๋ค ์ ์์ต๋๋ค.
server.port: ${ports@order}.
๋ชจ๋ ์ค์ํ ์ค์ ์ด ํ ๊ณณ์ ์์ผ๋ฏ๋ก ๊ตฌ์ฑ ํ์ผ์ ๋ถ์ฐ๋ ๋งค๊ฐ๋ณ์๋ก ์ธํ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค.
ํ๋ ์์ํฌ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋ง์ ์๋ฆฌ ํ์์๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ตฌ์ฑ ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์ ์ด๋ฆ์ ๊ฐ์ ธ์ ํ ๋นํ ์ ์์ต๋๋ค.
#include eureka, oracle
server.port: ${ports@order}
spring.application.name: ${this@name}
๋๋ถ์ ๊ตฌ์ฑ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฆ์ ์ถ๊ฐ๋ก ์ง์ ํ ํ์๊ฐ ์์ผ๋ฉฐ ๋์ผํ ์ ๋ ์นด์ ๊ฐ์ ๊ณตํต ๋ชจ๋์ ๋ฐฐ์นํ ์๋ ์์ต๋๋ค.
client:
serviceUrl:
defaultZone: http://${endpoints@eurekaip}:6782/eureka/
spring.application.name: ${this@name}
๊ตฌ์ฑ ํ์ผ ์ฃผ๋ฌธ ํ ์ค๋ก ์ค์ด๋ญ๋๋ค.
#include eureka, oracle
server.port: ${ports@order}
์์ ๊ตฌ์ฑ์ ์ค์ ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๊ตฌ์ฑ์์ ์ด๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ ์์ฑ ์ค์ ์ ์ฉ๋ฉ๋๋ค. ์ฆ, ์ด๋ค ์ด์ ๋ก๋ ์ฃผ๋ฌธ ์๋น์ค์ ๋ํ ๊ณ ์ ํ ์ด๋ฆ์ด ํ์ํ ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์๋ง ๊ทธ๋๋ก ๋๊ฒ ์ต๋๋ค. spring.application.name.
๋ณ๋์ ํ์ผ์ ์ ์ฅ๋๋ ์ฌ์ฉ์ ์ ์ ๋ก๊น ์ค์ ์ ์๋น์ค์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. logback.xml. ์ด์ ๋ํ ๋ณ๋์ ์ค์ ๊ทธ๋ฃน์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธ ๊ตฌ์ฑ์์๋ ์๋ฆฌ ํ์์๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋ก๊น
์ค์ ํ์ผ์ ๋ฐฐ์นํ ์์น๋ฅผ ํ๋ ์์ํฌ์ ์๋ ค์ค๋๋ค. @ConfigDir:
microconfig.template.logback.fromFile: ${logback@configDir}/logback.xml
ํ์ผ์์ logback.xml ํ์ค ์ดํ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ตฌ์ฑ ์์ฑ ์ค์ ํ๋ ์์ํฌ๊ฐ ๋ณ๊ฒฝํ๋ ์๋ฆฌ ํ์์๊ฐ ํฌํจ๋ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<file>logs/${this@name}.log</file>
์๋น์ค ๊ตฌ์ฑ์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ถ๊ฐํ์ฌ ๋ก๊ทธ๋ฐฑ, ๊ฐ ์๋น์ค์ ๋ํด ๊ตฌ์ฑ๋ ๋ก๊น ์ ์๋์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
#include eureka, oracle, logback
server.port: ${ports@order}
์ด์ ํ๋ ์์ํฌ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์๋ฆฌ ํ์์์ ๋ํด ๋ ์์ธํ ์์๋ณผ ์๊ฐ์ ๋๋ค.
${this@env} - ํ์ฌ ํ๊ฒฝ์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค.
${โฆ@name} โ ๊ตฌ์ฑ ์์์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค.
${โฆ@configDir} โ ๊ตฌ์ฑ ์์์ ๊ตฌ์ฑ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค.
${...@resultDir} โ ๊ตฌ์ฑ ์์์ ๋์ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค(๊ฒฐ๊ณผ ํ์ผ์ ์ด ๋๋ ํฐ๋ฆฌ์ ๋ฐฐ์น๋ฉ๋๋ค).
${this@configRoot} โ ๊ตฌ์ฑ ์ ์ฅ์์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค.
๋ํ ์์คํ
์ ์ฌ์ฉํ๋ฉด Java ๊ฒฝ๋ก์ ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
${env@JAVA_HOME}
์ด๋ ์ชฝ์ด๋ ํ๋ ์์ํฌ๊ฐ ๋ค์ ์ธ์ด๋ก ์์ฑ๋์๊ธฐ ๋๋ฌธ์ JAVA, ํธ์ถ๊ณผ ์ ์ฌํ ์์คํ
๋ณ์๋ฅผ ์ป์ ์ ์์ต๋๋ค ์์คํ
::getProperty ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
${[์ด๋ฉ์ผ ๋ณดํธ]}
ํ์ฅ ์ธ์ด์ ๋ํ ์ง์์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์คํ๋งEL. ๊ตฌ์ฑ์๋ ๋ค์ ํํ์์ ์ ์ฉํ ์ ์์ต๋๋ค.
connection.timeoutInMs: #{5 * 60 * 1000}
datasource.maximum-pool-size: #{${[email protected]} + 10}
ํํ์์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ํ์ผ์์ ๋ก์ปฌ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค #var:
#var feedRoot: ${[email protected]}/feed
folder:
root: ${this@feedRoot}
success: ${this@feedRoot}/archive
error: ${this@feedRoot}/error
๋ฐ๋ผ์ ํ๋ ์์ํฌ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๊ณ ์ ์ฐํ๊ฒ ๊ตฌ์ฑํ๊ธฐ ์ํ ์๋นํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ํ๋ ์์ํฌ๋ ์ค์ ์์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ ์ค์ ์ ํตํฉํ์ฌ ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ๋ฅํ ์ค๋ฅ๋ฅผ ์ต์ํํ๋ ๋์์ ๊ตฌ์ฑ์ ์ฝ๊ฒ ๊ฒฐํฉํ๊ณ ๋ค์ํ ํ๊ฒฝ์ ๋ง๊ฒ ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๋ ์ฃผ์ ์์ ์ ์๋ฒฝํ๊ฒ ์ํํฉ๋๋ค.
์ด ํ๋ ์์ํฌ์ ๊ด์ฌ์ด ์๋ค๋ฉด ๊ณต์ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ ์ฒด ๋ด์ฉ์ ์์๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ถ์ฒ : habr.com