๋ชฉ๋ก์ „์ฒด ๊ธ€ (123)

DevLog ๐Ÿ˜ถ

[Spring] ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋กœ์ง์˜ ์ผ๋ถ€๋ฅผ stubbing ํ•˜๊ธฐ

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด, ์‹ค์ œ ๋นˆ ์ค‘์— ์ผ๋ถ€๋งŒ stubbing์„ ํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ์ด ์ƒ๊ธด๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ์™ธ๋ถ€ API๋ฅผ ํ†ต์‹ ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ…Œ์ŠคํŠธ์—์„œ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด๋ฐ, ํ•ด๋‹น ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์šฐ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ณดํ†ต Spring Context์—์„œ๋Š” ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋นˆ์„ ๊ทธ๋Œ€๋กœ ๋“ฑ๋กํ•˜๊ฒŒ ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ช‡ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ์กฐ์น˜๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด์ž.  โ˜๏ธŽ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค - ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•˜๊ฒŒ ๋˜๋ฉด, ์™ธ๋ถ€ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์žฌ๊ณ ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.  - ๋งŒ์•ฝ ์žฌ๊ณ ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์™ธ๋ถ€ API๋Š” ‘SUCCESS’๋ผ๋Š” ์‘๋‹ต์„, ์žฌ๊ณ ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ‘FA..

[MySQL] Replication์„ ํ™œ์šฉํ•˜์—ฌ Master-Slave DB ๋ถ„๋ฆฌํ•˜๊ธฐ (1)

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ํšŒ์‚ฌ ๋“ค์–ด๊ฐ€๊ณ  ๋ธ”๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋œธํ•ด์ง„ ๊ฒƒ ๊ฐ™์•„์„œ, ์ด์ „์— ์“ฐ๋ ค๋‹ค๊ฐ€ ๋ชป ์“ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค ๐Ÿฅน (๋ฌดํ•œ์˜ ์ž„์‹œ ์ €์žฅ...) ์‚ฌ๋‚ด์—์„œ Replication์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฑด ์•Œ๊ณ  ์žˆ๋Š”๋ฐ, ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€๋Š” ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ MySQL์„ ํ™œ์šฉํ•˜์—ฌ Replication์ด ์–ด๋–ค ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ตฌ์ถ•ํ•ด๋ณด์•˜๋‹ค. ๊ตฌ์ฒด์ ์ธ ๋ถ€๋ถ„์€ ๋” ๊ณต๋ถ€ํ•˜๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, ํ•™์Šต ์šฉ๋„๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ธ€!  ๐ŸŒฑ ๋ณต์ œ๋ž€ ๋ฌด์—‡์ผ๊นŒ?๋ณต์ œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ master ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ slave ๋…ธ๋“œ์—๋„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, MySQL์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๋™๊ธฐ ๋ณต์ œ ๋ฐฉ์‹์„ ํ™œ์šฉํ•˜์—ฌ ๋‘˜ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋งž์ถ”๊ณ  ์žˆ๋‹ค.์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๋น„๋™๊ธฐ ๋ณต์ œ ..

