CKA-15์ผ์ฐจ

YeJi Kimยท2023๋…„ 3์›” 3์ผ
0

CKA

๋ชฉ๋ก ๋ณด๊ธฐ
15/15

๐Ÿ“ CKA 15์ผ์ฐจ
๐Ÿ“ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 174-185




174. Network Policy

  • Ingress: ์ž…๊ตฌ
  • Egress: ํ‡ด์žฅ


์ด์ œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ์‚ดํŽด๋ณด์ž. ํŒŒ๋“œ์™€ ์„œ๋น„์Šค ์„ธํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์ง‘ํ•ฉ์˜ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๋‹ค. ๋…ธ๋“œ๋งˆ๋‹ค IP ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ  ํŒŒ๋“œ๋งˆ๋‹ค ์„œ๋น„์Šค๋„ ์กด์žฌํ•œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„คํŠธ์›Œํ‚น์˜ ์ „์ œ์กฐ๊ฑด
1. ์–ด๋–ค ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•˜๋“  ํŒŒ๋“œ๊ฐ€ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ด ๋„คํŠธ์›Œํฌ ์†”๋ฃจ์…˜์—์„œ ๋ชจ๋“  ํŒŒ๋“œ๊ฐ€ ๊ฐ€์ƒ ์‚ฌ์„ค ๋„คํŠธ์›Œํฌ์— ์žˆ๊ณ  IP๋‚˜ ํŒŒ๋“œ ์ด๋ฆ„ ๋˜๋Š” ์„œ๋น„์Šค ์ด๋ฆ„์„ ํ†ตํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ๋…ธ๋“œ๋ฅผ ๊ฐ€๋กœ์ง€๋ฅด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„œ๋กœ์—๊ฒŒ ๋‹ฟ์„ ์ˆ˜ ์žˆ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ชจ๋“  ํ—ˆ์šฉ ๊ทœ์น™๊ณผ ํ•จ๊ป˜ ๊ตฌ์„ฑ๋œ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์–ด๋–ค ํŒŒ๋“œ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ์—๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.


์šฐ๋ฆฌ๋Š” ํŒŒ๋“œ๋ฅผ ํ†ตํ•ด ์•ฑ์˜ ๊ฐ ๊ตฌ์„ฑ์š”์†Œ(ํ”„๋ก ํŠธ์—”๋“œ ์›น ์„œ๋ฒ„, ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„, DB)๋ฅผ ๋ฐฐํฌํ•œ๋‹ค.
์ด์ „ ์Šฌ๋ผ์ด๋“œ์—์„œ ๋…ผ์˜ํ–ˆ๋“ฏ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ์„ธ ๊ฐœ์˜ ํŒŒ๋“œ๋Š” ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋•Œ, ํ”„๋ก ํŠธ์—”๋“œ ์›น ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์™€ ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ Network Policy๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Network Policy์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ํŒŒ๋“œ, ๋ ˆํ”Œ๋ฆฌ์นด ์…‹์ด๋‚˜ ์„œ๋น„์Šค ์ฒ˜๋Ÿผ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒ๋“œ์— ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” 3306 ํฌํŠธ API ํŒŒ๋“œ์—์„œ๋งŒ Ingress ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•œ๋‹ค. ์ผ๋‹จ ์ด ์ •์ฑ…์ด ์ƒ์„ฑ๋˜๋ฉด ํŒŒ๋“œ์˜ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๊ณ  ์ง€์ •๋œ ๊ทœ์น™์— ๋ถ€ํ•ฉํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

replicaset์ด๋‚˜ service๋ฅผ ํŒŒ๋“œ์™€ matchlabels, labels๋ฅผ ํ†ตํ•ด ๋งํฌํ•˜๋Š” ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•œ๋‹ค.

policyTypes์— ํŠธ๋ž˜ํ”ฝ์ด Ingress์ธ์ง€ Egress์ธ์ง€๋ฅผ ๋ช…์‹œํ•˜๊ณ  ๊ทœ์น™์„ ์ง€์ •ํ•œ๋‹ค.

