์ตœ๊ณ  ํŒŒ์นดํฌํ”„ ์‹œ์•ˆ

์ตœ๊ณ  ํŒŒ์นดํฌํ”„ ์‹œ์•ˆ

๋ชจ๋“  ์ข‹์€! 

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

์„œ๋ฌธ

์˜ค๋ž˜ ์ „, Cian์ด ๋‹จ์ผ์ฒด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ๊ณ  ์•„์ง ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํžŒํŠธ๊ฐ€ ์—†์—ˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” 3~5ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ๊ฐ€์šฉ์„ฑ์„ ์ธก์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. 

๊ทธ๋“ค์€ ๋Œ€๋‹ตํ•ฉ๋‹ˆ๋‹ค โ€“ ์˜ค๋žซ๋™์•ˆ ๋Œ€๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค โ€“ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๊ฑด์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ์˜ค๋žซ๋™์•ˆ ์ง์žฅ์„ ๋– ๋‚˜์•ผ ํ•˜๋Š”์ง€๋Š” ํšŒ์˜์—์„œ ์‚ฌ๋žŒ๋“ค์ด ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ๊ณ  ์กฐ์‚ฌ์—๋Š” ํ•ญ์ƒ ์—”์ง€๋‹ˆ์–ด ํŒ€์ด ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์กฐ์‚ฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ๋“ค์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์ง€์†๋˜์—ˆ๋Š”์ง€, ํ˜„์žฌ ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€, ์•ž์œผ๋กœ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ๋“ฑ์˜ ํ˜•์‹์œผ๋กœ ์ด๋ฉ”์ผ์„ ํ†ตํ•ด ์ผ์ข…์˜ ์‚ฌํ›„ ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. 

์‚ฌ์ดํŠธ์˜ ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ๋˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐ”๋‹ฅ์— ๋„๋‹ฌํ–ˆ์Œ์„ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•

 
์˜ค๋ฅ˜์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์‚ฌ์ดํŠธ ํŽ˜์ด์ง€๋ฅผ ์‹๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต/์‹คํŒจํ•œ ์š”์ฒญ ์ˆ˜์™€ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋™ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. 

์‚ฌ์ดํŠธ์— ์ฃผ์š” ์„œ๋น„์Šค(๊ด‘๊ณ  ๊ฒ€์ƒ‰ ๋ฐ ์ œ์ถœ)๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์„น์…˜์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ์š”์ฒญ ์ˆ˜๊ฐ€ 1%๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์ด๋Š” ์‹ฌ๊ฐํ•œ ์‚ฌ๊ณ ์ž…๋‹ˆ๋‹ค. ํ”„๋ผ์ž„ํƒ€์ž„ ์ค‘ 15๋ถ„ ์ด๋‚ด ์˜ค๋ฅ˜์œจ์ด 0,1%๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์ค‘๋Œ€์žฌํ•ด๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ค€์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๊ฑด์— ์ ์šฉ๋˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ์ด ๋ฌธ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค.

์ตœ๊ณ  ํŒŒ์นดํฌํ”„ ์‹œ์•ˆ

์ตœ๊ณ  ์ตœ๊ณ ์˜ ์‚ฌ๊ฑด Cian

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์‚ฌ๊ฑด์ด ์ผ์–ด๋‚ฌ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์‹คํžˆ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. 

์ด์ œ ๋ชจ๋“  ์‚ฌ๊ฑด์ด ์ž์„ธํžˆ ์„ค๋ช…๋˜๊ณ  Jira ์„œ์‚ฌ์‹œ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ด๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” FAIL์ด๋ผ๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์—ํ”ฝ๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ์˜ ๋ชจ๋“  ์‹คํŒจ๋ฅผ ์ˆ˜์ง‘ํ•˜๋ฉด ๋ฆฌ๋”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

  • mssql ๊ด€๋ จ ์‚ฌ๊ฑด;
  • ์™ธ๋ถ€ ์š”์ธ์œผ๋กœ ์ธํ•œ ์‚ฌ๊ณ ;
  • ๊ด€๋ฆฌ์ž ์˜ค๋ฅ˜.

๊ด€๋ฆฌ์ž์˜ ์‹ค์ˆ˜์™€ ๊ธฐํƒ€ ํฅ๋ฏธ๋กœ์šด ์‹คํŒจ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

XNUMX์œ„ - "DNS์— ์ •๋ฆฌํ•˜๊ธฐ"

ํญํ’์šฐ๊ฐ€ ๋ชฐ์•„์น˜๋Š” ํ™”์š”์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” DNS ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ณต์›ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. 

๋‚ด๋ถ€ DNS ์„œ๋ฒ„๋ฅผ ๋ฐ”์ธ๋”ฉ์—์„œ powerdns๋กœ ์ „์†กํ•˜๊ณ  ์ด๋ฅผ ์œ„ํ•ด DNS ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์™„์ „ํžˆ ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. 

์šฐ๋ฆฌ๋Š” DC์˜ ๊ฐ ์œ„์น˜์— ํ•˜๋‚˜์˜ DNS ์„œ๋ฒ„๋ฅผ ๋ฐฐ์น˜ํ–ˆ์œผ๋ฉฐ ์˜์—ญ์„ ๋ฐ”์ธ๋“œ์—์„œ powerdns๋กœ ์ด๋™ํ•˜๊ณ  ์ธํ”„๋ผ๋ฅผ ์ƒˆ ์„œ๋ฒ„๋กœ ์ „ํ™˜ํ•˜๋Š” ์ˆœ๊ฐ„์ด ์™”์Šต๋‹ˆ๋‹ค. 

์ด๋™ ์ค‘์— ๋ชจ๋“  ์„œ๋ฒ„์˜ ๋กœ์ปฌ ์บ์‹ฑ ๋ฐ”์ธ๋”ฉ์— ์ง€์ •๋œ ๋ชจ๋“  ์„œ๋ฒ„ ์ค‘ ์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š” ์„œ๋ฒ„ ํ•˜๋‚˜๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ์ด DC๋Š” ์ฒ˜์Œ์—๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์„ ์–ธ๋˜์—ˆ์œผ๋‚˜ ๊ฐ‘์ž๊ธฐ ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ์Šคํฌ๋ฐ”์™€ ์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ ์‚ฌ์ด์˜ ์šดํ•˜๊ฐ€ ๋ฌด๋„ˆ์ง„ ๊ฒƒ์€ ๋ฐ”๋กœ ์ด ์ด์ „ ๊ธฐ๊ฐ„ ๋™์•ˆ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ XNUMX๋ถ„ ๋™์•ˆ DNS ์—†์ด ๋ฐฉ์น˜๋˜์—ˆ๋‹ค๊ฐ€ ํ˜ธ์ŠคํŒ… ์—…์ฒด๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์„ ๋•Œ ๋‹ค์‹œ ์ผ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. 

๊ฒฐ๋ก  :

์ด์ „์— ์ž‘์—…์„ ์ค€๋น„ํ•˜๋Š” ๋™์•ˆ ์™ธ๋ถ€ ์š”์ธ์„ ๋ฌด์‹œํ–ˆ๋‹ค๋ฉด ์ด์ œ ๊ทธ ์š”์†Œ๋„ ์šฐ๋ฆฌ๊ฐ€ ์ค€๋น„ํ•˜๋Š” ๋ชฉ๋ก์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ n-2๋กœ ์˜ˆ์•ฝ๋˜๋„๋ก ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž‘์—… ์ค‘์— ์ด ์ˆ˜์ค€์„ n-1๋กœ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

XNUMX์œ„ - "Nginx์—์„œ ์ •๋ฆฌํ•˜๊ธฐ"

์–ด๋Š ํ™”์ฐฝํ•œ ๋‚ , ์šฐ๋ฆฌ ํŒ€์€ "์ด์ œ ์ถฉ๋ถ„ํ•˜๋‹ค"๊ณ  ๊ฒฐ์ •ํ•˜๊ณ  nginx ๊ตฌ์„ฑ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชฉํ‘œ๋Š” ๊ตฌ์„ฑ์„ ์ง๊ด€์ ์ธ ๊ตฌ์กฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด "์—ญ์‚ฌ์ ์œผ๋กœ ํ™•๋ฆฝ"๋˜์–ด ๋…ผ๋ฆฌ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ฐ server_name์ด ๋™์ผํ•œ ์ด๋ฆ„์˜ ํŒŒ์ผ๋กœ ์ด๋™๋˜์—ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ตฌ์„ฑ์ด ํด๋”์— ๋ฐฐํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ตฌ์„ฑ์—๋Š” 253949์ค„ ๋˜๋Š” 7836520์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฑฐ์˜ โ€‹โ€‹7MB๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ๊ตฌ์กฐ: 

Nginx ๊ตฌ์กฐ

โ”œโ”€โ”€ access
โ”‚   โ”œโ”€โ”€ allow.list
...
โ”‚   โ””โ”€โ”€ whitelist.conf
โ”œโ”€โ”€ geobase
โ”‚   โ”œโ”€โ”€ exclude.conf
...
โ”‚   โ””โ”€โ”€ geo_ip_to_region_id.conf
โ”œโ”€โ”€ geodb
โ”‚   โ”œโ”€โ”€ GeoIP.dat
โ”‚   โ”œโ”€โ”€ GeoIP2-Country.mmdb
โ”‚   โ””โ”€โ”€ GeoLiteCity.dat
โ”œโ”€โ”€ inc
โ”‚   โ”œโ”€โ”€ error.inc
...
โ”‚   โ””โ”€โ”€ proxy.inc
โ”œโ”€โ”€ lists.d
โ”‚   โ”œโ”€โ”€ bot.conf
...
โ”‚   โ”œโ”€โ”€ dynamic
โ”‚   โ””โ”€โ”€ geo.conf
โ”œโ”€โ”€ lua
โ”‚   โ”œโ”€โ”€ cookie.lua
โ”‚   โ”œโ”€โ”€ log
โ”‚   โ”‚   โ””โ”€โ”€ log.lua
โ”‚   โ”œโ”€โ”€ logics
โ”‚   โ”‚   โ”œโ”€โ”€ include.lua
โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ””โ”€โ”€ utils.lua
โ”‚   โ””โ”€โ”€ prom
โ”‚       โ”œโ”€โ”€ stats.lua
โ”‚       โ””โ”€โ”€ stats_prometheus.lua
โ”œโ”€โ”€ map.d
โ”‚   โ”œโ”€โ”€ access.conf
โ”‚   โ”œโ”€โ”€ .. 
โ”‚   โ””โ”€โ”€ zones.conf
โ”œโ”€โ”€ nginx.conf
โ”œโ”€โ”€ robots.txt
โ”œโ”€โ”€ server.d
โ”‚   โ”œโ”€โ”€ cian.ru
โ”‚   โ”‚   โ”œโ”€โ”€ cian.ru.conf
โ”‚   โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ”‚   โ””โ”€โ”€ my.cian.ru.conf
โ”œโ”€โ”€ service.d
โ”‚   โ”œโ”€โ”€ ...
โ”‚   โ””โ”€โ”€ status.conf
โ””โ”€โ”€ upstream.d
    โ”œโ”€โ”€ cian-mcs.conf
    โ”œโ”€โ”€ ...
    โ””โ”€โ”€ wafserver.conf

ํ›จ์”ฌ ๋‚˜์•„์กŒ๋Š”๋ฐ ๊ตฌ์„ฑ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •์—์„œ ์ผ๋ถ€ ํ™•์žฅ์ž๊ฐ€ ์ž˜๋ชป๋˜์–ด include *.conf ์ง€์‹œ๋ฌธ์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ผ๋ถ€ ํ˜ธ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด ๊ธฐ๋ณธ ํŽ˜์ด์ง€์— 301์ด ๋ฐ˜ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‘๋‹ต ์ฝ”๋“œ๊ฐ€ 5xx/4xx๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ์ฆ‰์‹œ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š๊ณ  ์•„์นจ์—๋งŒ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์šฐ๋ฆฌ๋Š” ์ธํ”„๋ผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก  : 

  • ๊ตฌ์„ฑ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ (nginx๋ฟ๋งŒ ์•„๋‹ˆ๋ผ) ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŒ€์ด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด TTM์ด ์ค„์–ด๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ์ธํ”„๋ผ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ๋ชจ๋“  ํ‚ค server_name์ด ์˜ฌ๋ฐ”๋ฅธ ์ƒํƒœ + ์‘๋‹ต ๋ณธ๋ฌธ์„ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ํ™•์ธํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์Šคํฌ๋ฆฝํŠธ๋งŒ ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•˜๋ฏ€๋กœ ์˜ค์ „ 3์‹œ์— ํ™•์ธํ•ด์•ผ ํ•  ์‚ฌํ•ญ์„ ์ •์‹ ์—†์ด ๊ธฐ์–ตํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. 

XNUMX์œ„ - "์นด์‚ฐ๋“œ๋ผ์—์„œ ๊ฐ‘์ž๊ธฐ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•ด์กŒ์Šต๋‹ˆ๋‹ค."

๋ฐ์ดํ„ฐ๋Š” ๊พธ์ค€ํžˆ ์ฆ๊ฐ€ํ–ˆ๊ณ  Cassandra ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋Œ€ํ˜• ์ผ€์ด์Šค ๊ณต๊ฐ„์˜ ์ˆ˜๋ฆฌ๊ฐ€ ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์•˜์Šต๋‹ˆ๋‹ค. ์••์ถ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

์–ด๋Š ํญํ’์šฐ๊ฐ€ ๋ชฐ์•„์น˜๋Š” ๋‚ , ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๊ฑฐ์˜ ํ˜ธ๋ฐ•์œผ๋กœ ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํด๋Ÿฌ์Šคํ„ฐ์—๋Š” ์ „์ฒด ๊ณต๊ฐ„์˜ ์•ฝ 20%๊ฐ€ ๋‚จ์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ํŒŒํ‹ฐ์…˜ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜์—ฌ ์ •๋ฆฌ๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ๋“œ๋ฅผ ์™„์ „ํžˆ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์••์ถ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ์ƒ์‚ฐ์„ฑ์ด ์ ์ฐจ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. 
  • ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋น„์ƒ ๋ชจ๋“œ์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ณ  ํŒŒ์นดํฌํ”„ ์‹œ์•ˆ

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

๊ฒฐ๋ก  :

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

XNUMX์œ„ โ€“ โ€œ์˜์‚ฌ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹คโ€

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

๊ฒฐ๋ก  :

  • ์Šน์ธ๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค์—๋Š” ์‚ฌ์ดํŠธ ์šด์˜์— ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ES์—์„œ ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ณณ์—์„œ ๋„คํŠธ์›Œํฌ ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  action.destructive_requires_name: true๋„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ฏธ๋ฆฌ ์—ฐ์Šตํ•ด ๋ณด์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ์—…๊ณผ ๋ณต์›์ด ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฏธ๋ฆฌ(์˜ˆ๋ฅผ ๋“ค์–ด Python์œผ๋กœ) ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”.

XNUMX์œ„ - '์บกํ‹ด ์–ธ๋…ธ๋น„์–ด์Šค(Captain Unobvious)' 

์–ด๋–ค ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฐฑ์—”๋“œ์— 10๊ฐœ ์ด์ƒ์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ nginx ์—…์ŠคํŠธ๋ฆผ์—์„œ ๋กœ๋“œ๊ฐ€ ๊ณ ๋ฅด์ง€ ์•Š๊ฒŒ ๋ถ„์‚ฐ๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ผ์šด๋“œ ๋กœ๋นˆ์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ โ€‹โ€‹์—…์ŠคํŠธ๋ฆผ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ฐ nginx ๋‹ค์‹œ ๋กœ๋“œ๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ์—…์ŠคํŠธ๋ฆผ์€ ํ•ญ์ƒ ๋‚˜๋จธ์ง€ ์—…์ŠคํŠธ๋ฆผ๋ณด๋‹ค ๋” ๋งŽ์€ ์š”์ฒญ์„ ๋ฐ›์•˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž‘์—… ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ณ  ์‚ฌ์ดํŠธ ์ „์ฒด๊ฐ€ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋ž˜ํ”ฝ ์–‘์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ ์  ๋” ๋ˆˆ์— ๋„๊ฒŒ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ฌด์ž‘์œ„๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด nginx๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (๋‹น์‹œ) ๋ฒ„์ „ 1์—์„œ ์‹œ์ž‘๋˜์ง€ ์•Š์•˜๋˜ ์—ฌ๋Ÿฌ Lua ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” nginx 1.15๋ฅผ ํŒจ์น˜ํ•˜์—ฌ ๋ฌด์ž‘์œ„ ์ง€์›์„ ๋„์ž…ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ์จ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ๋Š” "Captain Non-Obviousness" ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ์šฐ์Šนํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก  :

์ด ๋ฒ„๊ทธ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํฅ๋ฏธ๋กญ๊ณ  ํฅ๋ฏธ๋กœ์› ์Šต๋‹ˆ๋‹ค.) 

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

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

์ถœ์ฒ˜ : habr.com

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