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

WIL3

๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐ‘์ž๊ธฐ ์™œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋๋ƒ๋ฉด,,,ํ˜„์žฌ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋•Œ, ํ‰๋ฌธ์— Salt ๊ฐ’์„ ๋ถ™์ธ ๋‹ค์Œ Hashing(ํ•ด์‹ฑ)์„ ํ•ด์„œ DB์— ์ €์žฅ ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.ํ‰๋ฌธ์ด ์•„๋‹ˆ๋ผ ํ•ด์‹œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” ํ˜น์—ฌ๋‚˜ ์•…์˜์ ์ธ ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ๋…ธ์ถœ๋˜์—ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์‹ค์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•Œ์•„๋‚ด์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์—ฌ๋‹ด์ด์ง€๋งŒ ์š”์ฆ˜์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ๋ฅผ ํ•˜๋ฉด, ๊ธฐ์กด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ pas*w*rd ์ด๋Ÿฐ ์‹์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฌด์กฐ๊ฑด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฒŒ ํ•œ๋‹ค.๊ทธ ์ด์œ ๊ฐ€ ํ•ด์‹œ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ญ์˜€๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ์—, ์•Œ๋ ค์ค„ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ ! Salt ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์˜ˆ์ „์— ๋ณด์•ˆ ์‹œ๊ฐ„์— ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”์ด๋ผ๋Š” ๊ณต๊ฒฉ๋ฒ•์„ ๋ฐฐ์› ์—ˆ๋Š”๋ฐ,์ด ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” ๊ณต๊ฒฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด.. 2024. 5. 1.
๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด, ๊น€์˜ํ•œ๋‹˜์˜ "๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹" ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค. ๊ทธ ์ค‘์— ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ฒ˜์Œ์ด๋ผ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ ์‹ค๋ฌด์— ๊ผญ ํ•„์š”ํ•œ HTTP ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค., [์‚ฌ์ง„] ๐Ÿ“ฃ ํ™•์ธํ•ด์ฃผ์„ธ์š”!๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ์Šคํ”„๋ง ์™„์ „ ์ •๋ณต ์‹œ๋ฆฌ์ฆˆ์˜ ์„ธ ๋ฒˆ์งธ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์šฐ์•„ํ•œํ˜•์ œ๋“ค ์ตœ์—ฐ์†Œ ๊ธฐ์ˆ  www.inflearn.com (PPL์•„๋‹˜...) ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ Stateless Protocol HTTP ํ”„๋กœํ† ์ฝœ์€ ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์„ ์ง€ํ–ฅํ•œ๋‹ค ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค ์žฅ์ : ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ์ด ๋†’๋‹ค(Scale Out) ๋‹จ์ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์†กํ•˜๋Š”.. 2024. 3. 8.
GraphQL๊ณผ N + 1 ๋ฌธ์ œ ์ฐพ์•„๋ณด๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ, ๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ„์˜ ์˜์กด๋„๋ฅผ ๋–จ์–ดํŠธ๋ฆฌ๊ณ ์ž GraphQL์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค GraphQL์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ก ํŠธ์ธก์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๊ฐ€๋Š” ํ˜•์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, RestAPI์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋–„๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ GraphQL์„ ์‚ฌ์šฉํ•˜๋ฉด Resolver๊ฐ€ ์—ฐ์‡„์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” N + 1 ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค๊ณ  ํ•ด์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ์œ„ํ•ด ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. N + 1 ๋ฌธ์ œ๋ž€? 1๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ N๊ฐœ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค N + 1 ๋ฒˆ์˜ ์ฟผ๋ฆฌ ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ ๋ธ”๋กœ๊ทธ์— 3๊ฐœ์˜ ๋Œ“๊ธ€์ด ์ž‘์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด๋•Œ, ๋ธ”๋กœ๊ทธ์™€ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ.. 2024. 2. 27.