[Intellij] ์•ˆ์ „ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง ์ง„ํ–‰ํ•˜๊ธฐ - Intellij๋ฅผ ํ™œ์šฉํ•œ ์ ์ง„์  ๋ฆฌํŒฉํ„ฐ๋ง

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ๋‚˜๋Š” ํ‰์†Œ์— ๋งˆ์šฐ์Šค๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ๋งฅ๋ถ ํ„ฐ์น˜ํŒจ๋“œ๋ฅผ ์ •๋ง ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด์—ˆ์–ด์„œ ๊ฐœ๋ฐœํ•  ๋•Œ ๋‹จ์ถ•ํ‚ค๋ฅผ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŽธ์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์ž๋™์œผ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ์†๋„ ์ฐจ์ด๊ฐ€ ๋‚ฌ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์— ๋‹จ์ถ•ํ‚ค๋„ ๊ณต๋ถ€ํ• ๊ฒธ, ๋ฆฌํŒฉํ„ฐ๋ง ์‹œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด Intellij ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์Šคํ„ฐ๋”” ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. (๊ฐ“๋‚˜๋‹ˆ๊ฐœ๋ฐœ์ž๋‹˜ ๋•๋ถ„์— ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค ใ…Ž_ใ…Ž) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์‚ฌ์šฉ๋œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋Š” ๋ฐฑ๋ช…์„ ๋‹˜์˜ ๊นƒํ—ˆ๋ธŒ๋ฅผ ๊ฐ€๋ฉด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‚˜๋Š” ์‚ฌ๋‚ด์—์„œ ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค ๋ณด๋‹ˆ๊นŒ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ฝ”ํ‹€๋ฆฐ + Kotest๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์—ฐ์Šต์„ ํ•ด๋ณด์•˜๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ–ˆ๋Š”์ง€๋Š” ์•„๋ž˜์˜ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹๋ณ„๋กœ ๋‚˜ํƒ€๋‚ด์—ˆ๋‹ค. GitHub - Cl8D/kotlin-exp..

[๊ฐ์ฒด์ง€ํ–ฅ์˜์‚ฌ์‹ค๊ณผ์˜คํ•ด] 06 - ๊ฐ์ฒด ์ง€๋„

โœ”๏ธ ๊ฐ์ฒด ์ง€๋„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ฐ€์žฅ ํฐ ์ˆ™์ œ๋Š” '๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ์–ผ๋งˆ๋‚˜ ๋” ์ž˜ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?' ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž. ๊ณ ์–‘์ด ์Šค๋‚ต๋ฐ”์— ์ƒˆ๋กœ์šด ์‹ ์ž… ์…ฐํ”„๋ƒฅ์ด ๋“ค์–ด์™”๋‹ค. ์‹ ์ž… ์…ฐํ”„๋ƒฅ์€ ์•„์ง ๋ฉ”๋‰ด ์ˆ™์ง€์— ๋ฏธ์ˆ™ํ•ด์„œ ๋ ˆ์‹œํ”ผ๋ฅผ ๋‹ค ์™ธ์šฐ์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋•Œ ์†๋‹˜๋ƒฅ์ด ์•Œ๋ฐ”๋ƒฅ์—๊ฒŒ ๋”ธ๊ธฐ๋ผ๋–ผ๋ฅผ ์ฃผ๋ฌธํ–ˆ๊ณ , ์•Œ๋ฐ”๋ƒฅ์€ ์‹ ์ž… ์…ฐํ”„๋ƒฅ์—๊ฒŒ ๋”ธ๊ธฐ๋ผ๋–ผ๋ฅผ ๋งŒ๋“ค๋ผ๊ณ  ์ง€์‹œํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ ์ž… ์…ฐํ”„๋ƒฅ์€ ๋”ธ๊ธฐ๋ผ๋–ผ ๋ ˆ์‹œํ”ผ๋ฅผ ๋ชฐ๋ผ์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ ์ค‘์ธ ์ƒํ™ฉ์ด๋ผ๋ฉด, ์–ด๋–ค ํ–‰์œ„๋ฅผ ํ•  ์ˆ˜ ์žˆ์„๊นŒ? 1. ์ˆ˜์„ ์…ฐํ”„๋ƒฅ์—๊ฒŒ ๋”ธ๊ธฐ๋ผ๋–ผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ๋ฌผ์–ด๋ณด๊ธฐ 2. ๋ ˆ์‹œํ”ผ ๋ถ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋”ธ๊ธฐ๋ผ๋–ผ ๋งŒ๋“ค๊ธฐ ๋จผ์ €, ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ, ๋งŒ์•ฝ ๋”ธ๊ธฐ๋ผ๋–ผ์˜ ๋ ˆ์‹œํ”ผ๋ฅผ ์–ป์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๋ณ€ํ™”ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€์‘ํ•  ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ ์†๋‹˜์ด ์ถ”๊ฐ€์ ์œผ๋กœ ‘์—‡, ๊ทผ๋ฐ ๋”ธ๊ธฐ๋ผ๋–ผ..

