CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ œ ์ด๋ฆ„์€ Alexander์ž…๋‹ˆ๋‹ค. ์ €๋Š” CIAN์—์„œ ์—”์ง€๋‹ˆ์–ด๋กœ ์ผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋ฐ ์ธํ”„๋ผ ํ”„๋กœ์„ธ์Šค ์ž๋™ํ™”์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๊ธฐ์‚ฌ ์ค‘ ํ•˜๋‚˜์— ๋Œ€ํ•œ ๋Œ“๊ธ€์—์„œ ์šฐ๋ฆฌ๋Š” ํ•˜๋ฃจ์— 4TB์˜ ๋กœ๊ทธ๋ฅผ ์–ด๋””์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋กœ๊ทธ๋กœ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์•Œ๋ ค ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋„ค, ์ €ํฌ๋Š” ๋กœ๊ทธ๊ฐ€ ๋งŽ๊ณ  ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ์ธํ”„๋ผ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ๊ณ„์†ํ•ด์„œ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด XNUMX๋…„ ๋™์•ˆ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์กฐ์ •ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์–ด๋””์„œ ์‹œ์ž‘ํ–ˆ๋‚˜์š”?

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ cian.ru์˜ ๋กœ๋“œ๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์œผ๋ฉฐ 2018๋…„ 11.2๋ถ„๊ธฐ์—๋Š” ๋ฆฌ์†Œ์Šค ํŠธ๋ž˜ํ”ฝ์ด ์›”๊ฐ„ ๊ณ ์œ  ์‚ฌ์šฉ์ž ์ˆ˜ 40๋งŒ ๋ช…์— ๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์ค‘์š”ํ•œ ์ˆœ๊ฐ„์—๋Š” ์ตœ๋Œ€ XNUMX%์— ๋‹ฌํ•˜๋Š” ๋กœ๊ทธ๊ฐ€ ์†์‹ค๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ ์†ํ•˜๊ฒŒ ์‚ฌ๊ฑด์— ๋Œ€์ฒ˜ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์Ÿ์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌธ์ œ์˜ ์›์ธ์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ณณ์€ ์ง€์˜ฅ์ด์—ˆ๊ณ  ์ด์— ๋Œ€ํ•ด ๋ญ”๊ฐ€ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹œ ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ‘œ์ค€ ์ธ๋ฑ์Šค ์„ค์ •์„ ๊ฐ–์ถ˜ ElasticSearch ๋ฒ„์ „ 10๊ฐ€ ํฌํ•จ๋œ 5.5.2๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ธฐ ์žˆ๊ณ  ์ €๋ ดํ•œ ์†”๋ฃจ์…˜์œผ๋กœ XNUMX๋…„์—ฌ ์ „์— ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ์—๋Š” ๋กœ๊ทธ ํ๋ฆ„์ด ๊ทธ๋‹ค์ง€ ํฌ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํ‘œ์ค€ ๊ตฌ์„ฑ์„ ์ƒ๊ฐํ•ด ๋‚ผ ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. 

์ˆ˜์‹  ๋กœ๊ทธ ์ฒ˜๋ฆฌ๋Š” 100๊ฐœ์˜ ElasticSearch ์ฝ”๋””๋„ค์ดํ„ฐ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํฌํŠธ์—์„œ Logstash์— ์˜ํ•ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ํ•˜๋‚˜์˜ ์ธ๋ฑ์Šค๋Š” XNUMX๊ฐœ์˜ ์ƒค๋“œ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„๋ณ„ ๋ฐ ์ผ๋ณ„ ์ˆœํ™˜์ด ๊ตฌ์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ ๋งค์‹œ๊ฐ„ ์•ฝ XNUMX๊ฐœ์˜ ์ƒˆ๋กœ์šด ์ƒค๋“œ๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๊ฐ€ ๋งŽ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ž˜ ๋Œ€์ฒ˜ํ–ˆ๊ณ  ์„ค์ •์— ์‹ ๊ฒฝ์“ฐ๋Š” ์‚ฌ๋žŒ๋„ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. 

๊ธ‰์†ํ•œ ์„ฑ์žฅ์˜ ๊ณผ์ œ

๋‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„œ๋กœ ๊ฒน์น˜๋ฉด์„œ ์ƒ์„ฑ๋œ ๋กœ๊ทธ์˜ ์–‘์ด ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œํŽธ, ์„œ๋น„์Šค ์‚ฌ์šฉ์ž ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์šฐ๋ฆฌ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ์ ๊ทน์ ์œผ๋กœ ์ „ํ™˜ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ C#๊ณผ Python์˜ ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋†€๋ฆฌ์Šค์˜ ์ผ๋ถ€๋ฅผ ๋Œ€์ฒดํ•œ ์ˆ˜์‹ญ ๊ฐœ์˜ ์ƒˆ๋กœ์šด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ธํ”„๋ผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋” ๋งŽ์€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. 

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ ์ง€์ ๊นŒ์ง€ ์šฐ๋ฆฌ๋ฅผ ์ด๋ˆ ๊ฒƒ์€ ํ™•์žฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๊ฐ€ ์ดˆ๋‹น 20๋งŒ ๊ฐœ์˜ ๋ฉ”์‹œ์ง€ ์†๋„๋กœ ๋„์ฐฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ์“ธ๋ฐ์—†๋Š” ์žฆ์€ ์ˆœํ™˜์œผ๋กœ ์ธํ•ด ์ƒค๋“œ ์ˆ˜๊ฐ€ 6์ฒœ ๊ฐœ๋กœ ๋Š˜์–ด๋‚ฌ๊ณ  ๋…ธ๋“œ๋‹น ์ƒค๋“œ๊ฐ€ 600๊ฐœ๊ฐ€ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค. 

์ด๋กœ ์ธํ•ด RAM ํ• ๋‹น์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๋…ธ๋“œ๊ฐ€ ์ถฉ๋Œํ•˜๋ฉด ๋ชจ๋“  ์ƒค๋“œ๊ฐ€ ๋™์‹œ์— ์ด๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ์— ๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ ์—†์ด ๋‚จ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์˜ 1/10์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ˆ˜์˜ ์ž‘์€ ์ธ๋ฑ์Šค๋กœ ์ธํ•ด ๋ณต์žก์„ฑ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ๋ถˆ๊ฐ€ํ•ญ๋ ฅ ๋ฐœ์ƒ ์‹œ ๋กœ๊ทธ ์†์‹ค์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ  ELK ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ „๋‹ฌ๋˜๋Š” ์‹œ๊ฐ„์„ ์ตœ๋Œ€ 15๋ถ„์œผ๋กœ ์ค„์ด๋Š” ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ์ด ์ˆ˜์น˜๋ฅผ ๋‚ด๋ถ€ KPI๋กœ ์‚ฌ์šฉํ•จ).

์ƒˆ๋กœ์šด ํšŒ์ „ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋ฐ hot-warm ๋…ธ๋“œ

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

ElasticSearch ๋ฒ„์ „์„ 5.5.2์—์„œ 6.4.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋ณ€ํ™˜์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ฒ„์ „ 5 ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ ์ด๋ฅผ ๋„๊ณ  ์™„์ „ํžˆ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๋กœ๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‹จ ๋ช‡ ์‹œ๊ฐ„ ๋งŒ์— ์ด๋Ÿฌํ•œ ์ „ํ™˜์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ ๊ทœ๋ชจ์˜ ๋ณ€ํ™”๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„ ๋ฒ„ํผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ 2๊ฐœ ๋…ธ๋“œ์— Apache Kafka๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ElasticSearch ๋ฌธ์ œ๋กœ ์ธํ•ด ๋กœ๊ทธ๊ฐ€ ์†์‹ค๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— 24๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ž™์— XNUMX๊ฐœ์˜ "ํ•ซ" ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” hot-warm ์•„ํ‚คํ…์ฒ˜๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ์†์‹ค๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๋งˆ์Šคํฌ(nginx ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ค๋ฅ˜ ๋กœ๊ทธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ๋ฆฌ๋””๋ ‰์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ, ๊ฒฝ๊ณ  ๋“ฑ์˜ ์‚ฌ์†Œํ•œ ๋กœ๊ทธ๊ฐ€ ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋กœ ์ „์†ก๋˜์—ˆ์œผ๋ฉฐ, XNUMX์‹œ๊ฐ„ ํ›„์—๋Š” "ํ•ซ" ๋…ธ๋“œ์˜ "์ค‘์š”" ๋กœ๊ทธ๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž‘์€ ์ธ๋ฑ์Šค์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„ ํšŒ์ „์—์„œ ๋กค์˜ค๋ฒ„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ํšŒ์ „์€ ๋งค์šฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ •๋ณด๊ฐ€ ํฌ๋Ÿผ์— ๋งŽ์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์ธ๋ฑ์Šค์˜ ๋ฌธ์„œ ์ˆ˜์— ๋”ฐ๋ฅธ ํšŒ์ „์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ดํ›„ ํšŒ์ „์ด ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์„œ ์ˆ˜๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” 50GB ์ดํ•˜์˜ ์ตœ์ ์˜ ์ƒค๋“œ ํฌ๊ธฐ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. 

ํด๋Ÿฌ์Šคํ„ฐ ์ตœ์ ํ™”

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ ์ž‘์€ ์ธ๋ฑ์Šค๋Š” ์—ฌ์ „ํžˆ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ง€์ •๋œ ๋ณผ๋ฅจ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ํšŒ์ „๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ๋‚ ์งœ๋ณ„ ํšŒ์ „์„ ์ œ๊ฑฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 600์ผ๋ณด๋‹ค ์˜ค๋ž˜๋œ ์ธ๋ฑ์Šค์˜ ์ „์—ญ ์ •๋ฆฌ์— ์˜ํ•ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธ๋ฑ์Šค๊ฐ€ ์™„์ „ํžˆ ์‚ฌ๋ผ์ ธ์„œ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ–ˆ๊ณ , ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค์— ์“ฐ๋ ค๋Š” ์‹œ๋„๋กœ ์ธํ•ด ๊ด€๋ฆฌ์— ์‚ฌ์šฉํ–ˆ๋˜ ํ๋ ˆ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ๊ฐ€ ๊นจ์กŒ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ์šฉ ๋ณ„์นญ์ด ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜๋˜์–ด ๋กค์˜ค๋ฒ„ ๋…ผ๋ฆฌ๊ฐ€ ๊นจ์ ธ ์ผ๋ถ€ ์ธ๋ฑ์Šค๊ฐ€ ์ตœ๋Œ€ XNUMXGB๊นŒ์ง€ ํ†ต์ œํ•  ์ˆ˜ ์—†์ด ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด ์ˆœํ™˜ ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ:

ัurator-elk-rollover.yaml

---
actions:
  1:
    action: rollover
    options:
      name: "nginx_write"
      conditions:
        max_docs: 100000000
  2:
    action: rollover
    options:
      name: "python_error_write"
      conditions:
        max_docs: 10000000

๋กค์˜ค๋ฒ„ ๋ณ„์นญ์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ERROR     alias "nginx_write" not found.
ERROR     Failed to complete action: rollover.  <type 'exceptions.ValueError'>: Unable to perform index rollover with alias "nginx_write".

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๋‚จ๊ฒจ๋‘๊ณ  ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋“ค์–ด์˜ค๋Š” ๋กœ๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”(๋ถˆํ•„์š”ํ•œ ์ •๋ณด ์ œ๊ฑฐ ๋ฐ ๊ฐ•ํ™”) Logstash์˜ ํ’€ ๋กœ์ง์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ docker-compose๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋Š” docker์— ๋ฐฐ์น˜ํ–ˆ๊ณ , ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์˜ ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•ด Prometheus์— ์ธก์ •ํ•ญ๋ชฉ์„ ๋ณด๋‚ด๋Š” Logstash-exporter๋„ ์—ฌ๊ธฐ์— ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๊ฐ ๋กœ๊ทธ ์œ ํ˜•์„ ์ฒ˜๋ฆฌํ•˜๋Š” Logstash ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์›ํ™œํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋™์•ˆ cian.ru์˜ ํŠธ๋ž˜ํ”ฝ์€ ์›”๋ณ„ ๊ณ ์œ  ์‚ฌ์šฉ์ž ์ˆ˜ 12,8๋งŒ ๋ช…์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ์˜ ๋ณ€ํ™˜์ด ์ƒ์‚ฐ ๋ณ€ํ™”๋ณด๋‹ค ์•ฝ๊ฐ„ ๋’ค์ฒ˜์ง„ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์œผ๋ฉฐ "์›œ" ๋…ธ๋“œ๊ฐ€ ๋กœ๋“œ์— ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์—†๊ณ  ์ „์ฒด ๋กœ๊ทธ ์ „๋‹ฌ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค๋Š” ์‚ฌ์‹ค์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. โ€œํ•ซโ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‹คํŒจ ์—†์ด ์ˆ˜์‹ ํ–ˆ์ง€๋งŒ, ์ธ๋ฑ์Šค๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋จธ์ง€ ์ „๋‹ฌ์— ๊ฐœ์ž…ํ•˜๊ณ  ์ˆ˜๋™ ๋กค์˜ค๋ฒ„๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. 

๋™์‹œ์— ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋กœ๊ทธ์Šคํƒœ์‹œ ์ธ์Šคํ„ด์Šค ์„ค์ •์„ ํ™•์žฅํ•˜๊ณ  ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋กœ์ปฌ docker-compose์ด๊ณ  ๋ชจ๋“  ์ž‘์—…์ด ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ๋ณต์žกํ–ˆ์Šต๋‹ˆ๋‹ค(์ƒˆ ๋์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค). ๋ชจ๋“  ๊ณณ์—์„œ docker-compose up -d๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค).

๋กœ๊ทธ ์žฌ๋ฐฐํฌ

์˜ฌํ•ด 30์›”์—๋„ ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋†€๋ฆฌ์Šค๋ฅผ ์ ˆ๋‹จํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋กœ๋“œ๋Š” ์ฆ๊ฐ€ํ–ˆ์œผ๋ฉฐ ๋กœ๊ทธ ํ๋ฆ„์€ ์ดˆ๋‹น XNUMX๋งŒ ๋ฉ”์‹œ์ง€์— ๊ฐ€๊นŒ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. 

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

์šฐ๋ฆฌ๋Š” ํ•˜๋“œ์›จ์–ด ์—…๋ฐ์ดํŠธ๋กœ ๋‹ค์Œ ๋ฐ˜๋ณต์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ 5๋ช…์—์„œ 3๋ช…์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋…ธ๋“œ๋ฅผ ๊ต์ฒดํ•˜์—ฌ ๋น„์šฉ๊ณผ ์ €์žฅ ๊ณต๊ฐ„ ์ธก๋ฉด์—์„œ ์Šน๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 

  • "ํ•ซ" ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ: E3-1270 v6 / 960Gb SSD / 32Gb x 3 x 2(Hot3์˜ ๊ฒฝ์šฐ 1๊ฐœ, Hot3์˜ ๊ฒฝ์šฐ 2๊ฐœ).
  • "์›œ" ๋…ธ๋“œ์˜ ๊ฒฝ์šฐ: E3-1230 v6 / 4Tb SSD / 32Gb x 4.

์ด๋ฒˆ ๋ฐ˜๋ณต์—์„œ ์šฐ๋ฆฌ๋Š” ์ผ์„  nginx ๋กœ๊ทธ์™€ ๋™์ผํ•œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์•ก์„ธ์Šค ๋กœ๊ทธ๊ฐ€ ํฌํ•จ๋œ ์ธ๋ฑ์Šค๋ฅผ 20๊ฐœ์˜ "ํ•ซ" ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฃน์œผ๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ "ํ•ซ" ๋…ธ๋“œ์— XNUMX์‹œ๊ฐ„ ๋™์•ˆ ์ €์žฅํ•œ ๋‹ค์Œ ์ด๋ฅผ "์›œ" ๋…ธ๋“œ์˜ ๋‚˜๋จธ์ง€ ๋กœ๊ทธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. 

ํšŒ์ „์„ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์ž‘์€ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์—†๋”๋ผ๋„ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ 23์‹œ๊ฐ„๋งˆ๋‹ค ์ˆœํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ƒค๋“œ ์ˆ˜๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€ํ–ˆ์ง€๋งŒ(์•ฝ 800๊ฐœ) ํด๋Ÿฌ์Šคํ„ฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ๋Š” ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๊ฒฐ๊ณผ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” 6๊ฐœ์˜ "ํ•ซ" ๋…ธ๋“œ์™€ 4๊ฐœ์˜ "์›œ" ๋…ธ๋“œ๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์š”์ฒญ์ด ์•ฝ๊ฐ„ ์ง€์—ฐ๋˜์ง€๋งŒ ํ–ฅํ›„ ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฐ˜๋ณต์—์„œ๋Š” ๋ฐ˜์ž๋™ ์Šค์ผ€์ผ๋ง ๋ถ€์กฑ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ์ด๋ฏธ ๋ฐฐํฌํ•œ ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์ธํ”„๋ผ Nomad ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” Logstash์˜ ์–‘์ด ๋ถ€ํ•˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

CIAN์ด ํ…Œ๋ผ๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋กœ๊ทธ๋ฅผ ๊ธธ๋“ค์ธ ๋ฐฉ๋ฒ•

์•ž์œผ๋กœ์˜ ๊ณ„ํš

๊ตฌํ˜„๋œ ๊ตฌ์„ฑ์€ ์™„๋ฒฝํ•˜๊ฒŒ ํ™•์žฅ๋˜๋ฉฐ ์ด์ œ 13,3TB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋กœ๊ทธ๋Š” 4์ผ ๋™์•ˆ ์ €์žฅ๋˜๋ฉฐ ์ด๋Š” ๊ฒฝ๋ณด์˜ ๊ธด๊ธ‰ ๋ถ„์„์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋กœ๊ทธ๋ฅผ ์ง€ํ‘œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Graphite์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์—”์ง€๋‹ˆ์–ด์˜ ์ž‘์—…์„ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ธํ”„๋ผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ฉ”ํŠธ๋ฆญ๊ณผ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์˜ ๋ฐ˜์ž๋™ ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋…„ ์˜ˆ์ •์ธ ๋ฐ์ดํ„ฐ ๋…ธ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฐ ๋’ค ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ธฐ๊ฐ„์„ 4์ผ์—์„œ 7์ผ๋กœ ์ „ํ™˜ํ•  ์˜ˆ์ •์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์‚ฌ๊ฑด์„ ์กฐ์‚ฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žฅ๊ธฐ ์กฐ์‚ฌ๋ฅผ ์œ„ํ•œ ์›๊ฒฉ ์ธก์ • ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์šด์˜ ์ž‘์—…์—๋Š” ์ด๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. 

2019๋…„ 15,3์›” cian.ru์˜ ํŠธ๋ž˜ํ”ฝ์€ ์ด๋ฏธ ์›”๋ณ„ ๊ณ ์œ  ์‚ฌ์šฉ์ž ์ˆ˜ XNUMX๋งŒ ๋ช…์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๊ทธ ์ „๋‹ฌ์„ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ์‹ฌ๊ฐํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

์ด์ œ ์šฐ๋ฆฌ๋Š” ElasticSearch๋ฅผ ๋ฒ„์ „ 7๋กœ ์—…๋ฐ์ดํŠธํ•  ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฒ„์ „ 5.5์—์„œ ์ด๋™ํ•˜๊ณ  ๋ฒ„์ „ 6์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ElasticSearch์˜ ๋งŽ์€ ์ธ๋ฑ์Šค ๋งคํ•‘์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋‹จ์ˆœํžˆ ๋ฒ„์ „์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). 7). ์ฆ‰, ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ผ์ข…์˜ ๋ถˆ๊ฐ€ํ•ญ๋ ฅ์ด ๋ฐœ์ƒํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๋™์•ˆ ๋กœ๊ทธ๊ฐ€ ๋‚จ์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ 7 ์ค‘์—์„œ ์šฐ๋ฆฌ๋Š” ํ–ฅ์ƒ๋œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ƒˆ๋กœ์šด ํ•„ํ„ฐ๋ฅผ ๊ฐ–์ถ˜ Kibana๋ฅผ ๊ฐ€์žฅ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

์šฐ๋ฆฌ๋Š” ์ฃผ์š” ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ ์†์‹ค์„ ๋ฉˆ์ถ”๊ณ  ์ธํ”„๋ผ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์„ ์ฃผ๋‹น 2~3ํšŒ ์ถฉ๋Œ์—์„œ ์›” XNUMX์‹œ๊ฐ„์˜ ์œ ์ง€ ๊ด€๋ฆฌ ์ž‘์—…์œผ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ƒ์‚ฐ ์ž‘์—…์€ ๊ฑฐ์˜ ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์šฐ๋ฆฌ๋Š” ์„œ๋น„์Šค์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ž๋™ ๋ชจ๋“œ์—์„œ ์‹ ์†ํ•˜๊ฒŒ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋กœ๊ทธ๊ฐ€ ์†์‹ค๋  ๊ฒƒ์„ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋งŒ์กฑํ•˜๊ณ  ํ–‰๋ณตํ•˜๋ฉฐ ๋‚˜์ค‘์— ์ด์•ผ๊ธฐํ•  ์ƒˆ๋กœ์šด ๊ณต๊ฒฉ์„ ์ค€๋น„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€