Network Policy์˜ ์ •์˜ ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
์ด Network Policy๋Š” ์ง„์ž… ํŠธ๋ž˜ํ”ฝ๋งŒ ๊ฒฉ๋ฆฌ๋˜๊ณ  ํ‡ด์žฅ ํŠธ๋ž˜ํ”ฝ์€ ์˜ํ–ฅ์ด ์—†๋‹ค.


๋„คํŠธ์›Œํฌ ์ •์ฑ…์€ ๋„คํŠธ์›Œํฌ ์†”๋ฃจ์…˜์— ์˜ํ•ด ์‹คํ–‰๋œ๋‹ค. ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ์†”๋ฃจ์…˜์ด ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ•ญ์ƒ ์ฐธ์กฐํ•ด๋ณด๊ธธ ๊ถŒํ•œ๋‹ค.
๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋„ ์ •์ฑ…์„ ๋งŒ๋“ค ์ˆœ ์žˆ์ง€๋งŒ ๊ฐ•์š”๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.




175. Developing network policies

๋ฐฑ์—”๋“œ API ํŒŒ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ๋“œ๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

๋งŒ์•ฝ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋ฉด ๊ทธ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์‘๋‹ต์ด๋‚˜ ํšŒ์‹ ์ด ์ž๋™์œผ๋กœ ํ—ˆ์šฉ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์‘๋‹ต, ํšŒ์‹ ์— ๋Œ€ํ•œ ๊ฒƒ์€ ๋”ฐ๋กœ ๊ทœ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์ •์˜ ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด api-pod๋ฅผ ์ œ์™ธํ•˜๊ณ  DB ํŒŒ๋“œ๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์ •์ฑ…์€ ๊ธฐ๋ณธ์œผ๋กœ metadata์— ์ง€์ •๋œ namespace์— ์žˆ๋Š” ํŒŒ๋“œ(์ง€์ •๋œ ํŒŒ๋“œ์™€ ๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” ํŒŒ๋“œ)๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํŒŒ๋“œ์— ๋„๋‹ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด namespaceSelector ์˜์—ญ์— ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

podSelector ์—†์ด namespaceSelector๋งŒ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๊ทธ๋Ÿด ๊ฒฝ์šฐ, ์ง€์ •ํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์˜ ๋ชจ๋“  ํŒŒ๋“œ๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ๋“œ์— ๋„๋‹ฌํ•  ์ˆ˜ ์—†๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ๋“œ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„คํŠธ์›Œํฌ ์ •์ฑ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
ipBlock ์˜์—ญ์„ ํ†ตํ•ด IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น IP์˜ ๊ฐœ์ฒด๊ฐ€ DB ํŒŒ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด ํŠน์ •ํ•œ ํŒŒ๋“œ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ip ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด podSelector, namespaceSelector, ipBlock ์˜์—ญ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๊ฐœ๋ณ„์ ์ธ ๊ทœ์น™์œผ๋กœ ํ†ต๊ณผ๋  ์ˆ˜๋„ ์žˆ๊ณ  ํ•˜๋‚˜์˜ ๊ทœ์น™์˜ ์ผ๋ถ€๋กœ ํ•จ๊ป˜ ํ†ต๊ณผ๋  ์ˆ˜๋„ ์žˆ๋‹ค.

์ด ์˜ˆ์ œ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์ด ์žˆ๋‹ค.
podSelector์™€ namespaceSelector๊ฐ€ ํ•จ๊ป˜ ์ ์šฉ๋˜์–ด ์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์ด ๋งŒ๋“ค์–ด์ง€๊ณ  ipBlock์„ ํ†ตํ•ด ๋‘๋ฒˆ์งธ ๊ทœ์น™์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.


