๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Docker Study

(9)
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ์ฒด ์ดํ•ดํ•˜๊ธฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ์ฒด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋‚ด์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ถ”์ƒํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฐ์ฒด๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์„œ๋น„์Šค, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํฌ ๋“ฑ ๋ชจ๋“  ๊ฒƒ์„ ํ‘œํ˜„ํ•œ๋‹ค. ๋ช…๋ น์  ๋ฐฉ์‹๊ณผ ์„ ์–ธ์  ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ ์ ˆํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. Pod ๊ฐ์ฒด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋ฐฐํฌ๋‹จ์œ„๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์†Œ์Šค์ด๋‹ค. pod๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ๋ณผ๋ฅจ ๋ฐ ๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๊ฐ™์€ ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•œ๋‹ค. deployment, replicaset ๋“ฑ ๋‹ค์–‘ํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pod๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. pod๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ IP์ฃผ์†Œ(๋””ํดํŠธ๋กœ ์ƒ์„ฑ)๋ฅผ ๊ฐ€..
Kubectl๊ณผ Minikube kubectl kubectl์€ kubernetes CLI(command line interface) ๋‘๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด ๋„๊ตฌ์ด๋‹ค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. pod๋‚˜ service ๋“ฑ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ, ๋กœ๊ทธ ํ™•์ธ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์™€ ํ†ต์‹ ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ๋ช…๋ น์„ ๋ณด๋‚ด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋‹ค. (๋งˆ์Šคํ„ฐ ๋…ธ๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.) Install brew install kubectl ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์ตœ์‹  ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. kubectl version --client minikube ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. ๊ฐ€์ƒ๋จธ์‹  ..
Dockerfile ์ตœ์ ํ™” Multi-Stage Build(๋ฉ€ํ‹ฐ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ) Multi-Stage Build(๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ)๋ž€? ๋‹จ์ผ ๋„์ปค ํŒŒ์ผ์—์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๋นŒ๋“œ ๋„๊ตฌ์™€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹คํ–‰์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ตฌ์„ฑ๋งŒ ํฌํ•จํ•˜์—ฌ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋„๊ตฌ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋“ค์„ ์™ธ๋ถ€์— ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š์•„ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ์ž‘์—…์„ ํ”ผํ•˜๊ณ  ์ด์ „ ๋‹จ๊ณ„์˜ ์บ์‹œ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. Dockerfile Example ์•„๋ž˜๋Š” Create React App์„ ๊ธฐ๋ฐ˜์œผ๋กœ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๊ณ  Nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์  ํŒŒ์ผ์„ ์„œ๋น™ํ•˜๋Š” Dockerfile์„ ์ž‘์„ฑํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. # node:18-alpine ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ builder ์Šคํ…Œ์ด์ง€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. # alpi..
Kubernetes ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐœ๋… ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€? ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ํˆด์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ž๋™ ๋ฐฐํฌ, ์Šค์ผ€์ผ๋ง, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ณต๊ตฌ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ์ด ๋†’์•„ ๋Œ€๊ทœ๋ชจ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‹ค์–‘ํ•œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์–ด ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ฐ ์šด์˜์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•ด ์ค๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ , ํ™•์žฅํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...
๋„์ปค ์ปดํฌ์ฆˆ ๋„์ปค ์ปดํฌ์ฆˆ๋Š” ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์„ค์ •์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋น„์Šค์™€ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฆ‰์‹œ ์‹œ์ž‘ํ•˜๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜) docker build์™€ docker run ๋ช…๋ น์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋‹ค์ˆ˜์˜ docker build & docker run ๋ช…๋ น์„ ํ•˜๋‚˜์˜ ๊ตฌ์„ฑ ํŒŒ์ผ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ์™€๋„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ •์˜๋œ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์„ฑํŒŒ์ผ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ™œ์šฉํ•œ ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ์ „์ฒด ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ปดํฌ์ฆˆ๋Š” Dockerfile, ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„์ปค ์ปดํฌ์ฆˆ๋Š” ๋‹ค์ˆ˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋‹ค์ค‘ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ..
๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ํ†ต์‹  ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด ๋ด…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น API ๋ฐ ์›จ ํ”ผ์ด์ง€์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(WWW) ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์„ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋„๋ก **.dockerignore**์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. .dockerignore node_modules Dockerfile .git API server(node) ๋„์ปคํ™” FROM node // node: ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉ(๋…ธ๋“œ ๊ธฐ๋ณธ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ) WORKDIR /app // ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ช…์‹œ COPY package.json . // ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— package.json ๋ณต์‚ฌ RUN npm install // ํ”„๋กœ์ ํŠธ ์ข…์†์„ฑ์„ ์„ค์น˜ COPY . . // ํ”„๋กœ์ ํŠธ ํด๋” ๋ชจ๋“  ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌ EXP..
๋„์ปค ๋ณผ๋ฅจ๊ณผ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋ณผ๋ฅจ vs ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด ๋ณผ๋ฅจ๊ณผ ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ๋ผ๋Š” ๋‘ ๊ฐ€์ง€์˜ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. Volumes ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ์—ฐ๊ฒฐ๋œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ์˜ ๋‚ด๋ถ€ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์€ ๋„์ปค ๋‚ด์žฅ ๊ธฐ๋Šฅ์œผ๋กœ ๋„์ปค๊ฐ€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋„ ์ง€์†๋˜๋ฉฐ ๊ณ„์† ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์€ ๋„์ปค๊ฐ€ ์ธ์‹ํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์ธ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. (์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ํด๋”์™€ ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€ ํด๋” ์—ฐ๊ฒฐ) ์ต๋ช… ๋ณผ๋ฅจ(Anonymous volumes) FROM node:16 WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOSE 80 VOLUME [""] CM..
๋„์ปค ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ ๋„์ปค ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ ๋„์ปค ์—”์ง„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์ด๋ฉฐ, ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ๋„์ปค ์—”์ง„์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์—๋Š” ์ฝ”๋“œ, ์„ค์ •, ์—ฌ๋Ÿฌ ๊ฒƒ๋“ค์ด ํฌํ•จ๋˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ทธ ์ด๋ฏธ์ง€์˜ ์‹คํ–‰ ์ธ์Šคํ„ด์Šค์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€ ์ด๋ฏธ์ง€๋Š” ์‹ค์ œ๋กœ ์ฝ”๋“œ์™€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•œ ๊ฒƒ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณ„์ธต์œผ๋กœ ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ๋•Œ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋„์ปค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€์˜ ์ด๋ฆ„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ [์ €์žฅ์†Œ ์ด๋ฆ„]/[์ด๋ฏธ์ง€ ์ด๋ฆ„]:[ํƒœ๊ทธ]๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ: ์ด๋ฏธ์ง€๊ฐ€ ์ €์žฅ๋œ ์žฅ์†Œ๋ฅผ ์˜๋ฏธ(์ƒ๋žต ๊ฐ€๋Šฅ) ์ด๋ฏธ์ง€ ์ด๋ฆ„: ์ด๋ฏธ์ง€๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์—†..