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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ46

1๋…„๊ฐ„์˜ ์ทจ์ค€๊ธฐ 1๋…„๊ฐ„์˜ ์ทจ์ค€์„ ๋์œผ๋กœ ์ €๋Š” LINE์— ํ•ฉ๋ฅ˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” 1๋…„๊ฐ„์˜ ์ทจ์ค€๊ธฐ์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ณ  ์‹ถ์€ ๊ณณ ์ง€์›ํ•  ๋•Œ ๊ธฐ์—…์— ๋Œ€ํ•ด ์—„๊ฒฉํ•œ ๊ธฐ์ค€์„ ๋‘์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ '๊ฐœ๋ฐœ์ž๋กœ์„œ ๋งŽ์€ ์„ฑ์žฅ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ณณ'์ด์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.๊ฐœ๋ฐœ์ž๋Š” ํŠธ๋ž˜ํ”ฝ์„ ๋จน๊ณ  ์‚ฐ๋‹ค๋Š” ๋ง์ด ์žˆ๋“ฏ์ด ์„œ๋น„์Šค๊ฐ€ ๋Œ€๊ทœ๋ชจ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋Œ€์‘ํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ๊ทธ๋งŒํผ์˜ ์„ฑ์žฅ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ์—…์— ์ฐธ์—ฌํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ธฐ์—…๊ณผ ํŒ€์˜ ๊ฐœ๋ฐœ ๋ฌธํ™”๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŒ€๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ถ„์œ„๊ธฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์™ธ๋ถ€์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค(์žกํ”Œ๋ž˜๋‹›, ํฌ๋ ˆ๋”ง์žก, ๋ธ”๋ผ์ธ๋“œ ๋“ฑ)๋„ ์‚ฌ์‹ค ์ง์ ‘ ๊ฒช์–ด๋ณด๊ธฐ ์ „๊นŒ์ง„ ๋ชจ๋ฅธ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ์— ๊ฐœ๋ฐœ ๋ฌธํ™”๊ฐ€ ๊ธฐ์—…์˜ ์„ ํƒ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.. 2021. 5. 20.
Dynamic Admission Controller ์‚ฌ์šฉํ•˜๊ธฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์„ ์–ธํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฐํฌ ๋ฐ ์šด์˜์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์ธก๋ฉด์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋… ๋ฐ ์•„ํ‚คํ…์ณ๋ฅผ ์ดํ•ดํ•ด์•ผํ•˜๊ณ  ์ด๋กœ ์ธํ•ด ์„œ๋น„์Šค์˜ ๋ณต์žก๋„ ๋˜ํ•œ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๋Š” Provider์˜ ์ž…์žฅ์—์„œ๋Š” ์šด์˜์— ์žˆ์–ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ ๋ฐ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์„ ์ถ”์ƒํ™”์‹œ์ผœ ์ œ๊ณตํ•  ํ•„์š”์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ถ”์ƒํ™”๋ฅผ ๋‹ฌ์„ฑํ•  ๋•Œ, ์–ด๋Š ์ •๋„์˜ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ• ์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ๋‹ฌ์„ฑํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์šด์˜์— ์žˆ์–ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ค€์ˆ˜ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ, ์ง€๋‚˜์นœ ์ถ”์ƒํ™”๋Š” ์„ธ๋ถ€ ์„ค์ •์— ๋Œ€ํ•ด ์ ‘๊ทผ์„ ์–ด๋ ต๊ฒŒํ•˜๊ณ , ๋‹ซํžŒ ์‹œ์Šคํ…œ์ด ๋  ์œ„ํ—˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋Š์ •๋„์˜ ์ถ”์ƒํ™”๋ฅผ ๋‹ฌ์„ฑ.. 2021. 4. 29.
[Kubernetes ๋‚ด๋ถ€ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ] 1. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์š”์†Œ ๊ทธ๋™์•ˆ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์ด๋‚˜ ์‚ฌ์šฉ์€ ํ–ˆ์ง€๋งŒ ์›๋ฆฌ๋ฅผ ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ Kubernetes In Action์„ ์ฝ๊ณ  ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด๋ถ€ ์•„ํ‚คํ…์ณ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ(๋งˆ์Šคํ„ฐ ๋…ธ๋“œ)์™€ ์›Œ์ปค ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋จผ์ € ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. API Server Scheduler Controller Manager etcd ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์—์„œ ํ•ด๋‹น ์š”์†Œ๋“ค์€ ๊ฐœ๋ณ„์ ์ธ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์€ .. 2021. 4. 12.
[Kubernetes Best Practice] 13. ์™ธ๋ถ€ ์„œ๋น„์Šค์™€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ†ตํ•ฉ ์ด ๊ธ€์€ Kubernetes Best Practice๋ฅผ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.๋ชจ๋“  ๋‚ด์šฉ์€ ์ฑ…์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์œผ๋ฉฐ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์€ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ตœ๊ทผ ์„œ๋น„์Šค ๋ฉ”์‹œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฑฐ๋‚˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€ ์ด ๋ฐฉ๋ฒ•์ด ์ตœ์„ ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ถ๊ธˆ์ฆ์„ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ ๋งŒํ•œ ์ฑ…์„ ๋ฐœ๊ฒฌํ•ด์„œ ์ฝ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ์žฅ์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์™€ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ์ƒํ™ฉ์— ๋Œ€ํ•˜์—ฌ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ์šด์˜๋˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋Š” VM ํ˜น์€ ๋ฌผ๋ฆฌ ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šค์— ์กด.. 2021. 4. 4.
[๋ฐฑ์ค€] 1520. ๋‚ด๋ฆฌ๋ง‰๊ธธ ๋ฌธ์ œ ํ’€์ด ๋จผ์ € ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— DFS๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค. ์ƒ๊ฐํ•œ ์•„์ด๋””์–ด๋Š” ํ•œ ๋ฒˆ ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ขŒํ‘œ๋ฅผ x,y๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, (x,y) ์—์„œ (N-1, N-1)๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋Š” ์ด๋ฏธ ๊ตฌํ•ด์ ธ์žˆ๊ณ  ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ dfs๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ํ•˜๊ณ , ๋ฐฉ๋ฌธ์ฒดํฌ๊ฐ€ ๋œ ๊ณณ์ธ ๊ฒฝ์šฐ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค. ์ดˆ๊ธฐ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu.. 2021. 4. 1.
[๋ฐฑ์ค€] 2629. ์–‘ํŒ” ์ €์šธ ๋ฌธ์ œ ํ’€์ด ์˜ค๋žœ๋งŒ์— ํ‘ธ๋Š” DP๋ฌธ์ œ์˜€๋‹ค. ๋จผ์ € ์ถ”๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ถ”์˜ ๋ฌด๊ฒŒ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ Cache๋ฐฐ์—ด์„ ์œ ์ง€ํ–ˆ๋‹ค. ์ด ๋•Œ ํ•ด๋‹น ์ถ”์— ๋Œ€ํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ํ˜„์žฌ ์ถ”๋งŒ ๋„ฃ์€ ๊ฒฝ์šฐ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋ฌด๊ฒŒ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋ฌด๊ฒŒ์— ํ˜„์žฌ ์ถ”๋ฅผ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ ๋ฌด๊ฒŒ์— ํ˜„์žฌ ์ถ”๋ฅผ ๋นผ๋Š” ๊ฒฝ์šฐ (๋ฌผ์ฒด์ชฝ์— ์ถ”๋ฅผ ๋†“๋Š” ๊ฒฝ์šฐ) ์ตœ์ข…์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์ถ”๋ฅผ ๋„ฃ์—ˆ์„ ๋•Œ ๊ฐ€๋Šฅํ•œ ๋ฌด๊ฒŒ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { // Input ๋ฐ›๊ธฐ ์œ„ํ•œ Buffered Re.. 2021. 4. 1.