๋งŒ์•ฝ namespaceSelector ์•ž์— ๋Œ€์‹œ๋ฅผ ์ถ”๊ฐ€ํ•ด ๊ทœ์น™์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์€ podSelector์— ์˜ํ•ด api-pod์™€ ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ํŒŒ๋“œ๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค.
๋‘ ๋ฒˆ์งธ ๊ทœ์น™์€ namespaceSelector์— ์˜ํ•ด prod ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์˜ ์–ด๋–ค ํŒŒ๋“œ์—์„œ๋“  ํŠธ๋ž˜ํ”ฝ์ด ํ—ˆ์šฉ๋œ๋‹ค.
์„ธ ๋ฒˆ์งธ ๊ทœ์น™์€ ํŒŒ๋“œ์ด๋“  ๋ฐฑ์—… ์„œ๋ฒ„์ด๋“  ํŠน์ • IP๋ฅผ ๊ฐ€์ง„ ๊ฐœ์ฒด๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค.

๋ฐ˜๋Œ€๋กœ DB ํŒŒ๋“œ์—์„œ ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ํ‘ธ์‰ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ๋“œ์—์„œ ์™ธ๋ถ€ ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•œ๋‹ค.
policyTypes์— Egress๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ๋“œ์—์„œ ์™ธ๋ถ€ ๋ฐฑ์—… ์„œ๋ฒ„๋กœ ํ†ต์‹ ์„ ํ—ˆ์šฉํ•˜๋Š” egress ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.




177. Kubectx and Kubns - Command line Utilities

  • kubectx: kubernetes contexts ์‚ฌ์ด์—์„œ kubectl config ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด ๋„๊ตฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋“ค ์‚ฌ์ด์˜ ์ „ํ™˜ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค€๋‹ค.


  • kubens: ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ฐ„์— ๋น ๋ฅด๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋ช…๋ น์–ด์ด๋‹ค.




178. Solution - Network Policies

network policy ์กฐํšŒ


Network Policy ์ƒ์„ฑํ•˜๊ธฐ




181. Storage in Docker

๋„์ปค์˜ ์ €์žฅ์†Œ ์ข…๋ฅ˜๋Š” 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.




182. Volume Driver Plugins in Docker

์‹œ์Šคํ…œ์— docker๋ฅผ ์„ค์น˜ํ•˜๋ฉด /var/lib/docker/์— ์ƒ์„ฑ๋œ๋‹ค. ํ•˜์œ„ ํด๋”๋กœ ๋„์ปค์™€ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํด๋”๋“ค์ด ์ƒ๊ธด๋‹ค. ์—ฌ๊ธฐ๊ฐ€ docker๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋ž€ docker ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ์ด๋ฏธ์ง€ ๋ฐ ์ปจํ…Œ์ด๋„ˆ์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ๋“ค์„ ๋งํ•œ๋‹ค.


docker๋Š” Layered architecture๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค. Dockerfile์˜ ๊ฐ ์ง€์‹œ์‚ฌํ•ญ ์ค„์€ docker ์ด๋ฏธ์ง€์— ์ƒˆ ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ฐ ๋ ˆ์ด์–ด๋Š” ์ด์ „ ๋ ˆ์ด์–ด์˜ ๋ณ€ํ™”๋งŒ ์ €์žฅํ•œ๋‹ค.
๋‘ ๋ฒˆ์งธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œ ํ•  ๋•Œ ์ฒ˜์Œ ์„ธ ๋ ˆ์ด์–ด๋Š” ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— docker๋Š” ์ฒ˜์Œ ์„ธ ๋ ˆ์ด์–ด๋ฅผ ๋นŒ๋“œํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ์บ์‹œ์— ์žˆ๋Š” ๋งŒ๋“  ์ฒซ ๋ฒˆ์งธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„ํ•ด ๋งŒ๋“  3๊ฐœ์˜ ๋ ˆ์ด์–ด๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ๋ ˆ์ด์–ด๋งŒ ์ƒˆ๋กœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
๋„์ปค๋Š” ๋ ˆ์ด์–ด ์•„ํ‚คํ…์ณ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋” ๋นจ๋ฆฌ๋งŒ๋“ค๊ณ  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์ ˆ์•ฝํ•œ๋‹ค.