[๊ฐ์ฒด์ง€ํ–ฅ์˜์‚ฌ์‹ค๊ณผ์˜คํ•ด] 05 - ์ฑ…์ž„๊ณผ ๋ฉ”์‹œ์ง€

์˜›๋‚ ์— ์ฑ… ์ฝ์œผ๋ฉด์„œ ์ž‘์„ฑํ–ˆ๋˜ ๊ฑด๋ฐ ์˜ค๋žœ๋งŒ์— ๊ธ€ ์˜ฌ๋ฆด ๊ฒธ... ์‹œ๋ฆฌ์ฆˆ ๋งˆ๋ฌด๋ฆฌ๋Š” ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์˜ฌ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค :D โœ”๏ธ ์ž์œจ์ ์œผ๋กœ ํ–‰๋™ํ•˜๋Š” ๊ฐ์ฒด ์•ž์„  ์ฑ•ํ„ฐ์—์„œ ๋Š˜ ๊ฐ•์กฐํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ, ๊ฐ์ฒด๋Š” ์ž์œจ์ ์œผ๋กœ ํ–‰๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋•Œ, ๊ฐ์ฒด๊ฐ€ ํ–‰๋™ํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š”, ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ์ˆ˜์‹ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ํ–‰๋™์„ ‘์ฑ…์ž„’์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ž์œจ์ ์ธ ๊ฐ์ฒด๋ž€ ์Šค์Šค๋กœ์˜ ์˜์ง€์™€ ํŒ๋‹จ์— ๋”ฐ๋ผ์„œ ๊ฐ์ž ๋งก์€ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ์ฒด๊ฐ€ ์ž์‹ ์— ์˜์ง€์— ๋”ฐ๋ผ์„œ ์ฑ…์ž„์„ ์ž์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒŒ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š” ๊ฑธ๊นŒ? ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๊ณ ์–‘์ด ์Šค๋‚ต๋ฐ” ์˜ˆ์ œ๋ฅผ ๊บผ๋‚ด๋ณด์ž. ๊ณ ์–‘์ด ์Šค๋‚ต๋ฐ”์˜ ์ธ๊ธฐ๊ฐ€ ํญ๋ฐœํ•˜๋ฉด์„œ ์•„์นจ๋ถ€ํ„ฐ ๋งŽ์€ ์Œ๋ฃŒ ์ œ์กฐ ์š”์ฒญ์ด ๋“ค์–ด์™”๋‹ค. ์ด๋•Œ ์•Œ๋ฐ”๋ƒฅ์— ์…ฐํ”„๋ƒฅ์—๊ฒŒ ‘..

[JPA] @Embedded ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ , ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ธฐ

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

๊ฐœ๋ฐœ์ผ์ง€ 2023. 12. 16. 10:00
[Redis] Redis๋Š” ์–ธ์ œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ? 1ํŽธ - ๋ถ„์‚ฐ๋ฝ ๊ตฌํ˜„ํ•˜๊ธฐ (2)

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ ˆ๋””์Šค๋ฅผ ํ™œ์šฉํ•ด ๋ถ„์‚ฐ๋ฝ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์‚ดํŽด๋ณด์•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์กฐ๊ธˆ ๋” ์ƒ‰๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ ˆ๋””์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ๋ฝ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. โœ” Case 4 - Lua Script ํ™œ์šฉํ•˜๊ธฐ Redis 2.6 ๋ฒ„์ „์—์„œ ๋ฃจ์•„ ์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ, ๋ ˆ๋””์Šค ์„œ๋ฒ„์—์„œ ๋ฃจ์•„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ ˆ๋””์Šค ๋‚ด๋ถ€์—์„œ๋Š” EVAL (ํ˜น์€ EVALSHA)์ด๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. EVAL script numkeys [key [key ...]] [arg [arg ...]] ๋งŒ์•ฝ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ธธ์–ด์ง€๊ฒŒ ๋œ๋‹ค๋ฉด ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด๋ฅผ EVAL๋กœ ์ „์†กํ•˜๊ธฐ์—๋Š” ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ์˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ ˆ๋””์Šค์—์„œ๋Š” SCRIPT LOAD ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ..

