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

์ „์ฒด ๊ธ€279

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] ์ฟ ํฐ ๋ฐœ๊ธ‰ํ•˜๋‹ค ํ„ฐ์ง„ Deadlock, ๊ทธ๋ฆฌ๊ณ  Redisson์œผ๋กœ ํ•ด๊ฒฐํ•œ ์ด์•ผ๊ธฐ ๐Ÿ’ฃ ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ ์ค‘ Deadlock ๋ฐœ์ƒ! ๊ทธ๋ฆฌ๊ณ  Redisson ๋ฝ๊นŒ์ง€ ๋„์ž…ํ•œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์„ ์ฐฉ์ˆœ ํ• ์ธ ์ฟ ํฐ ๋ฐœ๊ธ‰ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉด์„œ ๊ฒช์—ˆ๋˜ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค!Deadlock์ด ์‹ค์ œ๋กœ ๋ฐœ์ƒํ–ˆ๋˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ์™€, ๋ฝ ์ „๋žต์„ ๊ณ ๋ฏผํ•˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ Redisson ๋ฝ์„ ๋„์ž…ํ•˜๊ธฐ๊นŒ์ง€์˜ ์‹ค์ œ ๊ฒฝํ—˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ’€์–ด๋‚ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ธฐ๋ก์ด๋‹ค! ๐Ÿ›ซ ๋ฌธ์ œ ์ƒํ™ฉ: Deadlock ๋ฐœ์ƒ ์‹คํ—˜๊ธฐ๋ณธ์ ์ธ ์ฟ ํฐ ๋ฐœ๊ธ‰ API๋งŒ ์ž‘์„ฑํ•œ ์ƒํƒœ์—์„œ, ๋‹ค์ˆ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐœ๊ธ‰์„ ์š”์ฒญํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ ๊ถ๊ธˆํ–ˆ๋‹ค.๊ทธ๋ž˜์„œ JMeter๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ดค๋‹ค.ํ…Œ์ŠคํŠธ ์กฐ๊ฑดํ•ญ๋ชฉ๊ฐ’ํ…Œ์ŠคํŠธ ๋„๊ตฌApache JMeter์Šค๋ ˆ๋“œ ์ˆ˜100๋ช…๋ฃจํ”„ ํšŸ์ˆ˜1ํšŒ (1๋ช…๋‹น 1ํšŒ ๋ฐœ๊ธ‰ ์‹œ๋„)์ฟ ํฐ ์ˆ˜๋Ÿ‰10๊ฐœ๋Œ€์ƒ API/api/co.. 2025. 5. 13.
[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] Spring Boot JWT ์ธ์ฆ ํ๋ฆ„ ๋งŒ๋“ค๊ณ  200 OK๋งŒ ๋‚˜์˜ค๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๐Ÿ”ฅ JWT ์ธ์ฆ ๊ตฌํ˜„ & ํ•„ํ„ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ํ”„๋กœ์ ํŠธ์—์„œ JWT ์ธ์ฆ์„ ์ฒ˜์Œ์œผ๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ดค๋‹ค.ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ๊นŒ์ง€๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ–ˆ์ง€๋งŒ.. ๋ฌธ์ œ๋Š” ๊ทธ ์ดํ›„์˜€๋‹ค.Controller๋กœ ์š”์ฒญ์ด ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ , 200 OK๋งŒ ๋‚˜์˜ค๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•ด์„œ ํ•œ์ฐธ์„ ํ—ค๋งค๋‹ค๊ฐ€, ๊ฒฐ๊ตญ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๋ฉด์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค. โœ๏ธ JwtUtil ํด๋ž˜์ŠคJWT๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ , ๊ฒ€์ฆํ•˜๊ณ , Claim ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.@Slf4j(topic = "JwtUtil")@Component@RequiredArgsConstructorpublic class JwtUtil { private static final String BEARER_PREFIX = "Bearer "; privat.. 2025. 5. 13.
[TIL] ์˜ค๋Š˜์€ Docker ๊ณต๋ถ€ ์‹œ์ž‘ํ•œ ๋‚ ! ๐ŸŒž ์˜ค๋Š˜์€ ์–ด๋–ค ํ•˜๋ฃจ์˜€์ง€..์˜ค์ „์—๋Š” ๋ฌผ๋ฆฌ์น˜๋ฃŒ ๋ฐ›๊ณ  ์™€์„œ ์ €๋ฒˆ ์ฃผ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ KPT ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.์˜ค๋žœ๋งŒ์— ์“ฐ๋Š” KPT ํšŒ๊ณ ๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ ์ƒ๊ฐํ•˜๋ฉด์„œ ์ž‘์„ฑํ•˜๋А๋ผ ์‹œ๊ฐ„์„ ๊ฝค ๋งŽ์ด ์žก์•„๋จน์—ˆ๋‹ค.์˜คํ›„์—๋Š” ๋“œ๋””์–ด Docker ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค!! ๋งŒ์šฐ์ ˆ์— ๊ตฌ๋งคํ•ด ๋†จ๋˜ Docker ๊ฐ•์˜๋ฅผ ์ด์ œ์•ผ ๋“ฃ๋‹ค๋‹ˆ...๊ฐ•์‚ฌ๋‹˜์ด ๊ท€์— ์™์™ ๋“ค์–ด์˜ค๋„๋ก ์„ค๋ช…์„ ์ž˜ํ•ด์ฃผ์…”์„œ ์ดํ•ด๊ฐ€ ๊ธˆ๋ฐฉ๊ธˆ๋ฐฉ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ ์–ด๋–ป๊ฒŒ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ธ์ง€ ์•Œ๋ ค์ฃผ์…”์„œ ์•ž์œผ๋กœ์˜ ๊ณต๋ถ€๋Š” ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰ํ•ด๋ณผ๊นŒ ํ•œ๋‹ค!๋ฌธ์„œํ™”๋กœ ๋‚จ๊ฒจ๋†“๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค๋Š” ๊ฒƒ์„ ์˜ค๋Š˜ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋А๊ผˆ๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ํ–ˆ๋˜ ๋Œ€๋กœ ๋ฌธ์„œํ™”๋ฅผ ์—ด์‹ฌํžˆ ํ•ด๋†“๊ณ  ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌ๋„ ์ž˜ํ•ด๋‘˜ ์ƒ๊ฐ์ด๋‹ค.์ด๋ฒˆ ์ฃผ๋Š” ํ•™์Šต์— ์ง‘์ค‘ํ•˜๋Š” ๊ธฐ๊ฐ„์ด๋‹ˆ๊นŒ ์ตœ๋Œ€ํ•œ ๊ฐ•์˜ ๋น ๋ฅด๊ฒŒ ๋“ฃ๊ณ  Docker ๋งˆ์Šคํ„ฐ ํ•œ ๋’ค์— ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋„ ๊ณต๋ถ€.. 2025. 5. 12.
[Docker] ๋„์ปค(Docker)๊ฐ€ ๋ญ”๋ฐ ์ด๋ ‡๊ฒŒ ๋งŽ์ด ์จ? ํ˜„์—…์—์„œ Docker๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ?๐Ÿ‘‰ ์ด์‹์„ฑ: ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์‰ฝ๊ฒŒ ์˜ฎ๊ฒจ์„œ ์„ค์น˜ ๋ฐ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ Docker์˜ ์žฅ์ ๐Ÿ‘‰ ๋งค๋ฒˆ ๊ท€์ฐฎ์€ ์„ค์น˜ ๊ณผ์ •์„ ์ผ์ผ์ด ๊ฑฐ์น˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค!๐Ÿ‘‰ ํ•ญ์ƒ ์ผ๊ด€๋˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฒ„์ „, ํ™˜๊ฒฝ ์„ค์ •, ์˜ต์…˜, ์šด์˜ ์ฒด์ œ ๋“ฑ)๐Ÿ‘‰ ๊ฐ ํ”„๋กœ๊ทธ๋žจ์ด ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ ๊ฐ„์— ์„œ๋กœ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. IP์˜ ๊ฐœ๋…๐Ÿ’ก ํ•œ ์ค„ ์š”์•ฝ: ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ์˜ ํŠน์ • ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์ด IP ์ฃผ์†Œ์ด๋‹ค.13.250.15.132 Port์˜ ๊ฐœ๋…๐Ÿ’ก ํ•œ์ค„ ์š”์•ฝ: ํ•œ ์ปดํ“จํ„ฐ ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ์ด๋‹ค.์•„๋ž˜์™€ ๊ฐ™์€ ๊ฐ’์—์„œ IP ๋’ค์— ์˜ค๋Š” ์ˆซ์ž๊ฐ€ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.13.250.1.. 2025. 5. 12.
[STUDY] ์™œ ๋‚˜๋Š” ๊ณต๋ถ€ํ•ด๋„ ์•ˆ ๋Š˜๊นŒ? ๐Ÿ“š ๊ฐ•์˜ ๋“ฃ๋Š” ๋ฐฉ๋ฒ• ์ •๋ฆฌ ๐Ÿง  ์–ด๋ ต๊ฒŒ ๊ณต๋ถ€ํ•ด์•ผ ํ•œ๋‹ค๋‹จ์ˆœํžˆ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ๋งŒ ํ•ด์„œ๋Š” ๋ถ€์กฑํ•˜๋‹ค.๐Ÿ‘‰ ๋‚ด์šฉ ๋„์‹ํ™”ํ•˜๊ธฐ (๊ทธ๋ฆผ์ด๋‚˜ ํ‘œ๋กœ ์ •๋ฆฌ)๐Ÿ‘‰ ๋‚˜๋งŒ์˜ ์–ธ์–ด๋กœ ์„ค๋ช…ํ•˜๊ธฐ (๋‚จ์—๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ)๐Ÿ‘‰ ์š”์•ฝํ•˜๊ธฐ ๊ฐ€์žฅ ์ข‹์€ ๊ณต๋ถ€ ๋ฐฉ๋ฒ• = ๋ธ”๋กœ๊ทธ ์ž‘์„ฑํ•˜๊ธฐ ํ•˜์ง€๋งŒ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๋ณต๋ถ™ ํ•ด์„œ ์˜ฌ๋ฆฌ๊ธฐ๋งŒ ํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์—†๋‹ค."๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐฉ์‹"์œผ๋กœ ๋‹ค์‹œ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ์š”์•ฝํ•ด์•ผ ์ง„์งœ ๊ณต๋ถ€๊ฐ€ ๋œ๋‹ค.์™„์„ฑ๋„๋ณด๋‹ค๋Š” "๋‚˜์ค‘์— ๊ธฐ๋ก๋งŒ ๋ณด๊ณ ๋„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ" ์ž‘์„ฑํ•˜๋Š” ๋งˆ์ธ๋“œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ๐ŸŽฏ ํŒŒ๋ ˆํ†  ๋ฒ•์น™์„ ์ ์šฉํ•ด์„œ ๊ณต๋ถ€ํ•˜์ž์ž์ฃผ ์“ฐ์ด๋Š” 20%๋งŒ ์ œ๋Œ€๋กœ ์ตํžˆ๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค.๋‚˜๋จธ์ง€ 80%๋Š” ํ•„์š”ํ•  ๋•Œ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 100% ๋‹ค ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ ค๊ณ  ํ•˜์ง€ ๋ง์ž! ์‹ค์ „์—์„œ๋Š” 20%๋งŒ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. ๐Ÿ› ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ์„ .. 2025. 5. 12.
[KPTํšŒ๊ณ ] ์ด์ปค๋จธ์Šค ํ”„๋กœ์ ํŠธ ์ด์ปค๋จธ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฐœ์ธ KPT ํšŒ๊ณ  Keep: ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋‘๋ ค์›€์„ ๋А๋ผ์ง€ ์•Š์€ ์ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ฒ˜์Œ์œผ๋กœ ์ธ์ฆ/์ธ๊ฐ€ ๋ถ€๋ถ„์„ ๋งก์•„ JWT์™€ Spring Security๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋ถ„์•ผ๋ผ์„œ ๋‘๋ ค์›€๋„ ์žˆ์—ˆ์ง€๋งŒ, ๋„์ „ํ•˜๋Š” ์˜์ง€๊ฐ€ ๋” ๊ฐ•ํ•ด์„œ ๋งก์€ ์—ญํ• ์„ ๋๊นŒ์ง€ ํ•ด๊ฒฐํ•ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๋™์‹œ์„ฑ ์ œ์–ด๋„ ์ฒ˜์Œ ๊ฒฝํ—˜ํ•˜๋Š” ์˜์—ญ์ด์—ˆ์ง€๋งŒ, ๊ฐœ๋…๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ฆฌํ•˜๋ฉฐ ํ•™์Šต์„ ์ง„ํ–‰ํ–ˆ๊ณ  ๋ฌด์‚ฌํžˆ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.์›ํ™œํ•œ ์˜์‚ฌ์†Œํ†ตํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ํŒ€์›์ด ๊ตฌํ˜„ํ•œ ๋ถ€๋ถ„์ด ์ดํ•ด๋˜์ง€ ์•Š์„ ๋•Œ๋Š” ๋ฐ”๋กœ ์ฐพ์•„๊ฐ€์„œ ์งˆ๋ฌธํ•˜๊ณ  ์ดํ•ดํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์„ ์•„๋ผ์ง€ ์•Š์•˜๋‹ค.์ ๊ทน์ ์œผ๋กœ ์˜๊ฒฌ์„ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉฐ, ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ๊ณ ๋ฏผํ•˜๊ณ  ํ˜‘๋ ฅํ–ˆ๋‹ค.๊ผผ๊ผผํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ.. 2025. 5. 12.