์ด๋ฏธ ๋นŒ๋“œํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ณ€๊ฒฝ๋œ ๋ ˆ์ด์–ด๋งŒ ์žฌ๋นŒ๋“œํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๋นจ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ชจ๋“  ๋„์ปค ์ด๋ฏธ์ง€ ๊ณ„์ธต์€ ์ตœ์ข… ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด docker build ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ ์ƒ์„ฑ๋œ๋‹ค.
๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ ˆ์ด์–ด์˜ ๋‚ด์šฉ๋ฌผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์ฝ๊ธฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์•ผ(re-build) ํ•œ๋‹ค.

์ด ์ด๋ฏธ์ง€์— ๊ธฐ๋ฐ˜์„ ๋‘” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ docker run ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด docker๋Š” ์ด ๋ ˆ์ด์–ด๋“ค์— ๊ธฐ๋ฐ˜์„ ๋‘” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด ์ƒ๋‹จ์— ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ƒˆ ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“ ๋‹ค.
์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋ ˆ์ด์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘์„ฑํ•œ ๋กœ๊ทธ ํŒŒ์ผ์ด๋‚˜ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ž„์‹œ ํŒŒ์ผ๊ฐ™์€ ๊ฑฐ์ด๋‹ค.

์ƒ๋‹จ์˜ ๊ธ€์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ๋งŒ ์œ ์ง€๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŒŒ๊ดด๋˜๋ฉด ์ด ๋ ˆ์ด์–ด์™€ ๊ทธ ์•ˆ์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋„ ํŒŒ๊ดด๋œ๋‹ค.


๋™์ผํ•œ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋Š” ์ด ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑ๋œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ์ผ๋ถ€์ธ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด, ์ปจํ…Œ์ด๋„ˆ๋Š” ์ˆ˜์ •ํ•˜๋ ค๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ธฐ ์ „์— Read Write ๊ณ„์ธต(Container Layer)์— ํŒŒ์ผ ๋ณต์‚ฌ๋ณธ์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค๊ณ  Read Write ๊ณ„์ธต์˜ ๋‹ค๋ฅธ ํŒŒ์ผ ๋ฒ„์ „์„ ์ˆ˜์ •ํ•˜๊ฒŒ ๋œ๋‹ค.
์ด๊ฒƒ์„ COPY-ON-WRITE ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด๋ฅผ ์ฝ๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ์ง€ ๋ ˆ์ด์–ด์˜ ํŒŒ์ผ๋“ค์ด ์ˆ˜์ •๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ์ง€๋Š” docker build ๋ช…๋ น์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์žฌ๊ตฌ์ถ•ํ•˜๊ธฐ ์ „๊นŒ์ง€ ํ•ญ์ƒ ๋™์ผํ•˜๋‹ค.


์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—†์• ๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ด์–ด์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋„ ์‚ญ์ œ๋œ๋‹ค.
์ปจํ…Œ์ด๋„ˆ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์˜๊ตฌ์ ์ธ ๋ณผ๋ฅจ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

docker volume create ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด /var/lib/docker/volumes ํด๋”์— ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋œ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ docker run ๋ช…๋ น์„ ์‹คํ–‰ํ•  ๋•Œ '-v {๋ณผ๋ฅจ ์ด๋ฆ„}:{์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ}' ์˜ต์…˜์„ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๋ณผ๋ฅจ๊ณผ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์‹œ์—์„œ๋Š” data_volume ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ /var/lib/mysql ๊ฒฝ๋กœ์— ๋งˆ์šดํŠธํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ž‘์„ฑํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” docker host์— ์ƒ์„ฑ๋œ ๋ณผ๋ฅจ์— ์ €์žฅ๋œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŒŒ๊ดด๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๋Š” ์‚ด์•„ ์žˆ๋‹ค.

๋งŒ์•ฝ ๊ธฐ๋ณธ ๊ฒฝ๋กœ์ธ /var/lib/docker/volumes ๋Œ€์‹  docker host ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด docker run ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ '-v {์™ธ๋ถ€ ์ €์žฅ์†Œ ๊ฒฝ๋กœ}:{์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ๊ฒฝ๋กœ}'๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.


๋งˆ์šดํŒ…์—๋Š” ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๋ณผ๋ฅจ ๋งˆ์šดํŒ…,๋ฐ”์ธ๋“œ ๋ฐ”์šดํŠธ์ด๋‹ค.

  • ๋ณผ๋ฅจ ๋งˆ์šดํŒ…: ๋ณผ๋ฅจ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋ณผ๋ฅจ ๋งˆ์šดํŠธ
  • ๋ฐ”์ธ๋“œ ๋งˆ์šดํŠธ: ํ˜ธ์ŠคํŠธ์˜ ์–ด๋–ค ์œ„์น˜์—์„œ๋“  ๋””๋ ‰ํ„ฐ๋ฆฌ ๋งˆ์šดํŠธ

'-v' ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์˜›๋‚  ๋ฐฉ์‹์ด๋‹ค. ์ง€๊ธˆ์€ '--mount' ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
'--mount type={type},source={ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ},target={์ปจํ…Œ์ด๋„ˆ ๋‚ด ๊ฒฝ๋กœ}' ์ด์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ๋‹ค.


Storage Driver๋Š” ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ ์ง€ํ•˜๊ณ  writable ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ ˆ์ด์–ด๋ฅผ ๊ฐ€๋กœ์งˆ๋Ÿฌ ํŒŒ์ผ์„ ์ด๋™ํ•ด ๋ณต์‚ฌ์™€ ์“ฐ๊ธฐ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ OS ์‚ฌ์šฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ๊ฐ€๋ น, Ubuntu์˜ ๊ธฐ๋ณธ ์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„๋Š” AUFS์ด๋‹ค.
Docker๋Š” ์šด์˜์ฒด์ œ์— ๊ทผ๊ฑฐํ•ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๊ณ ์˜ ์ €์žฅ์†Œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ ํƒํ•œ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋งˆ๋‹ค ๋‹ค๋ฅธ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ ํŠน์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.




Volume Driver Plugins in Docker

์ง€๋‚œ ๊ฐ•์˜์—์„œ ๋ฐฐ์› ๋“ฏ์ด Storage Driver๋Š” ์ด๋ฏธ์ง€์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๋„๋ก ๋•๋Š”๋‹ค. ๋˜ํ•œ ์ €์žฅ์†Œ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณผ๋ฅจ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
๋ณผ๋ฅจ์€ Storage Driver์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ณผ๋ฅจ์€ ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. default ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Local์ด๋‹ค.
๋กœ์ปฌ ๋ณผ๋ฅจ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ docker host์— ๋ณผ๋ฅจ ์ƒ์„ฑ์„ ๋„์™€ ๋ฐ์ดํ„ฐ๋ฅผ /var/lib/docker/volumes ๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋ž˜์— ์ €์žฅํ•œ๋‹ค. ํƒ€์‚ฌ ์†”๋ฃจ์…˜์—์„œ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด ์ œ๊ณต๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, docker run ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ AWS EBS์—์„œ ๋ณผ๋ฅจ์„ ๊ณต๊ธ‰ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  AWS ํด๋ผ์šฐ๋“œ์—์„œ ๋ณผ๋ฅจ์„ ๋ถ€์ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํŒŒ๊ดด๋˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์šฐ๋“œ์— ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅ๋œ๋‹ค.




183. Container Storage Interface(CSI)

๊ณผ๊ฑฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” Docker๋งŒ์„ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ–ˆ๊ณ  docker์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์†Œ์Šค ์ฝ”๋“œ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์—ˆ๋‹ค.
Rocket๊ณผ CRI-O์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์—”์ง„์ด ๋„์ž…๋  ๋•Œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์†Œ์Šค ์ฝ”๋“œ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ๋‹ค์–‘ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ–ˆ๋‹ค.
๊ทธ๋ž˜์„œ Container Runtime Interface(CRI)๊ฐ€ ํƒ„์ƒํ–ˆ๋‹ค.