๊ฐœ๋ฐœ์ผ์ง€ 2023. 10. 17. 09:24
[Redis] Redis๋Š” ์–ธ์ œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ? 1ํŽธ - ๋ถ„์‚ฐ๋ฝ ๊ตฌํ˜„ํ•˜๊ธฐ (1)

๐ŸŒฑ ๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์กฐ๊ธˆ ์˜ค๋ž˜๋˜๊ธด ํ–ˆ์ง€๋งŒ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ๋„ค์ž„๋“œ๋ฝ์„ ํ†ตํ•œ ๋ถ„์‚ฐ๋ฝ ๊ตฌํ˜„์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŒ…์—์„œ ๋ ˆ๋””์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค๊ณ  ๋งํ–ˆ์—ˆ๋Š”๋ฐ, ๊ณ„์† ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์ด๋ฒˆ์— ๋ ˆ๋””์Šค ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„์„ ์ง„ํ–‰ํ•ด๋ณด์•˜๋‹ค. ๋ถ„์‚ฐ๋ฝ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ ˆ๋””์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ”๋กœ ๋ถ„์‚ฐ๋ฝ์„ ๊ตฌํ˜„ํ•ด๋ณด์ž. ๋˜ํ•œ, ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ๋Š” Jmeter๋ฅผ ํ™œ์šฉํ•˜์˜€์ง€๋งŒ, ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” E2E ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ๊ตฌํ˜„์„ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ๐ŸŒฑ ๊ตฌํ˜„ ์ƒํ™ฉ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž”์•ก์„ ์˜๋ฏธํ•˜๋Š” 'Balance'๋ผ๋Š” ๊ฐ’์—, 2๊ฐœ์˜ ์š”์ฒญ์ด ๋™์‹œ์— ๋“ค์–ด์™”์„ ๋•Œ ๋ ˆ๋””์Šค๋ฅผ ํ†ตํ•œ ๋ถ„์‚ฐ๋ฝ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ œ์–ดํ•ด๋ณด์ž. ์œ„์˜ ๊ฒฐ๊ณผ์—์„œ ์ตœ์•…์˜ ์ƒํ™ฉ์ด๋ผ๋ฉด Request 1, 2๋ฒˆ ๋ชจ๋‘ 80์ด๋ผ๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ž”์•ก์ด ๊ฐฑ์‹ ๋˜์ง€ ์•Š์„..

๊ฐœ๋ฐœ์ผ์ง€ 2023. 10. 17. 09:23
[QueryDSL] QueryDSL ์‚ฌ์šฉ ์‹œ NPE๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๊ฒฐํ•˜๊ธฐ

๐ŸŒฑ ๋ฌธ์ œ ์ƒํ™ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ผ์ด ๋งŽ์•„ QueryDSL์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ์— ์ƒ‰๋‹ค๋ฅธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. java.lang.NullPointerException: Cannot read field "id" because "co.kirikiri.domain.goalroom.QGoalRoomMember.goalRoomMember.goalRoom.roadmapContent.roadmap" is null NPE๋ฅผ ๋ณธ ๊ฑด ์˜ค๋žœ๋งŒ์ด์–ด์„œ ์กฐ๊ธˆ ์‚ฝ์งˆ์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๐ŸŒฑ ๋„๋ฉ”์ธ ๊ตฌ์กฐ ์ง€๋‚œ ํฌ์ŠคํŒ…๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ๊ตฌ์กฐ๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ๋ฐ, ์œ„ ๋ฌธ์ œ ์ƒํ™ฉ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋„๋ฉ”์ธ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํ•˜๋‚˜์˜ ๋กœ๋“œ๋งต ๋ณธ๋ฌธ(RoadmapContent) ์ •๋ณด์— ๋Œ€ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ..