๐Ÿ“– ๊ฐ€์ƒ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ

ํ† ์˜ ์Šคํ„ฐ๋””๋กœ ์ง„ํ–‰๋œ ํ•™์Šต๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. github


Contents



1์žฅ. ์‚ฌ์šฉ์ž ์ˆ˜์— ๋”ฐ๋ฅธ ๊ทœ๋ชจ ํ™•์žฅ์„ฑ

์ตœ๊ทผ์— ์ •๋ฆฌํ•œ ๋ฐฑ์—”๋“œ ์„ค๊ณ„์‹œ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…๊ณผ ์œ ์‚ฌํ•œ ๋ถ€๋ถ„์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ์„œ๋ฒ„
๋งŒ์•ฝ ์‚ฌ์šฉ์ž๊ฐ€ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?
DNS์—์„œ ํ•ด๋‹นํ•˜๋Š” IP์ฃผ์†Œ๋ฅผ ์ฐพ๊ณ  ๊ทธ ์ฃผ์†Œ์— ํ•ด๋‹นํ•˜๋Š” ์›น์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ์›น์„œ๋ฒ„๋Š” ์š”์ฒญ์— ๋”ฐ๋ฅธ HTML ๋˜๋Š” JSON ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž ๋‹จ๋ง์— ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
HTTP ์š”์ฒญ์„ ๋ฐ›์€ ์›น์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ MySQL, PostgreSQL ๋“ฑ์ด ์žˆ๊ณ , ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ NoSQL์—๋Š” DynamoDB, Redis ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. NoSQL์€ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ, ๊ทธ๋ž˜ํ”„ ์ €์žฅ์†Œ, ์นผ๋Ÿผ ์ €์žฅ์†Œ, ๋ฌธ์„œ ์ €์žฅ์†Œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์ด๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํžˆ ์ง๋ ฌํ™”, ์—ญ์ง๋ ฌํ™”๋งŒ ํ•˜๋ฉด ๋˜๋Š” ์ƒํ™ฉ, ์•„์ฃผ ๋‚ฎ์€ ์ง€์—ฐ ์‘๋‹ต์‹œ๊ฐ„์ด ์š”๊ตฌ๋˜๋Š” ์ƒํ™ฉ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์•„์ฃผ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์•„์ฃผ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ์š”๊ตฌ๋˜๋Š” ๋ถ€๋ถ„์ด ์•„๋‹Œ๊ฐ€์š”?
๊ธฐ์กด์— NoSQL์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•  ๋•Œ, ๋งค๋ฒˆ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ RDBMS์—์„œ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Redis๋ฅผ ์ด์šฉํ•œ ์บ์‹ฑ์ฒ˜๋ฆฌ ๋ฐฉ์•ˆ์„ ๋ชจ์ƒ‰ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋Š” ์ฝ๊ธฐ ์—ฐ์‚ฐ์„ ์œ„ํ•œ ์ˆ˜๋‹จ์ด์—ˆ๋Š”๋ฐ, ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์— ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋ง์ด ์ดํ•ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์ €์ž์˜ ์˜๋„๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ NoSQL์— ๋จผ์ € ์ €์žฅํ•ด ๋‘๊ณ , RDBMS์—๋Š” ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์—…๋ฐ์ด๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ๊ธฐ ์ž‘์—…์„ RDBMS๋กœ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํŠน์ • row๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด row lock ๊ฑธ๋ฆฌ๋Š” ์ƒํ™ฉ์—์„œ๋„ ๋งŽ์€ ๋ฐ์ดํ„ฐ์˜ ์ผ์‹œ ์ €์žฅ์œผ๋กœ ์ธํ•ด ์ƒ๋‹น ์‹œ๊ฐ„ page lock์ด ๊ฑธ๋ฆฌ๋Š” ๋“ฑ์˜ ๊ฒฝํ•ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

๋ณต๊ตฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•œ ์ถ”๊ฐ€ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ• ๊นŒ?
์ด๋ฏธ ์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žฅ์• ๊ฐ€ ๋‚˜์„œ ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์Šน๊ฒฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ์ง„ํ–‰๋˜๋Š” ์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ์™€์˜ ์ผ๊ด€์„ฑ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฃผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์žฅ์•  ๋ฐ”๋กœ ์ง์ „์œผ๋กœ์˜ ๋ณต๊ตฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ์™€ ์›ํ˜• ๋‹ค์ค‘ํ™”
๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋งˆ์Šคํ„ฐ ์žฅ๋น„๊ฐ€ ํ•˜๋‚˜์˜ ์Šฌ๋ ˆ์ด๋ธŒ ์žฅ๋น„๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ, ์›ํ˜• ๋‹ค์ค‘ํ™”๋Š” ์—ฌ๋Ÿฌ ๋Œ€์˜ ์žฅ๋น„๊ฐ€ ์„œ๋กœ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์บ์‹œ
์บ์‹œ๋Š” ๊ฐ’๋น„์‹ผ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ๋˜๋Š” ์ž์ฃผ ์ฐธ์กฐ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋‘์–ด ์—ฐ์ด์€ ์š”์ฒญ์ด ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐํšŒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์บ์‹œ์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๊ณ  ์—†์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กฐํšŒํ•ด ์บ์‹œ ์ €์žฅ ํ›„ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์บ์‹œ๋Š” ์ฃผ๋กœ ์ฐธ์กฐ ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•˜๋ฉฐ, ๋งŒ๋ฃŒ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด์™€์•ผ ํ•˜๋ฏ€๋กœ ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์„ ๋„ˆ๋ฌด ์งง๊ฒŒ ๋‘์–ด์„  ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๋˜ ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ ๊ฒฝ์šฐ์—๋Š” ์บ์‹œ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ์ผ๊ด€์„ฑ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์บ์‹œ ์—ญ์‹œ ๋‹จ์ผ ์žฅ์• ์ง€์ (Single Point of Failure, SPOF)๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋ถ„์‚ฐ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์บ์‹œ ๋ฐฉ์ถœ์ •์ฑ…
Caching Strategies and How to Choose the Right One์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
์–ด๋–ค ์บ์‹ฑ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š๋ƒ๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์“ฐ๊ธฐ์ž‘์—…์ด ํ•œ ๋ฒˆ์— ๋งŽ์ด ์ด๋ค„์ง€๋Š”์ง€, ์“ฐ๊ธฐ ์—ฐ์‚ฐ์˜ ์ž‘์—… ๋นˆ๋„๊ฐ€ ๋†’์€์ง€, ๋ฐ์ดํ„ฐ๊ฐ€ uniqueํ•œ ๊ฐ’์„ ๊ฐ–๋Š”์ง€์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
Cache-Aside ๋ฐฉ์‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ cache๋ฅผ ๋จผ์ € ์ฝ๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด(cache miss) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฝ์–ด์˜จ ๋’ค์— cache์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๋ชจ๋‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•ธ๋“ค๋งํ•˜๊ณ  ๋ณ„๋„๋กœ cache์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ์—ฐ๊ฒฐ์€ ์—†์Šต๋‹ˆ๋‹ค. ์กฐํšŒํ•  ๋‚ด์šฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ๋กœ Memcached์™€ Redis๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Cache-Aside ๋ฐฉ์‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ๋กœ ์“ฐ๊ธฐ ์ž‘์—…์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ์‹ ์„ ๋„๋ฅผ ์ ์ ˆํžˆ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์บ์‹œ ํ•ญ๋ชฉ์„ ๋ฌดํšจํ™”ํ•˜๊ฑฐ๋‚˜ ์ ์ ˆํ•œ TTL ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
Read-Through ๋ฐฉ์‹์€ Cache-Aside ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์บ์‹œ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ๋‹ค๋ฅด์ง€ ์•Š๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ฒ˜์Œ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ์บ์‹ฑ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ์บ์‹ฑ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ์ˆ˜๋™์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด ๋ฏธ๋ฆฌ ์›Œ๋ฐํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Write-Through ๋ฐฉ์‹์€ ํ•ญ์ƒ ์“ฐ๊ธฐ ์ž‘์—…์‹œ ์บ์‹œ์— ์“ฐ์—ฌ์ง€๊ณ  ๊ทธ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์“ฐ๊ธฐ ์ž‘์—…์ด ์ด๋ค„์ง€๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์ด ์žˆ์œผ๋‚˜ ๋งค๋ฒˆ 2๊ฐœ์˜ ์“ฐ๊ธฐ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Write-Back ๋ฐฉ์‹์€ ์บ์‹œ์— ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์ž‘์—…์ด ๋งŽ์€ ๊ฒฝ์šฐ Write-Through ๋ฐฉ์‹์ฒ˜๋Ÿผ ๋งค๋ฒˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐ˜ํ™˜ ์ž‘์—… ์ „์— ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์บ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์†์‹ค๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์บ์‹œ ์ผ๊ด€์„ฑ์— ๋Œ€ํ•œ ํŽ˜์ด์Šค๋ถ ๋…ผ๋ฌธ

R. Nishtala, โ€œFacebook, Scaling Memcache at,โ€ 10th USENIX Symposium on NetworkedSystems Design and Implementation (NSDI โ€™13)

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

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

๋ฐ์ดํ„ฐ ์„ผํ„ฐ
๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋Š” US-East, US-West์™€ ๊ฐ™์ด ์ง€๋ฆฌ์  ๋ผ์šฐํŒ…์— ๋”ฐ๋ผ geoDNS๋กœ ๊ฐ€๊นŒ์šด IP์ฃผ์†Œ๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์œ„์น˜์—์„œ ์„œ๋น„์Šค๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•  ํ•„์š”๊ฐ€ ์žˆ๊ณ , ๊ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ณ„ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋˜๋Š”์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ๋” ๋งŽ์€ ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ๊ฐ€ ๊ฑฐ์˜ ํ•ญ์ƒ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ์ž‘์—… ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋Š” ์ค„์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

When the size of the queue becomes large, more workers are added to reduce the processing time. However, if the queue is empty most of the time, the number of workers can be reduced.

์ด ๋ถ€๋ถ„์˜ ๋ง์ด ์•ฝ๊ฐ„ ์–ด์ƒ‰ํ•ด์„œ ์›์–ด ๋ฒ„์ „์„ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค.
์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๋Š” ๋…๋ฆฝ์  ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•œ๋ฐ ํ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ๋” ๋งŽ์€ ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์‚ฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฑฐ์˜ ํ•ญ์ƒ ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ์ž‘์—…์ž์˜ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

  • ์›น ๊ณ„์ธต์€ ๋ฌด์ƒํƒœ ๊ณ„์ธต์œผ๋กœ
  • ๋ชจ๋“  ๊ณ„์ธต์— ๋‹ค์ค‘ํ™” ๋„์ž…
  • ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ ์บ์‹œํ•  ๊ฒƒ
  • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์ง€์›ํ•  ๊ฒƒ
  • ์ •์  ์ฝ˜ํ…์ธ ๋Š” CDN์„ ํ†ตํ•ด ์„œ๋น„์Šคํ•  ๊ฒƒ
  • ๋ฐ์ดํ„ฐ ๊ณ„์ธต์€ ์ƒค๋”ฉ์„ ํ†ตํ•ด ๊ทธ ๊ทœ๋ชจ๋ฅผ ํ™•์žฅํ•  ๊ฒƒ
  • ๊ฐ ๊ณ„์ธต์€ ๋…๋ฆฝ์  ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•  ๊ฒƒ
  • ์‹œ์Šคํ…œ์„ ์ง€์†์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ž๋™ํ™” ๋„๊ตฌ๋“ค์„ ํ™œ์šฉํ•  ๊ฒƒ



2์žฅ. ๊ฐœ๋žต์ ์ธ ๊ทœ๋ชจ ์ถ”์ •

๊ฐœ๋žต์ ์ธ ๊ทœ๋ชจ ์ถ”์ •์€ ๋ณดํŽธ์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ์„ฑ๋Šฅ ์ˆ˜์น˜์ƒ์—์„œ ์‚ฌ๊ณ  ์‹คํ—˜์„ ํ–‰ํ•˜์—ฌ ๋ณดํŽธ์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ์„ฑ๋Šฅ ์ˆ˜์น˜์ƒ์—์„œ ์‚ฌ๊ณ  ์‹คํ—˜์„ ํ–‰ํ•˜์—ฌ ์ถ”์ •์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ–‰์œ„๋กœ์„œ, ์–ด๋–ค ์„ค๊ณ„๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์— ๋ถ€ํ•ฉํ•  ๊ฒƒ์ธ์ง€ ๋ณด๊ธฐ ์œ„ํ•œ ๊ฒƒ
Jeff Dean, Lead of Google AI

2์˜ ์ œ๊ณฑ์ˆ˜

large_scale_1.png

์‘๋‹ต์ง€์—ฐ ๊ฐ’

large_scale_2.png

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

๊ณ ๊ฐ€์šฉ์„ฑ
์‹œ์Šคํ…œ์ด ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์ง€์†์ ์œผ๋กœ ์ค‘๋‹จ ์—†์ด ์šด์˜๋  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค. (๋Œ€๋ถ€๋ถ„ 99% ~ 100%)
SLA(Service Level Agreement)
์„œ๋น„์Šค ์‚ฌ์—…์ž๊ฐ€ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด, ์„œ๋น„์Šค ์‚ฌ์—…์ž์™€ ๊ณ ๊ฐ ์‚ฌ์ด์— ๋งบ์–ด์ง„ ํ•ฉ์˜

์ถ”์ •๋Ÿ‰ ๊ตฌํ•˜๊ธฐ
ํŠธ์œ„ํ„ฐ QPS์™€ ์ €์žฅ์†Œ ์š”๊ตฌ๋Ÿ‰ ์ถ”์ • ์˜ˆ์‹œ

  • ์›”๊ฐ„ ๋Šฅ๋™ ์‚ฌ์šฉ์ž ์ˆ˜ 3์–ต๋ช…
  • 50% ์‚ฌ์šฉ์ž๊ฐ€ ํŠธ์œ„ํ„ฐ๋ฅผ ๋งค์ผ ์ด์šฉ
  • ํ‰๊ท ์ ์œผ๋กœ ๊ฐ ์‚ฌ์šฉ์ž๋Š” ๋งค์ผ 2๊ฑด์˜ ํŠธ์œ—์„ ์˜ฌ๋ฆผ
  • ๋ฏธ๋””์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ์œ—์€ 10%
  • ๋ฐ์ดํ„ฐ๋Š” 5๋…„๊ฐ„ ๋ณด๊ด€
์ถ”์ •์น˜ ๊ณ„์‚ฐ์‹
QPS(Query Per Second) ์ถ”์ •์น˜ (1.5์–ต๋ช…*2ํŠธ์œ—)/(24*60*60) = ์•ฝ 3500
๋ฏธ๋””์–ด ์ €์žฅ์„ ์œ„ํ•œ ์ €์žฅ์†Œ ์š”๊ตฌ๋ž‘ (1.5์–ต*2ํŠธ์œ—*10%)*1MB = 30TB/์ผ
30TB*365*5 = ์•ฝ 55PB

์ถ”์ •์น˜ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ํŒ

  1. ๊ทผ์‚ฌ์น˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์‚ฐ
  2. ๊ฐ€์ •์„ ์ ์–ด๋‘์ž
  3. ๋‹จ์œ„๋ฅผ ๋ถ™์ด์ž
  4. QPS, ์ตœ๋Œ€ QPS, ์ €์žฅ์†Œ ์š”๊ตฌ๋Ÿ‰, ์บ์‹œ ์š”๊ตฌ๋Ÿ‰, ์„œ๋ฒ„ ์ˆ˜ ๋ฌธ์ œ๋ฅผ ์ตํ˜€๋‘์ž



3์žฅ. ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฉด์ ‘ ๊ณต๋žต๋ฒ•

์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฉด์ ‘์˜ ๋ชฉ์ 
์ง€์›์ž๊ฐ€ ํ˜‘๋ ฅ์— ์ ํ•ฉํ•œ์ง€, ์••๋ฐ• ์ƒํ™ฉ์„ ์ž˜ ๊ฒฌ๋””๋Š”์ง€ ๋ชจํ˜ธํ•œ ๋ฌธ์ œ๋กœ๋„ ๊ฑด์„ค์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ๋Šฅ๋ ฅ์ด ์žˆ๋Š”์ง€ ๋“ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ณผ๋„ํ•œ ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ”ผํ•˜๊ณ  โ€˜ํƒ€ํ˜‘์  ๊ฒฐ์ •โ€™์„ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšจ๊ณผ์  ๋ฉด์ ‘์„ ์œ„ํ•œ 4๋‹จ๊ณ„ ์ ‘๊ทผ๋ฒ•

1๋‹จ๊ณ„ ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •

  • ์˜ฌ๋ฐ”๋ฅธ ์งˆ๋ฌธ์„ ํ•˜๊ณ  ๊ฐ€์ •์„ ํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ตฌ์ถ•์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋ชจ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ, ์‚ฌ์šฉ์ž ์ˆ˜, ๊ทœ๋ชจ ํ™•์žฅ์„ฑ, ๊ธฐ์ˆ ์Šคํƒ ๋“ฑ

2๋‹จ๊ณ„ ๊ฐœ๋žต์ ์ธ ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ

  • ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ ๋‹ค์ด์–ด๊ทธ๋žจ ๊ทธ๋ฆฌ๊ธฐ
  • ํด๋ผ์ด์–ธํŠธ(๋ชจ๋ฐ”์ผ/์›น), API, ์›น ์„œ๋ฒ„, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ, ์บ์‹œ, CDN, ๋ฉ”์‹œ์ง€ ํ ๋“ฑ

3๋‹จ๊ณ„ ์ƒ์„ธ ์„ค๊ณ„

  • ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์˜ ์šฐ์„ ์ˆœ์œ„ ์ •ํ•˜๊ธฐ
  • ๋ถˆํ•„์š”ํ•œ ์„ธ๋ถ€์‚ฌํ•ญ์— ์ง‘์ค‘ํ•˜์ง€ ๋ง๊ณ  ๋ฉด์ ‘์— ๋” ์ดˆ์ ์ด ๋งž์ถฐ์ง„ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

4๋‹จ๊ณ„ ๋งˆ๋ฌด๋ฆฌ

  • ํ›„์†์งˆ๋ฌธ
  • ์šด์˜ ์ด์Šˆ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ(๋ฐฐํฌ, ๋กœ๊ทธ, ๋ชจ๋‹ˆํ„ฐ๋ง)
  • ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œ์— ๋Œ€ํ•˜์—ฌ

์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฉด์ ‘์—์„œ ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ

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



4์žฅ. ์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์žฅ์น˜์˜ ์„ค๊ณ„

์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์žฅ์น˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ณด๋‚ด๋Š” ํŠธ๋ž˜ํ”ฝ์˜ ์ฒ˜๋ฆฌ์œจ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜์ž…๋‹ˆ๋‹ค.

  • DoS์— ์˜ํ•œ ์ž์›๊ณ ๊ฐˆ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ API์— ์ž์›์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ API ์‚ฌ์šฉ์— ๋”ฐ๋ฅธ ๊ณผ๊ธˆ ํšŸ์ˆ˜๋ฅผ ์ œํ•œ
  • ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€

์ฑ…์—์„œ๋Š” 3์žฅ์—์„œ ์„ค๋ช…ํ•œ ๋‹จ๊ณ„๋ณ„๋กœ ์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์žฅ์น˜ ์„ค๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


1๋‹จ๊ณ„ - ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •
์ฒ˜๋ฆฌ์œจ๊ณผ ์‘๋‹ต์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰, ์˜ˆ์™ธ์ฒ˜๋ฆฌ, ๊ฒฐํ•จ ๊ฐ๋‚ด์„ฑ์€ ์–ด๋–ค์ง€ ๋“ฑ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


2๋‹จ๊ณ„ - ๊ฐœ๋žต์ ์ธ ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ
์ฒ˜๋ฆฌ์œจ ์ œํ•œ์žฅ์น˜๋ฅผ ์„œ๋ฒ„์— ๋‘˜์ง€ ๊ฒŒ์ดํŠธ์›จ์ด์— ๋‘˜์ง€๋Š” ํšŒ์‚ฌ์˜ ์ง€์นจ, ๊ธฐ์ˆ  ์Šคํƒ ๋“ฑ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
์ฒ˜๋ฆฌ์œจ ์ œํ•œ์žฅ์น˜ ๋ฏธ๋“ค์›จ์–ด๋กœ ๋งŒ๋“ค์–ด ๋งŽ์€ ์š”์ฒญ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ 429 Too many request๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ๋Š” ๋ณดํ†ต API ๊ฒŒ์ดํŠธ์›จ์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ์— ์„ค๊ณ„๋˜๋Š”๋ฐ, SSL ์ข…๋‹จ, ์‚ฌ์šฉ์ž ์ธ์ฆ, IP ํ—ˆ์šฉ๋ชฉ๋ก ๊ด€๋ฆฌ ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ์™„์ „ ์œ„ํƒ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ† ํฐ ๋ฒ„ํ‚ท, ๋ˆ„์ถœ ๋ฒ„ํ‚ท, ๊ณ ์ • ์œˆ๋„ ์นด์šดํ„ฐ, ์ด๋™ ์œˆ๋„ ๋กœ๊ทธ, ์ด๋™ ์œˆ๋„ ์นด์šดํ„ฐ

ํ† ํฐ ๋ฒ„ํ‚ท

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

large_scale_token_1.png

๋ˆ„์ถœ ๋ฒ„ํ‚ท

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

large_scale_token_2.png

๊ณ ์ • ์œˆ๋„ ์นด์šดํ„ฐ

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

large_scale_token_3.png

์ด๋™ ์œˆ๋„ ๋กœ๊ทธ

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

large_scale_token_4.png

์ด๋™ ์œˆ๋„ ์นด์šดํ„ฐ

  • ๊ณ ์ • ์œˆ๋„ ์นด์šดํ„ฐ์™€ ์ด๋™ ์œˆ๋„ ๋กœ๊ทธ๋ฅผ ๊ฒฐํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ์š”์ฒญ์˜ ๊ณ„์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ํ˜„์žฌ 1๋ถ„๊ฐ„ ์š”์ฒญ ์ˆ˜ + ์ง์ „ 1๋ถ„๊ฐ„์˜ ์š”์ฒญ ์ˆ˜ * ์ด๋™ ์œˆ๋„์™€ ์ง์ ‘ 1๋ถ„์ด ๊ฒน์น˜๋Š” ๋น„์œจ
  • ์ง์ „ ์‹œ๊ฐ„๋Œ€์— ๋„์ฐฉํ•œ ์š”์ฒญ์ด ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ ์ƒํƒœ์—์„œ ์ถ”์ •์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์†Œ ๋Š์Šจํ•ฉ๋‹ˆ๋‹ค.

์นด์šดํ„ฐ์˜ ๋ณด๊ด€
Redis ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ์ €์žฅ์žฅ์น˜์— ์ €์žฅํ•˜๋ฉฐ, ์นด์šดํ„ฐ ๊ฐ’์„ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” INCR์™€ ์นด์šดํ„ฐ์˜ ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ์ •ํ•˜๋Š” EXPIRE๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


3๋‹จ๊ณ„ - ์ƒ์„ธ ์„ค๊ณ„
์ฒ˜๋ฆฌ์œจ ์ œํ•œ config ํŒŒ์ผ

domain: messaging
descriptors:
- key: message_type
  Value: marketing
  rate_limit:
     unit: day
      requests_per_unit: 5  

์ฒ˜๋ฆฌ์œจ ํ•œ๋„ ์ดˆ๊ณผ ํŠธ๋ž˜ํ”ฝ์˜ ์ฒ˜๋ฆฌ
ํด๋ผ์ด์–ธํŠธ๋Š” HTTP ์‘๋‹ต ํ—ค๋”๋ฅผ ํ†ตํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์š”์ฒญ์ด ์žˆ๋Š”์ง€, ์œˆ๋„์— ๋‚จ์€ ์š”์ฒญ ์ˆ˜, ์œˆ๋„๋งˆ๋‹ค ๊ฐ€๋Šฅํ•œ ์š”์ฒญ์˜ ์ˆ˜, ํ•œ๋„ ์ œํ•œ์— ๊ฑธ๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ ๋’ค์— ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • X-Ratelimit-Remaining
  • X-Ratelimit-Limit
  • X-Ratelimit-Retry-After

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