CRI๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๊ฐ™์€ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์†”๋ฃจ์…˜์ด ๋„์ปค์™€ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„๊ณผ ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ• ์ง€ ์ •์˜ํ•˜๋Š” ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
์•ž์œผ๋กœ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ธํ„ฐํŽ˜์ด์Šค(CRI)๊ฐ€ ๊ฐœ๋ฐœ๋˜๋”๋ผ๋„ CRI ํ‘œ์ค€์„ ๋”ฐ๋ฅด๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํ‚น ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ์ง€์›์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํ‚น ์ธํ„ฐํŽ˜์ด์Šค(CNI)๊ฐ€ ์กด์žฌํ•œ๋‹ค. CNI ํ‘œ์ค€์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์ €์žฅ์†Œ ์ธํ„ฐํŽ˜์ด์Šค(CSI)๋Š” ๋‹ค์ค‘ ์ €์žฅ์†Œ ์†”๋ฃจ์…˜์„ ์ง€์›ํ•˜๋„๋ก ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. CSI ๋•๋ถ„์— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ž‘๋™ํ•  ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง์ ‘ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

CSI๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— ํ•œ์ •๋œ ๊ธฐ์ค€์ด ์•„๋‹ˆ๋‹ค. CSI ํ‘œ์ค€์— ๋”ฐ๋ผ ๊ตฌํ˜„๋œ๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํˆด์—์„œ๋„ ๋™์ž‘ ๊ฐ€๋Šฅํ•˜๋‹ค.
CSI๋Š” ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ(RPC, Remote Procedure Call)์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•œ๋‹ค. CSI ํ‘œ์ค€์— ๋งž๊ฒŒ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„๋˜์–ด์•ผ ํ•˜๊ณ  ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” CSI ํ‘œ์ค€์„ ๋”ฐ๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.




185. Volumes

์ปจํ…Œ์ด๋„ˆ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋„์ปค์˜ ๋ณผ๋ฅจ์— ๋‹ด๊ฒจ์„œ ์˜๊ตฌ์ ์œผ๋กœ ๋ณด์กด๋œ๋‹ค.

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?
๋„์ปค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์ƒ์„ฑ๋œ ํŒŒ๋“œ๋„ ์ผ์‹œ์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค. ํŒŒ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ญ์ œ๋˜๋ฉด ํŒŒ๋“œ๊ฐ€ ์ฒ˜๋ฆฌํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋œ๋‹ค.
ํŒŒ๋“œ์— ๋ณผ๋ฅจ์„ ๋ถ€์ฐฉํ•˜๋ฉด ํŒŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณผ๋ฅจ์— ์ €์žฅ๋œ๋‹ค. ํŒŒ๋“œ๊ฐ€ ์‚ญ์ œ๋œ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋Š” ๋ณผ๋ฅจ์— ๋‚จ์•„์žˆ๋‹ค.

๋‹จ์ผ ๋…ธ๋“œ์—์„  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณผ๋ฅจ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ทธ๋Ÿฌ๋‚˜ ํ˜ธ์ŠคํŠธ์˜ ๊ฒฝ๋กœ ์˜ต์…˜์„ ํ†ตํ•ด ๋ณผ๋ฅจ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
ํŒŒ๋“œ๋Š” ๋ชจ๋“  ๋…ธ๋“œ์—์„œ /data ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‘ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ €์žฅ์†Œ ์†”๋ฃจ์…˜์„ ์ง€์›ํ•œ๋‹ค.

profile
์ด์ „์˜ ๊ธฐ๋ก๋“ค ๐Ÿ‘‰ https://blog.naver.com/reviewerkyj

0๊ฐœ์˜ ๋Œ“๊ธ€