๋™๊ธฐํ™” ์ด์Šˆ๋ฅผ ์œ„ํ•ด์„œ ๊ณ ์ • ์„ธ์…˜ ๋Œ€์‹  ๋ ˆ๋””์Šค์™€ ๊ฐ™์€ ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

์ฒ˜๋ฆฌ์œจ ์ œํ•œ ์žฅ์น˜๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด ๋” ํŠธ๋ž˜ํ”ฝ ํŒจํ„ด์„ ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.


4๋‹จ๊ณ„ ๋งˆ๋ฌด๋ฆฌ
๊ทธ ์™ธ์—๋„ ๋‹ค์Œ ์‚ฌํ•ญ๋“ค์„ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฒฝ์„ฑ ๋˜๋Š” ์—ฐ์„ฑ ์ฒ˜๋ฆฌ์œจ ์ œํ•œ
  • ๋‹ค์–‘ํ•œ ๊ณ„์ธต์—์„œ์˜ ์ฒ˜๋ฆฌ์œจ ์ œํ•œ
  • ์ฒ˜๋ฆฌ์œจ ์ œํ•œ์„ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•  ๊ฒƒ์ธ๊ฐ€



5์žฅ. ์•ˆ์ • ํ•ด์‹œ ์„ค๊ณ„

์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•ด์„œ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„์— ๋ฐฐ์น˜๋˜๋Š” ํ‚ค ๊ฐ’์˜ ๋ถ„์‚ฐ์„ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠน์ • ์„œ๋ฒ„๊ฐ€ ์ฃฝ์œผ๋ฉด ์บ์‹œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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



6์žฅ. ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ ์„ค๊ณ„

ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋Š” ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋น„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์•„๋งˆ์กด ๋‹ค์ด๋‚˜๋ชจ, memcached, Redis์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •
ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ ์ž ํ•  ๋•Œ ์–ด๋–ค ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

  • ํ‚ค-๊ฐ’ ์Œ์˜ ํฌ๊ธฐ
  • ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ
  • ๊ฐ€์šฉ์„ฑ
  • ๊ทœ๋ชจ ํ™•์žฅ์„ฑ
  • ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ
  • ์‘๋‹ต ์ง€์—ฐ์‹œ๊ฐ„

๋‹จ์ผ ์„œ๋ฒ„ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ
ํ‚ค-๊ฐ’ ์Œ ์ „๋ถ€๋ฅผ ํ•ด์‹œํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๊ฒ€์ƒ‰ ์†๋„๋Š” ๋น ๋ฅผ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ๋‘๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์••์ถ•์ด๋‚˜ ์ž์ฃผ ์“ฐ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋””์Šคํฌ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ
๋ถ„์‚ฐ ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ํ‚ค-๊ฐ’ ์Œ ์ž์ฒด๋ฅผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ CAP์ •๋ฆฌ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ(Consistency), ๊ฐ€์šฉ์„ฑ(Availability), ๋ถ„ํ•  ๋‚ด์„ฑ(Partition tolerance)์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (1์žฅ CAP ์ฐธ์กฐ)
์‹ค์ œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ํŒŒํ‹ฐ์…˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  100% ๋ณด์žฅํ•  ์ˆ˜ ์—†์Œ์œผ๋กœ ์ผ๊ด€์„ฑ๊ณผ ๊ฐ€์šฉ์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉด์ ‘๊ด€๊ณผ ์ƒ์˜ ํ›„ ์ ์ ˆํ•œ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, CP๋‚˜ AP)


๊ตฌํ˜„์— ์‚ฌ์šฉ๋  ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๊ธฐ์ˆ ๋“ค

  • ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜
    • ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…˜์„ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๋…ธํŠธ ์ถ”๊ฐ€/์‚ญ์ œ์‹œ ๋ฐ์ดํ„ฐ ์ด๋™์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋”ฐ์ ธ๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•ˆ์ •ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทœ๋ชจ ํ™•์žฅ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„ ์šฉ๋Ÿ‰์— ๋งž๋Š” ๊ฐ€์ƒ ๋…ธ๋“œ๋กœ ์ˆ˜๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (5์žฅ. ์•ˆ์ •ํ•ด์‹œ ์ฐธ์กฐ)
  • ๋ฐ์ดํ„ฐ ๋‹ค์ค‘ํ™”
    • ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ์•ˆ์ •์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ N๊ฐœ์˜ ์„œ๋ฒ„์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋‹ค์ค‘ํ™”ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ€์ƒ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ ํƒํ•œ N๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ๋Œ€์‘๋  ์‹ค์ œ ๋ฌผ๋ฆฌ ์„œ๋ฒ„์˜ ๊ฐœ์ˆ˜๊ฐ€ N๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ฌผ๋ฆฌ ์„œ๋ฒ„ ์„ ํƒ ์ค‘๋ณต์„ ๋ง‰๊ณ , ๋ฐ์ดํ„ฐ ์‚ฌ๋ณธ์„ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ๋ณด๊ด€ํ•˜๋Š” ๋“ฑ ๋ณด์™„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ
    • ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋‹ค์ค‘ํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ์ ์ ˆํžˆ ๋™๊ธฐํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ •์กฑ์ˆ˜ ํ•ฉ์˜ ํ”„๋กœํ† ์ฝœ์„ ์“ฐ๋ฉด ์ฝ๊ธฐ/์“ฐ๊ธฐ ์—ฐ์‚ฐ ๋ชจ๋‘์— ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • N = ์‚ฌ๋ณธ ๊ฐœ์ˆ˜
      • W = ์“ฐ๊ธฐ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •์กฑ์ˆ˜. ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ์„ฑ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ ์–ด๋„ W๊ฐœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • R = ์ฝ๊ธฐ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ์ •์กฑ์ˆ˜. ์ฝ๊ธฐ ์—ฐ์‚ฐ์ด ์„ฑ๊ณตํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ ์–ด๋„ R๊ฐœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • W+R>N์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์„ ๋ณด์ฆํ•  ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ๊ฐ€ ์ตœ์†Œ ํ•˜๋‚˜๋Š” ๊ฒน์น  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
      • R=1, W=N: ๋น ๋ฅธ ์ฝ๊ธฐ ์—ฐ์‚ฐ์— ์ตœ์ ํ™”๋œ ์‹œ์Šคํ…œ
      • W=1, R=N: ๋น ๋ฅธ ์ฝ๊ธฐ ์—ฐ์‚ฐ์— ์ตœ์ ํ™”๋œ ์‹œ์Šคํ…œ
      • W+R>N: ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋จ
      • W+R<=N: ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Œ
  • ์ผ๊ด€์„ฑ ๋ชจ๋ธ
    • ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ, ์•ฝํ•œ ์ผ๊ด€์„ฑ, ์ตœ์ข… ์ผ๊ด€์„ฑ
    • ์ตœ์ข… ์ผ๊ด€์„ฑ์€ ์•ฝํ•œ ์ผ๊ด€์„ฑ์˜ ํ•œ ํ˜•ํƒœ๋กœ ๊ฐฑ์‹  ๊ฒฐ๊ณผ๊ฐ€ ๊ฒฐ๊ตญ์—๋Š” ๋ชจ๋“  ์‚ฌ๋ณธ์— ๋ฐ˜์˜๋˜๋Š” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ฒ„์ €๋‹
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์ค‘ํ™”ํ•˜๋ฉด ๊ฐ€์šฉ์„ฑ์€ ๋†’์•„์ง€์ง€๋งŒ ์‚ฌ๋ณธ ๊ฐ„ ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
    • ๋ฒ„์ €๋‹: ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ๋งˆ๋‹ค ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๊ฒƒ
    • ๋ฒกํ„ฐ ์‹œ๊ณ„: [์„œ๋ฒ„, ๋ฒ„์ „]์˜ ์ˆœ์„œ์Œ์„ ๋ฐ์ดํ„ฐ์— ๋งค๋‹จ ๊ฒƒ
      • ๋งŒ์•ฝ ๋‘ ๊ฐœ์˜ ์„œ๋ฒ„์— ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋๊ณ  ๊ทธ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
      • ๋ฒกํ„ฐ ์‹œ๊ณ„๋ฅผ ์ด์šฉํ•˜๋ฉด ์–ด๋–ค ๋ฒ„์ „์ด ์„ ํ–‰์ธ์ง€ ๋‹ค๋ฅธ ๋ฒ„์ „๊ณผ์˜ ์ถฉ๋Œ๊ฐ€๋Šฅ์„ฑ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ๋‹จ์ ์œผ๋กœ๋Š” ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ, [์„œ๋ฒ„, ๋ฒ„์ „]์˜ ์ˆœ์„œ์Œ์ด ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

large_scale_key_1.png

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

large_scale_key_2.png

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


์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

  • ์ค‘์žฌ์ž๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ํ”„๋ฝ์‹œ ์—ญํ• ์„ ํ•˜๋Š” ๋…ธ๋“œ
  • ๋…ธ๋“œ๋Š” ์•ˆ์ •ํ•ด์‹œ์˜ ํ•ด์‹œ ๋ง์— ๋ถ„ํฌ
  • ๋…ธ๋“œ๋Š” ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์€ ์™„์ „ํžˆ ๋ถ„์‚ฐ
  • ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ์ฑ…์ž„์„ ์ง€๋Š” ํ˜•ํƒœ

large_scale_key_3.png

์“ฐ๊ธฐ๊ฒฝ๋กœ

  • ์“ฐ๊ธฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ์— ๊ธฐ๋ก
  • ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ๊ฐ€ ์ž„๊ณ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋Š” ๋””์Šคํฌ์˜ SSTable(Sorted-String Table)์— ๊ธฐ๋ก
    • SSTable: <ํ‚ค, ๊ฐ’>์˜ ์ˆœ์„œ์Œ์„ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ…Œ์ด๋ธ”

large_scale_key_4.png

์ฝ๊ธฐ๊ฒฝ๋กœ

  • ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ๋””์Šคํฌ์˜ SSTable์—์„œ ๋ธ”๋ฃธ ํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ต๋‹ˆ๋‹ค.

large_scale_key_6.png

๋ธ”๋ฃธ ํ•„ํ„ฐ(Bloom filter)์˜ ์›๋ฆฌ
๋ธ”๋ฃธ ํ•„ํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํ•ด์‹œ ๊ฐ’์„ ๋งŒ๋“ค๊ณ  ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ ๊ฐ’๋“ค์„ ๋ชจ๋‘ 1๋กœ ๋ณ€๊ฒฝํ•˜๋ฏ€๋กœ์จ ๋น„ํŠธ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ฐ’์ด ์—†๋Š”์ง€ ํ˜น์€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋””์Šคํฌ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์•…ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์กฐํšŒํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ์ถ•์†Œ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.
๋ธ”๋ฃธ ํ•„ํ„ฐ ์›๋ฆฌ์˜ ์˜ˆ

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•ด์‹œ ํ•จ์ˆ˜ 1์€ โ€˜appleโ€™์„ 3, โ€˜bananaโ€™๋ฅผ 7, โ€˜orangeโ€™๋ฅผ 2๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜ 2๋Š” โ€˜appleโ€™์„ 4, โ€˜bananaโ€™๋ฅผ 2, โ€˜orangeโ€™๋ฅผ 6์œผ๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜ 3์€ โ€˜appleโ€™์„ 1, โ€˜bananaโ€™๋ฅผ 5, โ€˜orangeโ€™๋ฅผ 4๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋งคํ•‘๋œ ๊ฐ ๊ณผ์ผ์˜ ์—ฌ๋Ÿฌ ํ•ด์‹œ ๊ฐ’์— ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๋“ค์„ 1๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด, ๋น„ํŠธ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค.

    Index: 1 2 3 4 5 6 7 8
    Value: 1 1 1 1 0 1 1 0


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



7์žฅ. ๋ถ„์‚ฐ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ์œ ์ผ ID ์ƒ์„ฑ๊ธฐ ์„ค๊ณ„

ID๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ UUID, auto_increment๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ID๋ฅผ ์ƒ์„ฑํ–ˆ์—ˆ๋Š”๋ฐ ํŠน์ • ์กฐ๊ฑด์ด ์žˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ID๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •
์œ ์ผ ID ์ƒ์„ฑ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๊ฑธ ํ™•์ธํ•ด์•ผ ํ• ๊นŒ์š”?

  • ID์˜ ํŠน์„ฑ
  • ์ƒˆ๋กœ์šด ID ์ƒ์„ฑ์‹œ ์ฆ๊ฐ€
  • ๊ตฌ์„ฑ๋ฌธ์ž - ์ˆซ์ž์ธ์ง€ ๋ฌธ์ž์ธ์ง€ ํ˜ผํ•ฉ์ธ์ง€
  • ์‹œ์Šคํ…œ ๊ทœ๋ชจ (์ดˆ๋‹น 10,000 ID ์ƒ์„ฑ ํ•„์š”)

2๋‹จ๊ณ„ ๊ณ„๋žต์  ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ

  • ๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ ๋ณต์ œ (multi-master replication)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ auto-increment ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š”๋ฐ, ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์ˆ˜๋งŒํผ ID ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
      • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ฑธ์ณ ๊ทœ๋ชจ๋ฅผ ๋Š˜๋ฆฌ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
      • ID์˜ ์œ ์ผ์„ฑ์€ ๋ณด์žฅ๋˜๊ฒ ์ง€๋งŒ ๊ทธ ๊ฐ’์ด ์‹œ๊ฐ„ ํ๋ฆ„์— ๋งž์ถฐ ์ปค์ง€๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
      • ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ๋„ ์ž˜ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • UUID (Universally Unique Identifier)
    • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ 128bit ์ž๋ฆฌ ์ˆ˜
    • ์ค‘๋ณต UUID๊ฐ€ 1๊ฐœ ์ƒ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ดˆ๋‹น 10์–ต๊ฐœ์˜ UUID๋ฅผ 100๋…„ ๋™์•ˆ ๊ณ„์† ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    • ๋™๊ธฐํ™” ์ด์Šˆ๊ฐ€ ์—†๊ณ , ๊ทœ๋ชจ ํ™•์žฅ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค.
    • ๋Œ€์‹  ID๊ฐ€ 128๋น„ํŠธ๋กœ ๊ธธ๊ณ , ์‹œ๊ฐ„์ˆœ ์ •๋ ฌ์ด๋‚˜ ์ˆซ์ž๋งŒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ‹ฐ์ผ“ ์„œ๋ฒ„
    • ํ”Œ๋ฆฌ์ปค๋Š” ๋ถ„์‚ฐ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๊ธฐ ์œ„ํ•ด ์ด ๊ธฐ์ˆ ์„ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
    • auto-increment ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ์ค‘์•™ ์ง‘์ค‘ํ˜•์œผ๋กœ ์“ฐ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ํ‹ฐ์ผ“ ์„œ๋ฒ„๊ฐ€ SPOF(Single-Point-of-Failure)๊ฐ€ ๋œ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๋Œ€๋กœ ๋งŒ๋“ค๋ฉด ๋˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ์œ„ํ„ฐ ์Šค๋…ธํ”Œ๋ ˆ์ดํฌ ์ ‘๊ทผ๋ฒ•
    • ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ID ๊ตฌ์กฐ๋ฅผ ์—ฌ๋Ÿฌ ์ ˆ๋กœ ๋ถ„ํ•  (64๋น„ํŠธ ID๋ฅผ ๋ถ„ํ• )
      • ์‚ฌ์ธ ๋น„ํŠธ: ์‚ฌ์›์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ 1๋น„ํŠธ
      • ํƒ€์ž„์Šคํƒฌํ”„: ๊ธฐ์› ์‹œ๊ฐ ์ดํ›„๋กœ ๋ช‡ ๋ฐ€๋ฆฌ์ดˆ ๊ฒฝ๊ณผํ–ˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
      • ๋ฐ์ดํ„ฐ์„ผํ„ฐ ID
      • ์„œ๋ฒ„ ID
      • ์ผ๋ จ๋ฒˆํ˜ธ
  • ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ทœ๋ชจ ํ™•์žฅ์ด ๊ฐ€๋Šฅ

3๋‹จ๊ณ„ ์ƒ์„ธ ์„ค๊ณ„
2๋‹จ๊ณ„์—์„œ ์„ค๋ช…ํ•œ ์Šค๋…ธ์šฐํ”Œ๋ ˆ์ดํฌ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ƒ์„ธ์„ค๊ณ„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ID์™€ ์„œ๋ฒ„ ID๋Š” ์‹œ์Šคํ…œ ์‹œ์ž‘์‹œ ๊ฒฐ์ •๋˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

  • ํƒ€์ž„์Šคํƒฌํ”„
    • 41๋น„ํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ธ๋ฐ ์‹œ๊ฐ„์ˆœ ์ •๋ ฌ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ์ด ๋ถ€๋ถ„์„ 10์ง„์ˆ˜ํ™”ํ•˜๊ณ  ํŠธ์œ„ํ„ฐ ๊ธฐ์› ์‹œ๊ฐ(epoch)์„ ๋”ํ•˜๋ฉด ๋ฐ€๋ฆฌ์ดˆ ๊ฐ’์ด ๊ณ„์‚ฐ๋˜๊ณ  ์ด๋ฅผ UTC ์‹œ๊ฐ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • 41๋น„ํŠธ์ด๋ฏ€๋กœ ์ตœ๋Œ€๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋Œ€๋žต 69๋…„(219902325551 ๋ฐ€๋ฆฌ์ดˆ)์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ จ๋ฒˆํ˜ธ
    • 12๋น„ํŠธ์ด๋ฏ€๋กœ 4096๊ฐœ์˜ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์–ด๋–ค ์„œ๋ฒ„๊ฐ€ ๊ฐ™์€ ๋ฐ€๋ฆฌ์ดˆ ๋™์•ˆ ํ•˜๋‚˜ ์ด์ƒ์˜ ID๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒฝ์šฐ์—๋งŒ 0๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4๋‹จ๊ณ„ ๋งˆ๋ฌด๋ฆฌ
์ถ”๊ฐ€๋กœ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ์–ด๋–ค๊ฒŒ ์žˆ์„๊นŒ?

  • ์‹œ๊ณ„ ๋™๊ธฐํ™”
    • ID ์ƒ์„ฑ ์„œ๋ฒ„๋“ค์ด ์ „๋ถ€ ๊ฐ™์€ ์‹œ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ 
    • NTP(Network Time Protocol)์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ์ ˆ์˜ ๊ธธ์ด ์ตœ์ ํ™”
    • ๋™์‹œ์„ฑ์ด ๋‚ฎ๊ณ  ์ˆ˜๋ช…์ด ๊ธด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ จ๋ฒˆํ˜ธ ๊ธธ์ด๋ฅผ ์ค„์ด๊ณ  ํƒ€์ž„์Šคํƒฌํ”„ ์ ˆ์˜ ๊ธธ์ด๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ๊ฐ€์šฉ์„ฑ



8์žฅ. URL ๋‹จ์ถ•ํ‚ค ์„ค๊ณ„

1๋‹จ๊ณ„ ๋ฌธ์ œ ์ดํ•ด ๋ฐ ์„ค๊ณ„ ๋ฒ”์œ„ ํ™•์ •

  • URL ๋‹จ์ถ•ํ‚ค๋Š” ๊ธด URL์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ๋‹จ์ถ• URL์„ ์ œ๊ณตํ•˜๊ณ , ๋‹จ์ถ• URL๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ๋Š” ์›๋ž˜ URL๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋ž˜ํ”ฝ ๊ทœ๋ชจ
  • ๋‹จ์ถ• URL์˜ ๊ธธ์ด
  • ๋‹จ์ถ• URL์— ํฌํ•จ๋  ๋ฌธ์ž
  • ์‚ญ์ œ, ๊ฐฑ์‹  ์—ฌ๋ถ€

2๋‹จ๊ณ„ ๊ฐœ๋žต์  ์„ค๊ณ„์•ˆ ์ œ์‹œ ๋ฐ ๋™์˜ ๊ตฌํ•˜๊ธฐ

  • API ์—”๋“œํฌ์ธํŠธ
    • URL ๋‹จ์ถ•์šฉ ์—”๋“œํฌ์ธํŠธ, URL ๋””๋ฆฌ๋ ‰์…˜์šฉ ์—”๋“œํฌ์ธํŠธ
    • 301 Permanently Moved
      • URL์— ๋Œ€ํ•œ HTTP ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ์ฑ…์ž„์ด ์˜๊ตฌ์ ์œผ๋กœ Location ํ—ค๋”์— ๋ฐ˜ํ™˜๋œ URL๋กœ ์ด์ „๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์‘๋‹ต์„ ์บ์‹œํ•ด ์ถ”ํ›„ ์š”์ฒญ์ด ์˜ค๋ฉด ์›๋ž˜ URL๋กœ ๋ณด๋‚ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
      • ์„œ๋ฒ„ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ์— ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
    • 302 Found
      • ์ผ์‹œ์ ์œผ๋กœ Location ํ—ค๋”๊ฐ€ ์ง€์ •ํ•˜๋Š” URL์— ์˜ํ•ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‘๋‹ต์œผ๋กœ ํ•ญ์ƒ ๋‹จ์ถ• URL ์„œ๋ฒ„๋ฅผ ํ†ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • URL ๋‹จ์ถ•์— ์ ์ ˆํ•œ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

3๋‹จ๊ณ„ ์ƒ์„ธ ์„ค๊ณ„
๋ฉ”๋ชจ๋ฆฌ๋ณด๋‹ค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋‹จ์ถ• URL, ์›๋ž˜ URL ์ˆœ์„œ์Œ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ถ•์„ ์œ„ํ•ด์„œ๋Š” ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์›ํ•˜๋Š” ๋‹จ์ถ•๊ฐ’์˜ ๊ธธ์ด, ๋ฌธ์ž ์œ ํ˜• ๋“ฑ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฑ…์—์„œ๋Š” ํ•ด์‹œ ํ›„ ์ถฉ๋Œ ํ•ด์†Œ ์ „๋žต๊ณผ Base-62 ๋ณ€ํ™˜์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ด์‹œ ํ›„ ์ถฉ๋Œ ํ•ด์†Œ ์ „๋žต
    • ๋‹จ์ถ• URL ๊ธธ์ด๋ฅผ ๋” ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ํ•ด์‹œ ๊ฐ’์˜ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ๋Œํ•ด์†Œ๊นŒ์ง€ ์‚ฌ์ „์— ์ •ํ•œ ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•ด์„œ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ฐ˜๋ณต์ ์œผ๋กœ ์กฐํšŒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    • CRC32, MD5, SHA-1
  • base-62 ๋ณ€ํ™˜
    • 62์ง„๋ฒ•์„ ์“ฐ๋Š” ์ด์œ ๋Š” hashValue์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ 62๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , 62์ง„๋ฒ•์˜ ๋‚˜๋จธ์ง€์— ๋”ฐ๋ผ 62์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
    • ์ด ๊ฒฝ์šฐ ID ์œ ์ผ์„ฑ ๋ณด์žฅ๋œ ํ›„ ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ „๋žต์ด๋ผ ์ถฉ๋Œ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ€์‹  ๋‹ค์Œ ๋‹จ์ถ• URL์ด ๋ฌด์—‡์ธ์ง€ ์‰ฝ๊ฒŒ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

large_scale_url.png

4๋‹จ๊ณ„ ๋งˆ๋ฌด๋ฆฌ
์ถ”๊ฐ€๋กœ ๋…ผ์˜ํ•  ์‚ฌํ•ญ๋“ค

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



results matching ""

    No results matching ""